다른 시스템 호출 번호를 추가하십시오. SYS_print1
을 callno.h
또는 SYS_fork
및 SYS_read
과 같은 상수가 정의 된 곳에서 정의하십시오.
전화 할 기능을 선택하는 데 사용되는 위치를 찾으십시오. 전화 번호는 mips_syscall()
이어야합니다. 비록이 버전의 소스 코드에서 을 호출하는 데 단지 SYS_reboot
이 사용 된 이유는 확실하지 않습니다. 이 소스 코드 참조가 불완전한 것 같습니다. 코멘트가 제안 :
00049 mips_syscall(struct trapframe *tf)
00050 {
...
00070 switch (callno) {
00071 case SYS_reboot:
00072 err = sys_reboot(tf->tf_a0);
00073 break;
00074
00075 /* Add stuff here */
00076
00077 default:
00078 kprintf("Unknown syscall %d\n", callno);
00079 err = ENOSYS;
00080 break;
00081 }
...
00108 }
이 유사하여
case SYS_print1:
을 추가하고 전용 함수의 기능을 구현,
sys_print1()
을 말한다.
커널 측에 맞아야합니다.
print1()
에 대한 사용자 모드 프로토 타입은 read()
등과 함께 unistd.h
과 같이 선언 할 수 있습니다.
read()
의 사용자 모드 구현이 어셈블리 파일에있을 수 있습니다. 그리고 결국 그것은 MIPS syscall
명령을 C에서 직접 사용할 수 없기 때문에 합리적입니다. 비슷한 방식으로 print1()
을 구현해야합니다 (해당 레지스터에 SYS_print1
로드하고 syscall
실행).
[이 OS/161] (http://www.eecs.harvard.edu/~syrah/os161/)은 무엇입니까? –
'printone()'시스템 호출은 어디로 쓰이게 될까요? 파일 기술자를 제공 할 것인가 아니면 콘솔에 쓸 것인지, 또는 무엇을 할 것인가? –
OS/161을 가르치는 O/S를위한 monicker로 사용하는 대학이 2 개 이상있는 것 같습니다. –