커널의 데이타를 사용자 공간으로 보내주는 put_user()에 대한 소스입니다.
글쓴이: xhdlland / 작성시간: 금, 2006/03/31 - 3:27오후
// 응용 프로그램
관련된 헤드 파일 생략
_syscall3(int, newsys, int, arg1, int arg2, int*, buf);
int main()
{
int *d;
newsyscall(2, 3, &d);
printf("arg1 + arg2 = %d\n", d);
return 0;
}
//커널 프로그램
관련된 헤드 파일 생략
asmlinkage int newsyscall(int a, int b, int *buf)
{
int r;
r = a + b;
put_user(r, buf);
return 0;
}
위와 같이 프로그램 하여 결과를 출력하면
arg1 + arg2 = 1223342234 <--- 의미 없는 숫자인듯해요..
이렇게 출력되는데 무엇이 잘못 되었는지 고수님 조언 부탁드려요 주소의 전달이 잘못 된건가요
전 5라는 결과물을 얻고 싶은데 안되네요 무엇이 잘못 된건지 가르쳐주세요
Forums:
int *d
가 아니라
아닐까요?
댓글 달기