IDE Task
Základem celého projektu
ovladače IDE rozhraní (a pevných disků na toto
rozhraní připojených) je PUBLIC funkce ide_task(void).
Tuto funkci spustí jádro TUOXu jako jednu z úloh, které
jsou specifikovány v tabulce tasků, kterou má jádro k
dispozici. Příslušná definice z kmain.c vypadá následovně: static void (*task[]) () = { idle, clock_task, floppy_task, sys_task, mem_task, tty_task, ide_task }; Po spustění úlohy ide_task následuje inicializace IDE_rozhraní, která spočívá v tom, aby se detekovala všechna zařízení, která jsou na toto rozhraní připojena, a jejich parametry. Proto se spustí funkce IDEdrv_Init(). Detekce probíhá ve třech krocích: |
Po inicializaci ovladače IDE rozhraní se spustí nekonečná smyčka:
while
(TRUE) {
} |
Tato smyčka realizuje veškeré systémové
rozhraní ovladače IDE zařízení. Na začátku smyčky
se vždy čeká na zprávu od jádra systému. Pak se
zjistí odesílatel zprávy (zdrojový proces), aby se
mohl využít jako adresát odpovědi. Potom už se jen
detekuje typ zprávy a na základě toho pak jsou volány
příslušné akce.
Na tomto driveru bude potřeba ještě dodělat mnoho detailů, jako např. detekce ATAPI zařízení nebo standartizování a dodržování všech chybových kódů pro chyby na všech blokových zařízeních i pro chyby speciálně na IDE zařízení nebo rozhraní. Po prostudování odokumentovaných zdrojových kódů (týkajících se rozhraní IDE) v LINUXu jsme zjistili, že mnoho výrobců nedodržuje kompletní specifikaci ATA rozhraní a tudiž není v našich silách provést dokonalou bezchybnou detekci libovolného zařízení a všech jeho parametrů tak, jak to (většinou) dokáže např. BIOS. |