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 el sys_call_table y encontrar un sys_ni_syscall
y simplemente reemplazarlo, pero tenía curiosidad si fuera posible agregar al sys_call_table
. Me doy cuenta de que es probablemente no 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.¿Es posible agregar una llamada al sistema a través de un LKM?
Respuesta
Consulte el sitio web del Proyecto de documentación de Linux para "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 las llamadas al sistema: http://www.tldp.org/LDP/lkmpg/2.6/html/x978.html. Eso debería darte un comienzo, al menos.
Lea esto, aunque parece que sys_call_table es ya no se exporta en el kernel 2.6. Ver el comentario en syscall.c – FreeMemory
He aquí un ejemplo
linux system calls
edición:
El ejemplo anterior muestra howto implementar una llamada al sistema, por lo que la aplicación de uno de un módulo de carga; 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.
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 asignarlos a las operaciones ioctl
.
- 1. Dirección incorrecta al agregar una llamada al sistema
- 2. Ignorando una llamada al sistema
- 3. kernel de Linux: agregue la llamada al sistema de forma dinámica a través del módulo
- 4. Llamada al sistema vs Llamada a la función
- 5. ¿Es posible agregar un observador a tableView.contentOffset?
- 6. ¿Es posible un túnel SSH a través de Citrix Client?
- 7. ¿Llamada al sistema sin cambio de contexto?
- 8. ¿Cómo puedo añadir una llamada al sistema/utilidad en xv6
- 9. Llamada al sistema e interruptor de contexto
- 10. ¿Es posible iterar a través de JSONArray?
- 11. Rastreo de una llamada al sistema de bloqueo C
- 12. ¿Es posible exponer un campo DateTime a través de COM?
- 13. ¿es posible agregar una lista a una estructura?
- 14. ¿Es posible realizar una llamada al servicio web dentro de un informe de servicios de informes?
- 15. Agregar formulario a un UserControl: ¿es esto posible?
- 16. ¿Es posible pasar una llamada Clipsis directamente?
- 17. ¿es posible acceder a datos de formulario HTML PUBLICADOS a través de un WebView?
- 18. ¿Es posible la transmisión a través de TCP?
- 19. ¿Es posible agregar soporte de cobertura de código a GAEUnit?
- 20. ¿Es posible agregar título a los gráficos?
- 21. ¿Es posible la llamada jdbc asincrónica?
- 22. Seleccionar() llamada al sistema en hilos?
- 23. ¿Es posible exponer datos LDAP "compatibles" a través de una API REST sin un servidor LDAP?
- 24. En Sitecore, al agregar un campo a una plantilla, hay una casilla de verificación llamada "compartida". ¿Para qué es esto?
- 25. ¿Es posible acceder a una variable de instancia a través de un método estático?
- 26. ¿Cómo puedo agregar una devolución de llamada al método .apply()?
- 27. Usando la llamada al sistema open()
- 28. ¿Es posible cerrar programáticamente un proceso de Java a través de JMX
- 29. ¿Es posible "agregar" al constructor de copia predeterminado?
- 30. Instalación del paquete mediante la llamada al sistema CLI/Ruby
Posible duplicado de [Implementación de la llamada al sistema Linux utilizando LKM] (https://stackoverflow.com/questions/12623066/implementing-linux-system-call-using-lkm) –