मैं लिनक्स वर्चुअल सर्वर (एलवीएस) में कुछ कार्यक्षमता जोड़ने के लिए लिनक्स कर्नेल को संशोधित कर रहा हूं।निर्यात किए गए प्रतीकों का वैकल्पिक रूप से केवल तभी उपयोग करें जब वे एक विस्थापित लिनक्स कर्नेल मॉड्यूल में मौजूद हों?
मैंने लोड-बैलेंसिंग के दौरान उपयोग किए जाने वाले कुछ कार्यों के साथ एक मॉड्यूल विकसित किया (जिसे मैंने net/netfilter/ipvs/ip_vs_utils.c
कहा)। यहां सभी कार्यों को EXPORT_SYMBOL()
का उपयोग करके निर्यात किया जाता है।
यह मॉड्यूल, तार्किक रूप से हर समय लोड नहीं होता है। मेरा इरादा उपयोगकर्ता को यह तय करने की अनुमति देना है कि क्या वह इस अतिरिक्त कार्यक्षमता का उपयोग करना चाहता है या नहीं (मॉड्यूल लोड करना या उतारना)।
मेरा प्रश्न यह है कि मैं इन कार्यों को कैसे लागू कर सकता हूं (मौजूदा मॉड्यूल चल रहा है या नहीं) मौजूदा (और निश्चित रूप से संशोधित) मॉड्यूल (net/netfilter/ipvs/ip_vs_core.c
) से। कुछ इस तरह:
if(ip_vs_utils_IsLoaded)
{
function1(arg1, arg2, arg3); // being function1 defined on ip_vs_utils.c
}
लाइ का जवाब अगर आपके 'अगर (ip_vs_utils काफी अच्छा है) 'कोड कर्नेल में हर समय होने का इरादा है; लेकिन यदि वह कोड स्वयं किसी अन्य लोड करने योग्य मॉड्यूल में स्थित है, तो शायद सरल मॉड्यूल निर्भरता बेहतर दृष्टिकोण है। पूर्ण विवरण के लिए 'depmod (8)' देखें। – sarnold