2012-06-14 17 views
5

tengo algunas preguntas sobre el/sys/módulo/en Linuxparámetros del módulo del kernel cambios (utilizando/sys/módulo)

1) ¿Tiene el/sys/módulo contiene todos los módulos del kernel

2) ¿el/XXX/parámetros/sys/módulo contiene todos los parámetros del módulo del núcleo xxxx

3) ¿tiene el/sys/módulo/XXX/parámetros/contienen aaaa valores en tiempo real de la aaaa parámetro del módulo del núcleo xxxx

4) si se cambia un parámetro en un módulo kernel de entrega, h Cómo detectar este cambio en RealTime? Quiero desarrollar una aplicación C (espacio de usuario) o un script de shell que detecte el cambio de un parámetro de módulo kernel en tiempo real.

+0

parámetros son valores de entrada y no valores de estado. No puede cambiar un parámetro después de que el destinatario del parámetro haya comenzado. – ceving

+0

@ceving, por lo que todos los parámetros en la carpeta/sys/module/xxx/parameters son solo parámetros ibput? ¿Entonces no podrían ser modificados por el módulo en el tiempo de ejecución? no hay parámetros de estado en estos parámetros? – MOHAMED

+1

Si desea cambiar el comportamiento del kernel en tiempo de ejecución, debe usar/proc/sys. Vea aquí: http://tournasdimitrios1.wordpress.com/2011/02/07/passing-parameters-to-the-kernel-at-run-time-time-on-linux/ – ceving

Respuesta

1

Los parámetros son valores de entrada y no valores de estado. No puede cambiar un parámetro después de que el destinatario del parámetro haya comenzado.

Si desea cambiar el comportamiento del kernel en tiempo de ejecución, debe utilizar/proc/sys. Vea aquí: http://tournasdimitrios1.wordpress.com/2011/02/07/passing-parameters-to-the-kernel-at-run-time-time-on-linux/

+3

Entonces ... cómo funciona el siguiente trabajo: 'escritura (0/N/n = deshabilitar) a/sys/module/printk/parameters/time' dejará de dar la marca de tiempo, que se ve así -> [1915.150953]. Luego 'escribiendo 1/Y/y = enable' lo habilitará de nuevo. Todo esto durante el tiempo de ejecución. ¿CÓMO? –

6

1) Sí,/sys/module de hecho tiene todos los módulos.

2) No,/sys/módulo/XXX/parámetros sólo tiene los parámetros del módulo quiere exportar, es decir, si desea exportar algún parámetro módulo del núcleo de su módulo, se debe utilizar:

module_param(test, bool, 0600); 

donde el último parámetro es distinto de cero, lo que significa el permiso del archivo "/ sys/module/xxx/parameters/test".

3) No, el valor del parámetro del módulo kernel es casi estático, raramente cambiado por otros lugares.

4) Su módulo kernel notificará a la aplicación del espacio de usuario.

0

"Finalmente (y este es algo importante), si elige definir parámetros escribibles y realmente escribirlos mientras se carga el módulo, no se informa a su módulo que el valor ha cambiado. Es decir, hay no hay devolución de llamada ni mecanismo de notificación para los parámetros modificados; el valor cambiará silenciosamente en su módulo mientras el código se ejecuta sin tener en cuenta el hecho de que hay un nuevo valor en esa variable.

Si realmente necesita acceso de escritura a su módulo y algún tipo de mecanismo de notificación, probablemente no quiera usar parámetros. Hay mejores formas de obtener esa funcionalidad ". [1]

Básicamente, necesitará un mecanismo para sondear constantemente los cambios o simplemente debe desarrollar un enfoque IOCtl y registrar su dispositivo como un dispositivo char simultáneamente a cualquier otra cosa que esté registrando (Linux es psicótico en ese respeto).

Bryan Wilcutt "Linux es gratis si no valoras tu propio tiempo". - Desconocido

[1] https://www.linux.com/learn/linux-training/28065-the-kernel-newbie-corner-everything-you-wanted-to-know-about-module-parameters

Cuestiones relacionadas