Obsah / Ovladače / IRQ / Struktury a makra ovladače řadiče IRQ
Zdrojový kód: INCLUDE\DRIVERS\SYSTEM\IRQ.INC
Struktury a makra ovladače řadiče IRQ
|
Struktura DEVIRQ je popisovač ovladače řadiče přerušení. Struktura je odvozena od všeobecného zařízení DEV.
DEVIRQ_Channels je interní proměnná ovladače (nemělo by k ní být přistupováno přímo) obsahující počet IRQ kanálů řadiče.
DEVIRQ_Base je interní proměnná ovladače (nemělo by k ní být přistupováno přímo) obsahující číslo základního vektoru přerušení. Představuje číslo vektoru přerušení prvního signálu IRQ0, ostatní přerušení sekvenčně následují. Číslo základního vektoru přerušení musí být násobkem čísla 8.
DEVIRQ_Cache je interní proměnná ovladače (nemělo by k ní být přistupováno přímo) s uschovanou maskou přerušení. Je-li bit nastaven na hodnotu 1, je příslušné přerušení zakázáno.
DEVIRQ_Flags je interní proměnná ovladače (nemělo by k ní být přistupováno přímo) s pomocnými příznaky. Je-li nastaven příznak DEVIRQ_InSrv1, je řadič 1 v režimu in-service. Je-li nastaven příznak DEVIRQ_InSrv2, je řadič 2 v režimu in-service.
DEVIRQ_Info je funkce ke zjištění informací o IRQ kanálu. Na vstupu funkce obsahuje registr EAX číslo kanálu IRQ, pro který mají být informace zjištěny. Registr EBX obsahuje popisovač zařízení. Na výstupu z funkce je navrácen v registru ECX počet kanálů IRQ, v registru ESI číslo základního vektoru přerušení a v registru EDX příznaky (nebo jejich kombinace) s těmito hodnotami: IRQINFO_VALID kanál je platný, IRQINFO_ENABLED kanál je povolen (může nastat přerušení). V případě neplatného čísla IRQ kanálu navrátí funkce příznak CY a obsah registru EDX je nulový. Počet kanálů navrácený v registru ECX a bázový vektor v registru ESI jsou i v případě chyby platné. Funkce vyžaduje uzamknutí pomocí rychlého zámku.
Funkce DEVIRQ_Remap slouží k nastavení nového základního vektoru přerušení. Na vstupu funkce obsahuje registr EAX nový základní vektor přerušení. Číslo základního vektoru přerušení musí být násobkem čísla 8. Registr EBX obsahuje popisovač zařízení. Funkce vyžaduje uzamknutí pomocí rychlého zámku.
Funkce DEVIRQ_Enable slouží k povolení IRQ kanálu. Na vstupu funkce obsahuje registr EAX číslo kanálu IRQ, který má být povolen. Registr EBX obsahuje popisovač zařízení. V případě chyby (zadáno neplatné číslo kanálu nebo kanál je již povolen) navrátí funkce příznak chyby CY. Funkce vyžaduje uzamknutí pomocí rychlého zámku.
Funkce DEVIRQ_Disable slouží k zakázání IRQ kanálu. Na vstupu funkce obsahuje registr EAX číslo kanálu IRQ, který má být zakázán. Registr EBX obsahuje popisovač zařízení. V případě chyby (zadáno neplatné číslo kanálu nebo kanál je již zakázaný) navrátí funkce příznak chyby CY. Funkce vyžaduje uzamknutí pomocí rychlého zámku.
Funkce DEVIRQ_Pending slouží ke zjištění, zda je připravený požadavek přerušení od IRQ kanálu, jehož číslo obsahuje na vstupu funkce registr EAX. Registr EBX obsahuje popisovač zařízení. Na výstupu funkce je navrácen příznak CY, pokud je požadavek přerušení připraven nebo pokud bylo zadáno neplatné číslo kanálu. Funkce vyžaduje uzamknutí pomocí rychlého zámku.
Funkce DEVIRQ_InServ slouží ke zjištění, zda probíhá obsluha přerušení od IRQ kanálu, jehož číslo obsahuje na vstupu funkce registr EAX. Registr EBX obsahuje popisovač zařízení. Na výstupu funkce je navrácen příznak CY, pokud probíhá obsluha přerušení od IRQ kanálu nebo pokud bylo zadáno neplatné číslo kanálu. Funkce vyžaduje uzamknutí pomocí rychlého zámku.
Funkce DEVIRQ_Ack slouží k potvrzení požadavku přerušení od IRQ kanálu, jehož číslo obsahuje na vstupu funkce registr EAX. Registr EBX obsahuje popisovač zařízení. V případě chyby (zadáno neplatné číslo kanálu) navrátí funkce příznak chyby CY. Funkce vyžaduje uzamknutí pomocí rychlého zámku.
|
Makro DEVICEIRQ je inicializovaný popisovač ovladače řadiče přerušení. Makro má 7 parametrů:
%1 - index zařízení
%2 - příznaky
%3 - hlavní číslo verze ovladače
%4 - vedlejší číslo verze ovladače
%5 - číslo překladu ovladače
%6 - počet IRQ kanálů
%7 - prefix jména ### :
###Info - zjištění informací o IRQ kanálu
###Remap - přemapování základního vektoru přerušení
###Enable - povolení IRQ kanálu
###Disable - zákaz IRQ kanálu
###Pending - test, zda je požadavek přerušení od IRQ kanálu
###InServ - test, zda probíhá obsluha přerušení od IRQ kanálu
###Ack - potvrzení přerušení od IRQ kanálu
Obsah / Ovladače / IRQ / Struktury a makra ovladače řadiče IRQ