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.