Právě se dostávám do vývoje ovladačů pro Linux a mám koncepční otázku, která podle mě pomůže i dalším nováčkům ve vývoji jádra.
Pročítám knihu Linux Device Drivers a dokončil jsem až kap. 3 knihy. Až dosud jsem to viděl vydáním open
, close
a další příkazy k souborům v /dev
složka, má uživatelský prostor přístup k funkcím jádra.
Další způsob ovládání sdílení je prostřednictvím souborů v /sys
, kde čtení nebo zápis z sys
soubory mohou komunikovat s ovladačem.
Chtěl jsem vědět, jaké by byly případy použití pro jednotlivé metody? Jsou to dva přístupy ke stejnému úkolu? Má jeden vůči druhému nějaká omezení? Může se někdo podělit o praktické příklady, kdy by jeden mohl být užitečný nad druhým?
Přečetl jsem si další otázky zde a vysvětlují dev
a sys
. I když je to užitečné, chtěl jsem získat trochu podrobnější znalosti o tom, jak se oba liší a jak by se měly používat.
Přijatá odpověď:
Velmi zhruba:
/dev
obsahuje uzly zařízení, což byl v dřívějších unixových systémech jediný způsob interakce s jádrem. Existují dva typy těchto, blok zařízení a znak zařízení. Odpovídající API je zaměřeno na něco, co umožní blokové I/O (nějaký druh disku) nebo znakové I/O (např. sériový port).
/sys
(a /proc
) byly přidány později, možná inspirované OS Plan 9. Poskytují kompletní adresářové podstromy a položky souborů v těchto podstromech obsahují text, který popisuje vnitřní stav modulu jádra při čtení, nebo při zápisu nastavuje vnitřní stav.
Typická aplikace by tedy byla:
Chcete napsat ovladač jádra pro nějaký druh úložného zařízení? Použijte /dev
uzel pro přístup k samotnému zařízení a /sys
(nebo /proc
) záznamy pro doladění způsobu přístupu k úložišti.