system call 에 대한 기본적인 내용은 생략하고..
strace 에서 오류가 나서 추적을 하다보니
sys_restart_syscall 의 경우 일반 syscall 과는 호출 경로가 조금 다르다.
왜 그런지 문서를 찾아보았지만 명확한 이유를 찾을 수가 없다.
일단 정리해 두고 차후에 원인을 알게 되면 보충해 보겠다.
< 일반적인 system call >
-000 |[0000:0xc00a97e0] sys_open(
| filename = 0x851C,
| flags = 1,
| mode = 0)
|
-001 |[0000:0xC002EF40] ret_fast_syscall(asm)
|
--> |exception
-002 |ZUR:0x6C6:0x400477BC(asm) : /lib/libc-2.5.so
|
-003 |main()
|
| open("/dev/meminfo", 1, NULL);
--- |end of frame
|
|
--------------------------------------------------------
< restart_syscall 의 경우 >
-000 |[0000:C005CF74] sys_restart_syscall()
| restart = 0x0
| __func__ = (115, 121, 115, 95, 114, 101, 115, 116, 97, 114, 116, 95, 115
|
-001 |[0000:C002F0B8] __sys_trace_return(asm)
|
| b 2b
--> |exception
-002 |ZUR:0x6C6:0xFFFF0520(asm)
|
-003 |ZUR:0x6C6:0x400E5CCC(asm)
|
--- |end of frame
|
'Programming > Linux_Kernel' 카테고리의 다른 글
work queue & kworker (0) | 2010.08.02 |
---|---|
wait queue (0) | 2010.08.02 |
process의 signal 처리 상태 보기 (0) | 2010.07.09 |
linux system call 의 호출 구조 (0) | 2010.07.09 |
__initdata keyword in kernel (0) | 2010.06.24 |