Sono impegnato con un sistema operativo per hobby e sto pianificando di rendere il progetto open-source e, infine, di supportare piattaforme multiple. Con questo in mente ho preso l'approccio di mettere tutto il codice hardware specifico in una libreria HAL (Hardware Abstraction Layer) separata in modo che il kernel non abbia bisogno di sapere come l'hardware specifico gestisce cose come la memoria e gli interrupt. Il kernel chiamerà semplicemente la funzione HAL per chiedere un po 'di memoria o per agganciare un interrupt chiamando hal_memory_malloc(...);
e hal_interrupts_hook(...);
rispettivamente.
La mia domanda è, vorrei sapere se ci sono mezzi universali per descrivere quali funzioni la biblioteca deve esporre se uno sviluppatore vuole trasferire l'HAL su un'altra piattaforma. Vedendo che il kernel conosce il nome della funzione perché si trova nei file di intestazione del kernel, la libreria deve semplicemente avere una funzione con quel nome specifico al suo interno. Come il kernel non mi interessa come funziona la tua funzione finché è lì e posso chiamarla.
Modifica Il mio kernel e la mia libreria sono scritti in C, quindi la libreria sarà una normale libray collegata staticamente
Al momento ho un documento di Word con un diagramma che mostra le diverse funzioni, ma presto questo diventerà un disastro.
Qualsiasi consiglio sarebbe molto apprezzato.