ioctl
/dev
प्रवेश के साथ हाथ से हाथ जाता है ; आपका विशिष्ट कोड करेगा
fd=open("/dev/mydevice",O_RDRW);
ioctl(fd,.....);
यह पूरी तरह से मानक यूनिक्स व्यवहार है। कर्नेल चालक के अंदर आप अभिगम नियंत्रण रख सकते हैं (जैसे केवल root
कुछ चीजें कर सकते हैं, या अधिक बारीक दाने के लिए एक विशिष्ट क्षमता की आवश्यकता होती है) जो इसे बहुत लचीला और शक्तिशाली बनाता है।
बेशक इसका मतलब यह है कि डिवाइस उपयोग ब्लॉक / चरित्र पढ़ने-लिखने की गतिविधि की तुलना में बहुत अधिक उजागर कर सकते हैं; ioctl
कॉल के जरिए कई काम किए जा सकते हैं। इतना आसान नहीं से शेल स्क्रिप्ट से उपयोग करने के लिए है, लेकिन बहुत आसान C
या perl
या python
या इसी तरह की।
sysfs
प्रविष्टियाँ ड्राइवरों के साथ बातचीत करने का एक और तरीका है। आमतौर पर प्रत्येक प्रकार की कमांड में एक अलग प्रविष्टि होती है, इसलिए इसे ड्राइवर को लिखना जटिल हो सकता है, लेकिन यह उपयोगकर्ताओं के माध्यम से एक्सेस करना बहुत आसान बनाता है; सरल खोल स्क्रिप्ट बहुत सारे सामान में हेरफेर कर सकती है, लेकिन बहुत कुशल नहीं हो सकती है
netlink
मुख्य रूप से नेटवर्क डेटा ट्रांसफर पर केंद्रित है (मुझे लगता है!), लेकिन इसका उपयोग अन्य सामान के लिए किया जा सकता है। यह डेटा ट्रांसफर के बड़े संस्करणों के लिए वास्तव में अच्छा है और इसका मतलब ioctl
कुछ मामलों में उत्तराधिकारी होना है ।
सभी विकल्प अच्छे हैं; आपके उपयोग का मामला बेहतर तरीके से निर्धारित कर सकता है कि आपके ड्राइवर से किस प्रकार का इंटरफ़ेस निकलता है।