본문 바로가기

Programming/Linux_Kernel

restart_syscall 의 호출 경로 - 작성중


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