मैं एक कर्नेल मॉड्यूल विकसित कर रहा हूं जो unlocked_ioctl का उपयोग करता है। मैंने इसे कर्नेल संस्करण 2.6.24-23-जेनेरिक के साथ परीक्षण किया और यह पूरी तरह से काम करता है। अब मैंने इसे कर्नेल संस्करण 3.3.1-1-ARCH के साथ आज़माया है और कुछ अजीब होता है: अनुरोध मान (cmd) 2 होने पर ioctl फ़ंक्शन निष्पादित नहीं होता है। यह 0 देता है, लेकिन फ़ंक्शन निष्पादित नहीं होता है। आदेश की जाँच करने के लिए कि यह निष्पादित नहीं कर रहा है मैं निम्नलिखित किया था में:ioctl को नहीं कहा जाता है अगर cmd = 2
static long midriver_ioctl(struct file *file,
unsigned int cmd, unsigned long arg) {
printk("Called with cmd = %d\n", cmd);
मैं एक परीक्षण कार्यक्रम है कि 4096 0 से इस डिवाइस के लिए ioctl कॉल लिखा था, और मैं संदेश "cmd साथ कहा जाता है dmesg में देख सकते हैं = n "उन सभी मानों के लिए," 2 "को छोड़कर, केवल एक जो दिखाया नहीं गया है।
मैं क्या गलत कर रहा हूं के बारे में कोई संकेत?
अग्रिम धन्यवाद,
कुछ कोड को श्रृंखला में cmd == 2 में अवरोध डालने और इसे से निपटने है की सूची सहित? – zvrba