[질문]시스템콜을 사용자 프로세스의 어떤함수가 불렀는지에 대해 알수있는 방법
글쓴이: zzang9sds / 작성시간: 수, 2007/04/25 - 9:08오후
현재arm 리눅스에서 프로젝트를 수행중입니다.
커널 코드를 수정하여 사용자 프로세스 실행중에 리눅스의 시스템 타이머(10ms)간격으로 pc(program counter)를 저장하고 있습니다.
pc값 추출은 kernel/timer.c의 do_timer()함수 내에서 하고 있습니다.
헌데, floating point 연산이나 시스템콜을 수행하는 구간에서는 current 프로세스는 사용자 프로세스 이지만 저장된 pc값은 커널 부분의 address가 추출이 되더군요.
여기서 제가 하고자하는 것은 시스템콜을 사용자 프로세스의 어떤함수가 불렀는지 그함수내의 address 값을 같이 추출하고자 하는것입니다.
a()라는 함수에서 호출되었다면 a()함수내의 어떤 주소가 추출되어도 상관은 없습니다.
시스템콜이 호출되면 사용자 모드에서 커널모드로 넘어가고, 시스템콜이 수행된후에 다시 사용자 모드로 돌아가 시스템콜을 호출한 다음의 코드가 실행될것 같은데, 이 복귀되는 주소 혹은 시스템콜을 호출한 함수의 주소를 어떻게 알수있을까요?
Forums:
확실하지는 않지만
여기를 참고하시면 좋을 듯 하네요
http://www.internals.com/articles/protmode/interrupts.htm
개념적인 참고는 되지만..
실질적인 구현에 대한 조언이 필요하네요.
감사합니다.
Carpe diem~*
댓글 달기