ioctl
zwykle idzie w parze z /dev
wpisem; zrobiłby to twój typowy kod
fd=open("/dev/mydevice",O_RDRW);
ioctl(fd,.....);
Jest to całkowicie standardowe zachowanie Uniksa. Wewnątrz sterownika jądra można umieścić kontrolę dostępu (np. root
Można wykonywać tylko niektóre czynności lub wymagać specjalnej zdolności w celu uzyskania bardziej szczegółowego dostępu), co czyni go dość elastycznym i wydajnym.
Oczywiście oznacza to, że urządzenia mogą ujawniać znacznie więcej niż blokowe / znakowe działania do odczytu i zapisu; wiele rzeczy można zrobić za pośrednictwem ioctl
połączeń. Nie jest tak łatwy w użyciu ze skryptów powłoki, ale dość łatwo z C
lub perl
lub python
lub podobny.
sysfs
wpisy są innym sposobem interakcji z kierowcami. Zazwyczaj każdy typ polecenia ma inną pozycję, więc napisanie sterownika może być skomplikowane, ale bardzo łatwo jest uzyskać dostęp za pośrednictwem przestrzeni użytkownika; proste skrypty powłoki mogą manipulować wieloma rzeczami, ale mogą nie być bardzo wydajne
netlink
koncentruje się przede wszystkim (tak sądzę!) na przesyłaniu danych w sieci, ale można go wykorzystać do innych celów. Jest to naprawdę dobre w przypadku większych wolumenów przesyłania danych i ioctl
w niektórych przypadkach ma być następcą .
Wszystkie opcje są dobre; Twój przypadek użycia może lepiej określić, jaki typ interfejsu ma zostać ujawniony przez sterownik.