GNU/Linux >> Znalost Linux >  >> Linux

Jak napsat ovladač zařízení linux block v uživatelském prostoru?

Vždy se podívá na první chybu:

Ve vašem případě to vypadá na problém se začleněním souborů, např. request_queue_t není definován.

Protože se jedná o zastaralý typ, pravděpodobně používáte verzi linux/blkdev.h, která je novější než příklad kódu.

Zkuste přidat typedef struct request_queue request_queue_t;


Neexistuje "oficiální" způsob, jak dělat blokové ovladače v uživatelském prostoru, ale lidé to často dělají tak, že (ab)použijí ovladač NBD k hovoru přes síť zpětné smyčky s démonem, který naslouchá na normálním soketu a mluví protokolem NBD. Další informace naleznete v dokumentech NBD.

Váš příklad je pro blokové zařízení v režimu jádra, které bude nutné sestavit jako modul jádra. A jelikož se vnitřní části jádra neustále mění, je nyní pravděpodobně nekompatibilní.


Podle návrhu MarkR je dokonce možné mluvit protokolem NBD přes AF_UNIX soketový pár, takže není potřeba žádný další místní démon. Program implementující tento protokol bude muset nastavit pár soketů a rozdělit dítě. Rodič i podřízený uzavřou jeden konec páru soketů. Jeden z nich začne přijímat požadavky na svém konci soketu, zatímco druhý připojí ovladač NBD ke svému konci soketu.


Linux
  1. Jak nainstalovat ovladač zařízení v systému Linux

  2. Jak napsat text na obrázek pomocí příkazu Linux

  3. Linux – Jak najít ovladač (modul) spojený se zařízením v Linuxu?

  1. Linux:Jak najít ovladač zařízení používaný pro zařízení?

  2. Linux – Jak linuxové jádro zná hlavní a vedlejší čísla zařízení?

  3. Linux – Jak znovu připojit logicky odpojené USB zařízení?

  1. Linux – Jak otestovat, zda je blokové zařízení pouze pro čtení z /sys nebo /proc?

  2. Jak vytvořit virtuální blokové zařízení (smyčkové zařízení/systém souborů) v Linuxu

  3. Jak napsat soubor s C v Linuxu?