Título: EIP Del llamador de la función ( EIP FROM FUNCTION CALLER ) Publicado por: lweb20 en 17 Mayo 2013, 02:03 am Hola a todos. Continuando con el desarrollo de mi SO.
Tengo una duda: Si tengo el siguiente código de ejemplo: KERNEL: Código: void EjecutarProceso(int id){ PROGRAMA: Código: #include "syscalls.h" Explico: El código de ejemplo lo asemejo a un código para entrar al modo usuario desde el kernel, ejecutar un programa y regresar al modo kernel ( todo funciona perfectamente ). Lo que quiero hacer es que cuando termine el proceso "sys_TerminarProceso" continúe al label "continuar". Para ello he pensado en 2 alternativas: PRIMERA ALTERNATIVA ( probada y sí funciona ) : a) Pasarle como parámetro a "EjecutarPrograma" la dirección de "continuar". b) Guardar esa dirección en la memoria mediante una variable global. c) Cuando el programa ( usuario ) ejecute sys_TerminarProceso, esta función ejecutará al final ( después de los ... ) dicha dirección del label. d) Enjoy! :P Bueno este es muy seguro y lógico a mi parecer, pero... este "EjecutarPrograma" también lo ejecutará el cliente como un "sys_EjecutarPrograma" y bueno no es muy normal que ejecute algo así: "EjecutarPrograma(etiquetaparacontinuar)". SEGUNDA ALTERNATIVA ( dudas, problemas ) : Obtener la dirección de una vez pasada la llamada "EjecutarProceso(id);", es decir, por donde está continuar ( sin el label claro ). Si alguien tiene alguna idea agradecería mucho su ayuda. Gracias por la atención. |