Karakter meghajtófájlok

Két fő módja a kommunikáció modul beszélni folyamatokat. Az első keresztül eszköz fájlokat (például a fájlokat a / dev könyvtár), a másik az, hogy a proc fájlrendszert. Mivel az egyik fő oka annak, amiért írt egy kernel modul egy támogató hardver eszköz, kezdjük a készülék fájlokat.

Az eredeti célja az eszközön lévő fájlokat, hogy lehetővé tegye folyamatok kommunikálni eszközmeghajtók a rendszermag, és rajtuk keresztül a fizikai eszközök (modemek, terminálok, stb).

Mindegyik eszköz driver, amely felelős egy bizonyos típusú hardvert saját fő számát. A listát a vezetők és azok főbb számok áll rendelkezésre / proc / devices. Minden fizikai eszköz által vezérelt eszközmeghajtó egy kis számot. A / dev könyvtár tartalmazza nevezett speciális állományokon eszköz fájlt e készülékek mindegyike ténylegesen telepített rendszeren.

Például, ha adsz a ls -l / dev / hd [ab] *. látni fogja az összes IDE merevlemez partíciókat, amely összefüggésbe hozható a gép. Felhívjuk figyelmét, hogy mindegyikük használja ugyanazt a fő szám 3, de a kis szoba, mindegyik saját! Jogi nyilatkozat: Úgy tartják, hogy az Ön által használt számítógép architektúra. Nem tudom, hogy semmit Linux device fájlokat a többi architektúrán.

Amikor a rendszer telepítése, az összes eszköz fájlok létre mknod. Nincs technikai ok, hogy miért kell a / dev könyvtárban. ez csak egy hasznos egyezmény. Amikor létrehoz egy eszköz fájlt tesztelési célokra, mint például, hogy gyakorolja itt valószínűleg értelme, hogy azt a könyvtárat, ahová akarunk fordítani egy modult.

Ez a modul két különálló részből áll: része a modul, amely regisztrálja a készülék és eszközmeghajtó része. init_module okoz module_register_chrdev. Ahhoz, hogy hozzá egy eszközmeghajtó szimbólumtáblát meghajtóhoz eszközöket. Ez a felhívás is visszaadja a fő szám a használni kívánt a vezető számára. Funkció cleanup_module üt ki a listából a készülék.

Ez (regisztráció és regisztráció törlését) az alapvető funkciókat a két funkciót. Hozzászólások a sejtmagban nem teljesülnek saját kezdeményezésre, mint folyamatok és az úgynevezett folyamatok révén a rendszer kéri, vagy hardver eszközök segítségével megszakítja vagy más a kernel (egyszerűen hívja speciális funkciók). Ennek eredményeképpen, ha hozzá a kódot a kernel, akkor regisztrálja, mint a vezető egy bizonyos típusú esemény, és amikor kiveszi, akkor törli a regisztráció.

Az eszközmeghajtó végzi négy művelet (funkciók), amelyek, ha valaki megpróbál tenni valamit az eszköz fájlt, amely a nagy számot. A kernel tudja, mi oka kell lenniük a szerkezeten keresztül file_operations. Fátyol. hogy kapott, amikor az eszköz már regisztrált, beleértve mutatókat négy funkció, hogy az eszköz végzi.

Mégis meg kell emlékezni, hogy nem engedhetjük meg a modul terheletlen rmmod parancsot, ha azt akarja, hogy kirak a gyökér. Ennek az az oka, hogy ha az eszköz fájlt nyitott folyamat, és távolítsa el a modult, akkor használja a fájl okozna egy hívást, hogy a pont, ahol a memória a megfelelő funkciót található. Ha szerencsések vagyunk, nincs más kódot vittünk oda, és mi lesz egy csúnya hibaüzenetet. Ha nem vagyunk szerencsétlen (általában ez a helyzet), a másik modul betöltődik ugyanazon a helyen, ami azt jelenti, egy átmeneti közepén egy másik funkciója a kernel. Ennek a lehetetlen megjósolni, de nem lehet pozitív.

Általában, ha nem akarja, hogy készítsen valamit, amit vissza hibakódot (negatív) a függvény, ami a cselekvés. A cleanup_module ez a trükk nem működik, ha cleanup_module hivatkozni modul véget ért. Ugyanakkor a használata egy számlálót, ami számít, hogy hány más modul használja ezt a modult, az úgynevezett hivatkozási szám (az utolsó sor száma a / proc / modules). Ha ez a szám nem nulla, rmmod sikertelen lesz. Counter modul elérhető linkek változó mod_use_count_. Mivel megadott makrók kezelésére ez a változó (MOD_INC_USE_COUNT és MOD_DEC_USE_COUNT), akkor szívesebben használják őket, nem pedig közvetlenül mod_use_count_, hogy mi lesz biztonságos, ha a megvalósítás változik a jövőben.

Kapcsolódó cikkek