리눅스 시스템 콜 함수를 만드는 중 궁금한점이 생겼습니다.
글쓴이: gyunn / 작성시간: 목, 2014/05/29 - 2:18오전
우분투 OS이고 커널은 3.14.4 버전을 사용하고 있습니다. 지금 새로운 시스템 콜 함수를 만드는 공부를 하고 있는데
include<linux/unistd.h>
include<linux/errno.h>
include<linux/kernel.h>
include<linux/sched.h>
asmlinkage int sys_add(int a, int b) { return a+b;
}
include<linux/unistd.h>
include<linux/errno.h>
include<linux/kernel.h>
include<linux/sched.h>
asmlinkage int sys_sub(int a, int b) { return a-b;
}
include<linux/unistd.h>
include<linux/errno.h>
include<linux/kernel.h>
include<linux/sched.h>
asmlinkage int sys_mul(int a, int b) { return a*b;
}
include<linux/unistd.h>
include<linux/errno.h>
include<linux/kernel.h>
include<linux/sched.h>
asmlinkage int sys_div(int a, int b) { if(b==0) // b가 분모라 가정. return -1; else return a/b; }
이 함수들을 구현하고 시스템 콜 함수 번호 할당하고, 원형 선언해주고, object파일 목록 갱신해주고, 다시 커널을 컴파일 한후 터미널에서 테스트하면, 덧셈은 제대로 결과값이 나오는데 다른 함수들은 모두 반환값이 -1이 나옵니다. 시스템 콜 함수를 구현 할때는 C언어 작성하듯이 하면 안되는 건가요?
현재 제가 적은 소스에 문제점을 발견하시거나 구현할때 도움될 만한 레퍼런스가 있다면 가르쳐주시면 감사하겠습니다.ㅠㅠ
Forums:
댓글 달기