Sto modificando un kernel Linux per aggiungere alcune funzionalità al Linux Virtual Server (LVS).Come utilizzare i simboli esportati opzionalmente solo se sono presenti in un modulo Kernel Linux non protetto?
Ho sviluppato un modulo (che ho chiamato net/netfilter/ipvs/ip_vs_utils.c
) con alcune funzioni da utilizzare durante il bilanciamento del carico. Tutte le funzioni qui sono esportate usando EXPORT_SYMBOL()
.
Questo modulo, logicamente non viene caricato tutto il tempo. La mia intenzione è di consentire all'utente di decidere se desidera utilizzare questa funzionalità aggiuntiva o meno (caricamento o scaricamento del modulo).
La mia domanda è come potrei invocare queste funzioni OPZIONALMENTE (a seconda se il modulo è in esecuzione o meno) da un modulo esistente (e ovviamente modificato) (net/netfilter/ipvs/ip_vs_core.c
). Qualcosa di simile a questo:
if(ip_vs_utils_IsLoaded)
{
function1(arg1, arg2, arg3); // being function1 defined on ip_vs_utils.c
}
risposta di Lai è abbastanza buona se i vostri 'if (ip_vs_utils) 'Il codice è destinato ad essere nel kernel sempre; ma se quel codice si trova in un altro modulo caricabile, probabilmente la semplice dipendenza del modulo è l'approccio migliore. Vedi 'depmod (8)' per i dettagli completi. – sarnold