티스토리 뷰



 역시나 내가 기억하려고 하는 포스팅..


 과제 #2를 하던 중에 문제가 생겼다. 새로 만든 system call sys_count가 자꾸 이상한 쓰레기값을 ㅡㅡ 뱉어내는 것.

그래서 코드를 다시 살펴보니까 분명 user.h 에서는 sys_count function이 int sys_count(int)로 선언되어 있는데(당연히 알고 싶은 system call의 종류를 input argument로 받아야 하니까..), 정작 진짜 함수가 있는 syscall.c에서는 int sys_count(void)로 선언되어 있었다.

 그래서 혼자 왜????? 하고 혼란에 빠져있었는데 구글링을 통해 User-level function에서 Kernel-level function으로 바로 argument를 전달할 수 없다는걸 알아냄. 전달하기 위해서는 xv6의 자체적인 built-in function을 사용해야 한다고 한다. argint, argptr, argstr 가 있다고 하는데 나는 integer를 전달할 것이기 때문에 argint를 사용하면 됐다.


argint(0, &n)

 위처럼 쓰면 첫번째(0) argument를 n으로 전달할 수 있다. 만약 두번째 argument를 전달하고 싶으면 0을 1로 변경하면 된다.


 아무튼 argint 사용해서 바꿨더니 바로 결과가 제대로 나왔다ㅠ 이것도 모르고 헛고생했네.. 


 오늘의 교훈 : 구글링을 생활화하자.. 

 내 인생 화이팅..





'Self Study > Operating System' 카테고리의 다른 글

[QSIM] (초보자가..) QSIM 사용하기  (0) 2019.01.23
[Linux] Vim 에디터 단축키 정리  (0) 2018.09.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함