add system call in linux 2.6 (리눅스 2.6 시스템 콜 추가)

32bit 리눅스의 경우

1. (커널 폴더)/arch/x86/kernel/syscall_table_32.S에 아래와같이 sys_addcall을 추가합니다.


2. (커널 폴더)/arch/x86/include/asm/unistd_32.h에 아래와같이 341번을 추가하고
 #define NR_syscalls 의 넘버를 +1 증가시켜줍니다.


64bit 리눅스의 경우

3. (커널 폴더)/arch/x86/include/asm/unistd_64.h에 아래와같이 add부분을 추가해줍니다.


아래부터는 공통입니다.

4. (커널 폴더)/include/linux/syscalls.h에 아래 /**add**/부분과 같이 함수 원형을 선언해줍니다.


5. (커널 폴더)/kernel 안에 addcall.c를 아래와같이 작성한 뒤 gcc -c addcall.c를 해줍니다.


6. (커널 폴더)/kernel 안의 Makefile에 다음과 같이 추가해줍니다.


7. 커널 컴파일을 실행해줍니다.

8. 테스트 프로그램을 작성합니다.


9. 아래와 같이 결과값을 확인 할 수 있습니다.(오른쪽)
    dmesg를 이용하면 아래와같이 [kernel] i = 5 를 확인 할 수 있습니다.(왼쪽)