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에 다음과 같이 추가해줍니다.
8. 테스트 프로그램을 작성합니다.
9. 아래와 같이 결과값을 확인 할 수 있습니다.(오른쪽)
dmesg를 이용하면 아래와같이 [kernel] i = 5 를 확인 할 수 있습니다.(왼쪽)