Sto codificando al di fuori dell'albero dei sorgenti del kernel. Ci sono due moduli, il primo printt ha una funzione printtty()
per stampare la stringa sul tty corrente e il secondo modulo ciao che invoca printtty()
durante l'inizializzazione.Come esportare un simbolo da un modulo esterno?
ho aggiunto EXPORT_SYMBOL(printtty)
nel modulo printt, e dopo insmod ./printt.ko
, le informazioni di printtty()
può essere visto in /proc/kallsyms
.
Il processo make
del modulo ciao va tutto bene. Ma insmod ./hello.ko
causerà un errore del tipo:
insmod: ERROR: could not insert module hello.ko: Invalid parameters
e dmesg
mostra
hello: no symbol version for printtty
hello: Unknown symbol printtty (err -22)`.
Ho risolto questo
(1) Copiare il file .ko in una posizione al di sotto/lib/modules/version/kernel
(2) Aggiungere i simboli esportati a /lib/modules/version/build/Module.symvers
Ma mi chiedo c'è un modo per esportare un simbolo solo da un modulo esterno (senza modificare l'albero dei sorgenti del kernel)?