solicita - llamadas al sistema linux
¿Es posible agregar una llamada al sistema a través de un LKM? (3)
Aquí hay un ejemplo
llamadas al sistema de linux
editar:
El ejemplo anterior muestra cómo implementar una llamada al sistema, en cuanto a implementar uno desde un módulo cargable; AFAIK, eso no es posible, a menos que se sobrescriba uno existente porque el tamaño de la matriz es #define.
Tenga en cuenta que también se requieren cambios de espacio de usuario, al menos si desea poder utilizar la nueva llamada al sistema.
Me gustaría agregar una nueva llamada al sistema a través de un LKM, pero no estoy seguro de cómo hacer esto. Es decir, sé que si deseo agregar una llamada al sistema completamente nueva, puedo buscar en sys_call_table y encontrar sys_ni_syscall
y simplemente reemplazarlo, pero tenía curiosidad de si era posible agregarlo a sys_call_table
. Me doy cuenta de que probablemente no sea posible, dado que es una matriz de tamaño fijo, pero me preguntaba si había otras formas inteligentes de agregar llamadas al sistema sin anular un número de llamada del sistema no utilizado.
Consulte el sitio web del proyecto de documentación de Linux para obtener información sobre la "Guía de programación del módulo Linux Kernel" ( http://www.tldp.org/LDP/lkmpg/2.6/html/index.html ). Específicamente, mire aquí para System Calls: http://www.tldp.org/LDP/lkmpg/2.6/html/x978.html . Eso debería darte un comienzo, al menos.
Esta es una vieja pregunta, pero aún así quiero proponer mi solución. La forma más fácil de implementar un entorno de "llamada de sistema" es confiar en un dispositivo falso. En particular, podría crear un nuevo controlador de dispositivo que en realidad no está conduciendo nada. Sin embargo, escribir en él puede hacer que el módulo instalado realice las acciones requeridas. Además, si desea ofrecer varios servicios, puede ioctl
operaciones ioctl
.