"rmmod" करने में असमर्थ मैं कर्नेल और उपयोगकर्ता स्पेस कोड दोनों शामिल एक बड़े एम्बेडेड सॉफ़्टवेयर (एआरएम प्रोसेसर, एम्बेडेड लिनक्स 2.6.31, व्यस्त बॉक्स) के साथ काम कर रहा हूं। एक कर्नेल मॉड्यूल सामान्य रूप से पहले लोड होता है, और मॉड्यूल के साथ नेटलिंक सॉकेट स्थापित करने वाला डिमन।मॉड्यूल
यहां मुद्दा यह है कि डेमॉन की हत्या के बाद, मैं अब स्मृति से मॉड्यूल अनलोड करने के लिए कर सकती हूं:
% rmmod _module.ko
% rmmod: _module.ko: Resource temporarily unavailable
विश्लेषण कि त्रुटि से पता चला है (वापसी मान -11
EAGAIN
है, यानी?) try_stop_module()
द्वारा kernel/module.c
में परिभाषा syscall delete_module()
परिभाषा में वापस आ गया है। फंक्शन try_stop_module() बदले में stop_machine() कॉल करता है और यह वह जगह है जहां मैंने अटक गया है,
मुझे यकीन नहीं है कि वास्तव में क्या हो रहा है। मुझे लगता है कि मूल कारण डिमन में कहीं है जो मॉड्यूल से कनेक्शन खोलता है और स्पष्ट रूप से कुछ और बाहर निकलने पर सही ढंग से बंद/साफ़ नहीं होता है (जाहिर है कुछ संदर्भ/ताले जारी नहीं किए जाते हैं?)
क्या किसी के पास है किसी भी विचार को और क्या देखना है और जांच?
बस एक बेवकूफ विचार ... rmmod -f ... अनलोड को मजबूर करना? टिप्पणियों के लिए –