ioctl
cenderung berjalan seiring dengan sebuah /dev
entri; kode khas Anda akan lakukan
fd=open("/dev/mydevice",O_RDRW);
ioctl(fd,.....);
Ini adalah perilaku Unix standar sempurna. Di dalam driver kernel Anda dapat menempatkan kontrol akses (misalnya hanya root
dapat melakukan beberapa hal, atau memerlukan kemampuan khusus untuk akses berbutir lebih halus) yang membuatnya cukup fleksibel dan kuat.
Tentu saja ini berarti bahwa perangkat dapat mengekspos lebih banyak daripada menggunakan aktivitas baca-tulis blok / karakter; banyak hal dapat dilakukan melalui ioctl
panggilan. Tidak begitu mudah digunakan dari skrip shell, tapi cukup mudah dari C
atau perl
atau python
atau serupa.
sysfs
entri adalah cara lain untuk berinteraksi dengan driver. Biasanya setiap jenis perintah akan memiliki entri yang berbeda, sehingga dapat menjadi rumit untuk menulis driver tetapi membuatnya sangat mudah diakses melalui userspace; skrip shell sederhana dapat memanipulasi banyak hal, tetapi mungkin tidak terlalu efisien
netlink
terutama difokuskan (saya pikir!) pada transfer data jaringan, tetapi dapat digunakan untuk hal-hal lain. Ini benar-benar bagus untuk volume transfer data yang lebih besar dan dimaksudkan sebagai penerus ioctl
dalam beberapa kasus.
Semua opsi baik; case use Anda mungkin lebih baik menentukan jenis antarmuka yang akan diekspos dari driver Anda.