[리눅스커널] 유저 프로세스의 레지스터 세트인 struct pt_regs 파악하기

Guillermo Austin Kim|2020년 5월 11일
Posts

[리눅스커널] 유저 프로세스의 레지스터 세트인 struct pt_regs 파악하기

Guillermo Austin Kim|2020년 5월 11일

리눅스 커널에서 sys_enter ftrace 이벤트를 키면 syscall_trace_enter() 함수가 호출된다.syscall_trace_enter() 함수의 첫 번째 인자로 'struct pt_regs *regs' 가 전달되는데 이 정체를 확인해보자. 다음은 syscall_trace_enter() 함수의 구현부이다. int syscall_trace_enter(struct pt_regs *regs, int scno){ current_thread_info()->syscall = scno; if (test_thread_flag(TIF_SYSCALL_TRACE)) tracehook_report_syscall(regs, PTRACE_SYSCALL_ENTER); syscall_trace_enter