Conosco tutte le discussioni sul perché non si dovrebbero leggere/scrivere file dal kernel, invece come usare/proc o netlink per farlo. Voglio leggere/scrivere comunque. Ho anche letto Driving Me Nuts - Things You Never Should Do in the Kernel.Come leggere/scrivere file all'interno di un modulo del kernel di Linux?
Tuttavia, il problema è 2.6.30 non esporta sys_read()
. Piuttosto è avvolto in SYSCALL_DEFINE3
. Quindi, se uso che nel mio modulo, ottengo seguenti avvertenze:
WARNING: "sys_read" [xxx.ko] undefined!
WARNING: "sys_open" [xxx.ko] undefined!
Ovviamente insmod
non può caricare il modulo perché il collegamento non avviene correttamente.
Domande:
- Come leggere/scrivere all'interno del kernel dopo 2.6.22 (dove
sys_read()
/sys_open()
non vengono esportate)? - In generale, come utilizzare le chiamate di sistema racchiuse nella macro
SYSCALL_DEFINEn()
dal kernel?
Grazie. Stavo pensando di fare qualcosa di simile replicando la funzionalità sys_read/sys_open. Ma questo è un grande aiuto. Una curiosità, c'è un modo per usare le chiamate di sistema dichiarate usando SYSCALL_DEFINE? – Methos
Ho provato questo codice nel kernel 2.6.30 (Ubuntu 9.04) e ho letto il file in crash del sistema. Qualcuno ha riscontrato lo stesso problema? –
@Enrico Detoma? Oh, wow. In questo modo puoi darmi il modulo che hai usato? Mai visto prima? – dmeister