Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

212
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!