Conozco todas las discusiones sobre por qué uno no debe leer/escribir archivos desde kernel, sino cómo usar/proc o netlink para hacerlo. Quiero leer/escribir de todos modos. También he leído Driving Me Nuts - Things You Never Should Do in the Kernel.¿Cómo leer/escribir archivos dentro de un módulo kernel de Linux?
Sin embargo, el problema es 2.6.30 no exporta sys_read()
. Más bien está envuelto en SYSCALL_DEFINE3
. Así que si uso que en mi módulo, consigo siguientes advertencias:
WARNING: "sys_read" [xxx.ko] undefined!
WARNING: "sys_open" [xxx.ko] undefined!
Obviamente insmod
no se puede cargar el módulo de enlace porque no se produce correctamente.
Preguntas:
- Cómo leer/escribir dentro del núcleo después de 2.6.22 (donde
sys_read()
/sys_open()
no se exportan)? - En general, ¿cómo utilizar las llamadas al sistema incluidas en macro
SYSCALL_DEFINEn()
desde dentro del kernel?
Gracias. Estaba pensando en hacer algo similar al replicar la funcionalidad sys_read/sys_open. Pero esto es de gran ayuda. Una curiosidad, ¿hay alguna manera de usar las llamadas al sistema declaradas usando SYSCALL_DEFINE? – Methos
Probé este código en kernel 2.6.30 (Ubuntu 9.04) y al leer el archivo falla el sistema. ¿Alguien experimentó el mismo problema? –
@Enrico Detoma? Oh wow. ¿Hay alguna forma de que me puedas dar el módulo que usaste? Nunca he visto eso antes? – dmeister