Obsah / Ovladače / IRQ / Funkce interface ovladače řadiče IRQ
Zdrojový kód: DRIVERS\SYSTEM\IRQ.ASM
Funkce interface ovladače řadiče IRQ
|
IRQDev je struktura popisovače standardního ovladače řadiče IRQ. V proměnné IRQDevice je uložen ukazatel na aktuální ovladač řadiče IRQ - při instalaci nového ovladače je tento ukazatel přepsán novým ukazatelem.
|
Funkce IRQInstall nainstaluje standardní ovladač řadiče IRQ - zaregistruje ovladač do systému. V případě chyby je navrácen příznak chyby CY.
|
Funkce IRQUninstall odinstaluje standardní ovladač řadiče IRQ - odregistruje ovladač ze systému. V případě chyby je navrácen příznak chyby CY. Funkce nezajistí instalaci náhradního ovladače řadiče IRQ.
|
Funkce IRQDevRemap přemapuje základní vektor 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 a je v rozsahu 0 až 248. Registr EBX obsahuje popisovač zařízení. Před voláním funkce se doporučuje všechna přerušení zakázat. V případě chyby (neplatný vektor přerušení) navrátí funkce příznak chyby CY.
Funkce na začátku zkontroluje platnost vektoru přerušení. Inicializuje příznaky a zakáže všechna přerušení. Nastaví řídicí slova pro první i druhý řadič přerušení - druhý řadič přerušení (slave) je připojen k prvnímu (master) kaskádově přes signál IRQ2. Nakonec nastaví původní masku přerušení a potvrzením ukončí všechny případné požadavky o přerušení.
|
Funkce IRQDevInit inicializuje řadič přerušení. Na vstupu funkce obsahuje registr EBX popisovač zařízení. Funkce nastaví základní vektor přerušení na hodnotu uchovanou v popisovači zařízení, jen provede její opravu pro případ neplatné hodnoty. Všechna přerušení se zakáží.
|
Funkce IRQDevDeinit deinicializuje ovladač řadiče IRQ, jehož popisovač je funkci předán v registru EBX. V případě chyby navrátí funkce příznak chyby CY. Funkce zajistí zákaz a potvrzení všech přerušení.
|
Funkce IRQDevInfo slouží 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 IRQDevEnable 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 IRQDevDisable 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ý nebo se jedná o rezervovaný kaskádový kanál) navrátí funkce příznak chyby CY. Funkce vyžaduje uzamknutí pomocí rychlého zámku.
|
Funkce IRQDevPending 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 IRQDevInServ 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 IRQDevAck 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.
Obsah / Ovladače / IRQ / Funkce interface ovladače řadiče IRQ