में register_chrdev_region() के बारे में प्रश्न register_chrdev_region(dev_t from, unsigned count, const char * name);
का उपयोग कर कर्नेल मॉड्यूल के पंजीकरण के बारे में सीख रहा हूं।linux डिवाइस ड्राइवर
मुझे लगता है कि इस फ़ंक्शन के साथ या उसके बिना, मेरे कर्नेल मॉड्यूल अपेक्षित के रूप में काम करता है। कोड मैं परीक्षण के लिए इस्तेमाल किया:
first = MKDEV(MAJOR_NUM, MINOR_NUM);
register_chrdev_region(first, count, DEVICE_NAME);//<---with and without
mycdev=cdev_alloc();
mycdev->ops= &fops;
mycdev->owner = THIS_MODULE;
if (cdev_add(mycdev,first, count) == 0)
{printk(KERN_ALERT "driver loaded\n");}
मैं लाइन register_chrdev_region(first, count, DEVICE_NAME);
बाहर टिप्पणी की, और printk
संदेश अभी भी दिखाई दिया। मैंने उपयोगकर्ता के स्थान से या इसके बिना चालक के साथ संवाद करने की कोशिश की, और दोनों सफल रहे।
तो मेरा सवाल यह है कि, यह कार्य register_chrdev_region()
है जो केवल मेरे ड्राइवर को एक अच्छा कर्नेल नागरिक बनाने के लिए उपयोग किया जाता है, जैसे कि "मैं बड़ी संख्या का उपयोग कर रहा हूं, कृपया उपयोग न करें"?
मैंने फ़ंक्शन को समझने के लिए कर्नेल स्रोत char_dev.c
में एक नज़र डालने का प्रयास किया, लेकिन मुझे यह समझना बहुत मुश्किल लगता है, जो इससे परिचित है?
धन्यवाद!