본문 바로가기

system call

linux kernel code 에서 system call 찾는 방법 system call 을 찾는 방법 SYSCALL_DEFINE 매크로를 통해 찾아야 한다 참고 : http://daehee87.tistory.com/253 더보기
kernel 동작을 trigger 시킨 process name과 pid 얻기 system call 이나 sysfs 등을 통해서 kernel 을 동작시킨 process 주체의 name 과 pid 를 kernel 단에서 얻을 수 있습니다. process 명칭 문자열 : current->comm pid : task_pid_nr(current) 더보기
restart_syscall 의 호출 경로 - 작성중 system call 에 대한 기본적인 내용은 생략하고.. strace 에서 오류가 나서 추적을 하다보니 sys_restart_syscall 의 경우 일반 syscall 과는 호출 경로가 조금 다르다. 왜 그런지 문서를 찾아보았지만 명확한 이유를 찾을 수가 없다. 일단 정리해 두고 차후에 원인을 알게 되면 보충해 보겠다. -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 .. 더보기
linux system call 의 호출 구조 system call 의 구조에 대해 잘 설명해 놓은 문서 난 사실 restart_syscall 의 정체가 알고 싶을 뿐이고...;; 그러자니 여기서부터 출발해야 할 뿐이고...;; 출처 : http://network.hanbitbook.co.kr/view.php?bi_id=1062 저자: 서민우 출처: Embedded World 제목 : 리눅스 커널의 이해(2): 리눅스 커널의 동작 1. 리눅스 커널의 기본적인 동작 이제 리눅스 커널이 어떻게 동작하는지 들여다 보자. 리눅스 커널은 그 소스량은 엄청나지만 역시 커널의 기본적인 동작은 우리가 지금까지 보아온 커널의 동작과 별로 다르지 않다. 덧붙이자면 다른 RTOS도 역시 마찬가지다. system call에 의해 시작하는 리눅스 커널의 일반적인 동작 [그.. 더보기
arm 에서 system call 을 호출할때 4개 이상의 파라미터를 어떻게 처리하는가? 다음과 같이 arm 컴파일러를 지정해 주면 arm 용으로 컴파일이 가능하다. /opt/toolchains/arm-linux-4.1.1/bin/arm-linux-gcc -o test test.c 이때 -S 옵션을 주면 어셈형태의 파일이 나와서 직접 asm 파일을 볼 수 있다. /opt/toolchains/arm-linux-4.1.1/bin/arm-linux-gcc -S test.c 다음과 같이 파라미터가 6개인 sendto system call 에 가상으로 파라미터들을 넣어서 추적해 보았다. #include #include #include int main() { int _s=0x11; void *_msg = (void*)0x22; size_t _len = 0x33; int _flags = 0x44; str.. 더보기