Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

217
Vistas
¿Cómo puedo compartir una variable global entre dos módulos del kernel de Linux?

Estoy tratando de recibir una notificación cuando el USB está conectado y desconectado. Así que estoy tratando de implementar señales. Creé un archivo "file1" en debugfs. Luego proporcioné una operación simple de escritura de archivos.

En el espacio de usuario hay una aplicación de espacio de usuario, que escribirá su PID en el "archivo1" de debugfs.

En el espacio del kernel, puedo pasar el PID usando el método de escritura mencionado anteriormente. Pero quiero usar este PID en un módulo de kernel diferente. Así que intenté usar EXPORT_SYMBOL(); , pero si no incluyo el archivo de encabezado común, obtengo un error de compilación. Si incluyo el archivo de encabezado, cuando muestro la imagen, veo que el PID es '0'.

¿Alguien puede decirme si esta es la manera correcta? O dime dónde me estoy equivocando. ¿O puedo recibir una notificación en un módulo del kernel diferente cuando el PID se escribe en el archivo? ¿Si es así, cómo?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

EXPORT_SYMBOL() es el enfoque correcto. No entiendo muy bien lo que quiere decir con "si no incluyo el archivo de encabezado común". Parece que está incluyendo EXPORT_SYMBOL() en un archivo de encabezado compartido que no es lo que desea hacer. Quieres hacer algo como lo siguiente:

module1.c (se compila en module1.ko)

 int my_exported_variable; EXPORT_SYMBOL(my_exported_variable); // The rest of module1.c

Y luego en module2.c (se compila en module2.ko, que debe ser insmod-ed después de module1.ko)

 extern int my_exported_variable; // Note the extern, it is declaring but not defining it, the definition is in module1 // The rest of module2.c

Después de instalar el primer módulo, puede verificar que el símbolo se exporte haciendo un grep my_exported_variable /proc/kallsyms , asumiendo que tiene /proc/kallsyms en su sistema. Si no ve su variable allí, entonces el insmod de module2.ko fallará en un símbolo no resuelto.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda