2012-03-22 8 views
9

Desarrollé dos módulos simples para el kernel. Ahora quiero definir una función en un módulo y luego usarla en el otro.¿Cómo se define una función en un módulo de kernel de Linux y se usa en otro?

¿Cómo puedo hacer eso?

¿Simplemente define la función y la persona que llama en el otro módulo sin problemas?

+0

duplicado posible de [Cómo llamar a las funciones del módulo del kernel exportados desde otro módulo?] (Http: // stackoverflow .com/questions/12311867/how-to-call-exported-kernel-module-functions-from-another-module) –

Respuesta

25

definirlo en module1.c:

#include <linux/module.h> 

int fun(void); 
EXPORT_SYMBOL(fun); 

int fun(void) 
{ 
    /* ... */ 
} 

y utilizarlo en module2.c:

extern int fun(void); 
+0

Todavía tengo un problema. En el directorio/var/log/i abra los mensajes del archivo para ver la impresión realizada comprar mi función. Aparece un mensaje como este: "licencia de módulo" no especificado "contamina kernel", "Desactivar la depuración de bloqueo debido a la contaminación del kernel". Simplemente llamo a la función de un módulo para imprimir un mensaje en el otro módulo. – Ricardo

+1

@Ricardo: Eso no está relacionado con las funciones de exportación, sino simplemente con el hecho de que no definió la licencia del módulo. Use la macro 'MODULE_LICENSE' para hacer eso. –

+0

Está funcionando. Gracias. Para los módulos dentro de la imagen del núcleo, ¿es el mismo proceso? – Ricardo

Cuestiones relacionadas