Ist es nicht.
Am elegantesten wäre es, die nichtportablen Treiber portabel zu machen.
(NetBSD trennt dafür z.B. strikt die Bussysteme ab, so dass ein Treiber an jeden Bus gehängt werden kann - NE2000-Treiber ist damit für ISA, PCI, MCA, PCMCIA, ... sofort verfügbar).
Außerdem greifst du ja über die Hardwaretreiber trotzdem nicht unbedingt direkt auf die Hardware zu, sondern nach Möglichkeit über Betriebssystemfunktionen - so dass du z.B. eine Übersicht über die verwendeten Ressourcen hast und verhindern kannst, dass zwei verschiedene Treiber die gleiche Hardware ansprechen wollen. Diese Zwischenebene ist dann ohnehin in C.
Naja, und eine Hochsprache ist lesbarer, oftmals ist auch die Dokumentation mit C-Beispielcode versehen und man kann leichter Algorithmen nachvollziehen und auch debuggen...
Nimm C (, unless you know what you're doing
)
Gruß,
Svenska