2009-01-20 9 views
9

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?

+0

Posible duplicado de [Implementación de la llamada al sistema Linux utilizando LKM] (https://stackoverflow.com/questions/12623066/implementing-linux-system-call-using-lkm) –

Respuesta

3

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.

1

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.

Cuestiones relacionadas