Ho due moduli del kernel Linux, uno dei quali può fornire una funzione a un'altra. Ma l'uso di tale funzione non è essenziale, il secondo modulo potrebbe (e dovrebbe) funzionare anche se il primo modulo non è presente.Comunicazione tra moduli nel kernel Linux
Se esporto la funzione dal primo modulo e la uso nel secondo modulo, il secondo modulo dipende da tale simbolo e non può essere caricato senza il primo modulo.
Una delle soluzioni è quella di avere uno script utente che controlli/proc/kallsym per la funzione nel primo modulo, e se è presente, lo script passa il suo indirizzo come parametro al secondo modulo, che poi fa puntatore fuori di esso. Ma non mi piace questa soluzione per ovvi motivi.
Se esiste una soluzione più corretta ed elegante che consenta al secondo modulo di ottenere l'indirizzo di qualche simbolo nel primo modulo, ma evitare una dipendenza forte?
Il modulo B deve funzionare anche se non vi è alcun modulo A (supponiamo che A fornisca un'interfaccia per alcuni componenti hardware non presenti su una macchina). – Eugene
C'era un'interfaccia query_module() in 2.4 che faceva quasi esattamente ciò di cui avevo bisogno, ma era stata rimossa in 2.6. Mi chiedo se c'è qualche rimpiazzo ... – Eugene