스템콜 추가

 

asmlinkage : 어셈블리 언어로 구현된 함수에서 호출될 때 사용하는 keyword

 

 

arch/x86/kernel/syscall_table_32.S

최신커널 : /arch/x86/syscalls/syscall_*.tbl

   1 ENTRY(sys_call_table)
  2     .long sys_restart_syscall   /* 0 - old "setup()" system call, used for restarting */
  3     .long sys_exit
  4     .long ptregs_fork
192     .long ptregs_vfork  /* 190 */

339     .long sys_bit               /* 337 */   //새로 추가

 

어셈블러 지시자들 (자세한 내용은 아래 asm 링크 참고)

 

 

 

 

 

 

 

/usr/src/linux-2.6.32.65/arch/x86/include/asm/unistd_64.h

최근 /arch/x86/syscalls/syscall_*tbl

 134 #define __NR_clone              56
135 __SYSCALL(__NR_clone, stub_clone)
136 #define __NR_fork               57
137 __SYSCALL(__NR_fork, stub_fork)
138 #define __NR_vfork              58
139 __SYSCALL(__NR_vfork, stub_vfork)
#define __NR_perf_event_open            298

 

664 #define __NR_bit                        299
665 __SYSCALL(__NR_bit, sys_bit)

 

#define NR_syscalls (__NR_syscall_max + 1)   --> 따라가서 변경

///usr/src/linux-2.6.32.65/include/asm/asm-offsets.h

 

ARM

/usr/src/linux-2.6.32.65/arch/arm/include/asm/unistd.h

 시스템 콜 번호를 정의한다.

 

 

 

/usr/src/linux-2.6.32.65/include/linux/syscalls.h

kernel 에 소스추가 및 Makefile 에 파일 추가

작성 후 Makefile 에 소스 추가 및 재 컴파일 한다.

 

 

함수추가는 : /include/linux/syscalls.h

 

어플리케이션에서 시스템 콜 호출

 

 

--------------------------------------------------------------------

신규버전

 

 

 

 

참고

asm   : http://korea.gnu.org/manual/release/as/as-ko_7.html

KLDP : http://kldp.org/node/91565

http://harryp.tistory.com/69

 http://harryp.tistory.com/69

linux system call 의 호출 구조   http://www.hanbit.co.kr/network/view.html?bi_id=1062  저자 : 서민우     출처: Embedded World

 


 

'리눅스커널' 카테고리의 다른 글

커널컴파일  (0) 2015.04.17
시스템콜  (0) 2015.04.16
스와퍼(Swapper)프로세스  (0) 2015.04.15
schedule()함수  (0) 2015.04.15
프로세스1-3  (0) 2015.04.14

+ Recent posts