Common Driver Interface — Änderungen 5965 → 6635

Zeile 113: Zeile 113:
  
 
==== Funktionen ====
 
==== Funktionen ====
 +
 +
===== cdi.h =====
 
<c>void cdi_init(void);</c>
 
<c>void cdi_init(void);</c>
 
Initialisiert die CDI-Strukturen des Betriebssystems, muss vor Benutzung anderer CDI-Funktionen aufgerufen werden - wiederholte Aufrufe müssen ohne Effekt bleiben.
 
Initialisiert die CDI-Strukturen des Betriebssystems, muss vor Benutzung anderer CDI-Funktionen aufgerufen werden - wiederholte Aufrufe müssen ohne Effekt bleiben.
Zeile 123: Zeile 125:
 
<c>void cdi_driver_register(struct cdi_driver *driver);</c>
 
<c>void cdi_driver_register(struct cdi_driver *driver);</c>
 
Registriert einen CDI-Treiber. Es bietet sich an, ihn in einer globalen Liste einzutragen und diese Liste dann beim cdi_run_drivers()-Aufruf abzuarbeiten.
 
Registriert einen CDI-Treiber. Es bietet sich an, ihn in einer globalen Liste einzutragen und diese Liste dann beim cdi_run_drivers()-Aufruf abzuarbeiten.
 +
 +
===== cdi/misc.h =====
 
<c>void cdi_register_irq(uint8_t irq, void (*handler)(struct cdi_device*), struct cdi_device *device);</c>
 
<c>void cdi_register_irq(uint8_t irq, void (*handler)(struct cdi_device*), struct cdi_device *device);</c>
 
Registriert eine ISR "handler" für den angegebenen IRQ "irq". Der ISR muss beim Aufruf das angegebene CDI-Gerät "device" als Parameter übergeben werden.
 
Registriert eine ISR "handler" für den angegebenen IRQ "irq". Der ISR muss beim Aufruf das angegebene CDI-Gerät "device" als Parameter übergeben werden.
Zeile 139: Zeile 143:
 
<c>void cdi_sleep_ms(uint32_t ms);</c>
 
<c>void cdi_sleep_ms(uint32_t ms);</c>
 
Wartet "ms" Millisekunden.
 
Wartet "ms" Millisekunden.
 +
 +
===== cdi/pci.h =====
 
<c>void cdi_pci_get_all_devices(cdi_list_t list);</c>
 
<c>void cdi_pci_get_all_devices(cdi_list_t list);</c>
 
Fügt alle vorhandenen PCI-Geräte in die Liste "list" ein.
 
Fügt alle vorhandenen PCI-Geräte in die Liste "list" ein.
Zeile 151: Zeile 157:
 
<c>void cdi_pci_free_memory(struct cdi_pci_device *device);</c>
 
<c>void cdi_pci_free_memory(struct cdi_pci_device *device);</c>
 
Gibt selbigen Speicher wieder frei.
 
Gibt selbigen Speicher wieder frei.
 +
 +
===== cdi/io.h =====
 
<c>uint8_t cdi_inb(uint16_t port);
 
<c>uint8_t cdi_inb(uint16_t port);
 
uint16_t cdi_inw(uint16_t port);
 
uint16_t cdi_inw(uint16_t port);
Zeile 159: Zeile 167:
 
void cdi_outl(uint16_t port, uint32_t data);</c>
 
void cdi_outl(uint16_t port, uint32_t data);</c>
 
Gibt ein Byte/Word/DWord am angegebenen I/O-Port aus.
 
Gibt ein Byte/Word/DWord am angegebenen I/O-Port aus.
 +
 +
===== cdi/lists.h =====
 
<c>cdi_list_t cdi_list_create(void);</c>
 
<c>cdi_list_t cdi_list_create(void);</c>
 
Erstellt eine Linked-List (gibt NULL bei Fehler zurück).
 
Erstellt eine Linked-List (gibt NULL bei Fehler zurück).