2013-09-04 11 views
7

मैं एक प्रो एंट्री बनाने की कोशिश कर रहा हूं। मेरे init_module समारोहdmesg प्रिंटक स्टेटमेंट नहीं दिखा रहा है

int init_module() 
{ 
printk(KERN_INFO "proc2:Module Loaded\n"); 
proc_entry=proc_create_data(proc_name,0644,NULL,&fops,NULL); 
if(proc_entry==NULL) 
{ 
    printk(KERN_INFO "proc2:Error registering proc entry"); 
} 
else 
{ 
    printk(KERN_INFO "proc2:Proc Entry Created"); 
} 
return 0; 
} 

निम्नलिखित नीचे के रूप में है सफाई विधि कार्यक्रम के

void cleanup_module() 
{ 
printk(KERN_INFO "proc2:module unloaded"); 
remove_proc_entry(proc_name,proc_entry); 
} 

बाकी चर परिभाषा और कॉलबैक कार्यों में शामिल हैं है।

जब मैं इस प्रोग्राम को संकलित करता हूं तो यह अच्छी तरह से संकलित होता है। जब मैं insmod का उपयोग करता हूं तो यह मुझे तुरंत उत्तर नहीं देता है। lsmod मेरे मॉड्यूल और शो द्वारा सूचीबद्ध एक सूची (क्या पता नहीं) सूचीबद्ध करता है। dmesg उपर्युक्त प्रिंटक संदेशों में से कोई भी दिखाता है।

क्या आप मुझे बता सकते हैं कि यहां क्या गलत है?

उत्तर

15

सभी कंसोल लॉग स्तर सक्षम करने के लिए echo "7" > /proc/sys/kernel/printk आज़माएं।

संख्या नीचे करने के लिए इसी रहे हैं:

#define KERN_EMERG "<0>" /* system is unusable*/ 
#define KERN_ALERT "<1>" /* action must be taken immediately*/ 
#define KERN_CRIT "<2>" /* critical conditions*/ 
#define KERN_ERR "<3>" /* error conditions*/ 
#define KERN_WARNING "<4>" /* warning conditions*/ 
#define KERN_NOTICE "<5>" /* normal but significant condition*/ 
#define KERN_INFO "<6>" /* informational*/ 
#define KERN_DEBUG "<7>" /* debug-level messages*/ 

डिफ़ॉल्ट संख्या 4, जो सांत्वना केवल कम से कम KERN_WARNING में संदेश दिखाने के लिए अनुमति देता है। यही कारण है कि आप KERN_INFO स्तर पर लॉग इन नहीं देख सकते हैं।

+0

आश्चर्यजनक रूप से केवल KERN_INFO संदेश नहीं। लेकिन पूरे मॉड्यूल ने इको "7">/proc/sys/kernel/printk –

+1

का उपयोग करके काम करना शुरू किया क्योंकि "7" KERN_DEBUG से KERN_EMERG तक सभी प्रकार के लॉग को दिखाता है, न केवल KERN_INFO विशिष्ट। – Wayne

+1

मैं सिर्फ यह जोड़ना चाहता हूं कि उपयोगकर्ता रूट होने पर ही सफल हो जाए। पुनर्निर्देशन अन्यथा विफल हो जाएगा। पुनर्निर्देशन को '| इसे काम करने के लिए सुडो टी '। – russoue

0

echo "7" > /proc/sys/kernel/printk, printk का उपयोग करने के बाद भी मेरे लिए काम नहीं किया।

https://lwn.net/Articles/487437/ के बारे में कहते हैं संशोधित या printk की अधिक उन्नत संस्करण pr_** एपीआई (pr_info, pr_emerg) कहा जाता है।

मैंने printk के बजाय pr_info का उपयोग किया और यह मेरी समस्या हल हो गई।

संबंधित मुद्दे