Programming/Linux_Kernel

restart_syscall 의 호출 경로 - 작성중

decdream 2010. 7. 13. 10:03


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
     |