Zuerst einmal der Link zum git-Repository:
http://git.tyndur.org/?p=cdi.git;a=summaryWas dort in den Kommentaren der Headerdatei steht, ist auf jeden Fall die aktuelle Version der Dokumentation. Es gibt aber auch noch
http://lpt.tyndur.org/cdi/ als Online-Ausgabe davon (nicht sicher, wann es zuletzt aktualisiert worden ist, aber es dürfte nicht viel schlechter sein).
Die Treiber sind nicht speziell für tyndur entwickelt worden, sondern für CDI. Letztendlich besteht der Standard aus einem Satz von Headerdateien, die von den Treibern benutzt werden. Damit du die Treiber auf deinem OS benutzen kannst, musst du die Funktionen in diesen Headerdateien implementieren. Außerdem ist include/cdi-osdep.h zum Verändern vorgesehen, dort kannst du OS-spezifische Details eintragen. Der komplette Unterschied zwischen einen Mikrokernel wie tyndur und einem Monolithen ist hinter diesem Interface versteckt, es spielt für die Treiber keine Rolle.
Wichtig ist dort vor allem das Makro CDI_DRIVER(), mit dem sich Treiber bei deinem OS registrieren, so dass du hinterher alle Treiber durchgehen und initialisieren kannst. Dieser Teil ist ein bisschen tricky, evtl. willst du dir da von tyndur die
cdi-osdep.h und cdi_init() in
cdi.c anschauen.
Ich würde zum Portieren von CDI von zwei Seiten anpacken: Zum einen würde ich mir einen bestimmten Treiber raussuchen, den ich haben möchte, und versuche ihn einfach zu kompilieren und linken, und bei fehlenden Funktionen würde ich die implementieren (die meisten Treiber brauchen nur einen kleinen Teil der Funktionen, die in den Headern definiert sind, deswegen dieser Ansatz). Wenn das dann tut, also Treiber gegen deine CDI-Implementierung bauen, würde ich mit dem Kernel anfangen, dass er die registrierten Treiber findet, die init-Funktionen aufruft, PCI-Geräte an Treiber verfüttert usw.