es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Manejo de un SIGSEGV en el espacio del kernel

Necesito ayuda para ampliar la funcionalidad de envío de señales en el espacio del kernel en presencia de un SIGSEGV.

He estado trabajando en OPTEE-OS (ver la imagen al final) y cuando un programa, que se está ejecutando en el sistema operativo RICH (en mi caso Linux), se bloquea por alguna razón, necesito enviar el bloqueo detectado a TrustZone de OPTEE. No necesito enviar los detalles del bloqueo ni el archivo de volcado de núcleo a TrustZone, solo que el proceso con el PID XXXXXX se bloqueó.

Sé que SIGSEGV es capturado por la MMU causando una interrupción y que esta interrupción es gestionada por el kernel, que envía una señal SIGSEGV al proceso. Quiero ampliar el módulo de kernel que envía la señal SIGSEGV para transmitir información a TrustZone. Pero no sé qué módulo de kernel en Linux podría editar para hacer eso.

Por ejemplo, comenzando con un código .c simple:

void foo(int *p) {
  *p = 1;
}

int main(int argc, char **argv) {
  int *p = NULL;
  foo(p);
}

que devuelve un SIGSEGV, mi pregunta es:
– ¿Qué módulo de kernel debería editar para enviar la información a TrustZone? No creo que sea una tarea compleja, simplemente tengo que importar la biblioteca de TrustZone en el módulo de kernel para lograrlo.

Arquitectura de OP-TEE: OP-TEE ARCHITECTURE

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para extender la funcionalidad de envío de señales en el espacio del kernel en presencia de una SIGSEGV para transmitir información de fallos a la OPTEE Trustzone, sería necesario modificar el código de manejo de señales del kernel. Específicamente, se necesitaría modificar el código que maneja la señal SIGSEGV para enviar la información relevante a la Trustzone. Esto probablemente requeriría un profundo entendimiento del kernel de Linux y sus mecanismos de manejo de señales.

    Para enviar la información a la Trustzone, se necesitaría escribir un módulo del kernel que importe la biblioteca de Trustzone y utilice su funcionalidad para transmitir la información necesaria. Esto requiere una cuidadosa coordinación con el código de manejo de señales del kernel para asegurar que la información sea transmitida correctamente y de manera eficiente.

    En general, esta es una tarea compleja y desafiante que requiere un conocimiento especializado tanto en la programación del kernel de Linux como en la tecnología Trustzone. No es simplemente cuestión de editar un módulo específico del kernel, sino que implica un diseño e implementación cuidadosos de un módulo del kernel personalizado que se integra con la pila de software de Trustzone.

Comments are closed.