92 {
93
95 switch (f->R.rax)
96 {
99 break;
102 break;
104 f->R.rax =
fork (f->R.rdi, f);
105 break;
107 if (
exec (f->R.rdi) == -1)
109 break;
111 f->R.rax =
wait (f->R.rdi);
112 break;
114 f->R.rax =
create (f->R.rdi, f->R.rsi);
115 break;
117 f->R.rax =
remove (f->R.rdi);
118 break;
120 f->R.rax =
open (f->R.rdi);
121 break;
124 break;
127 f->R.rax =
read (f->R.rdi, f->R.rsi, f->R.rdx);
128 break;
131 f->R.rax =
write (f->R.rdi, f->R.rsi, f->R.rdx);
132 break;
134 seek (f->R.rdi, f->R.rsi);
135 break;
137 f->R.rax =
tell (f->R.rdi);
138 break;
141 break;
143 f->R.rax =
mmap(f->R.rdi, f->R.rsi, f->R.rdx, f->R.r10, f->R.r8);
144 break;
147 break;
148 default:
150 break;
151 }
152
153
154}
int filesize(int fd)
파일의 크기를 알려주는 시스템 콜
Definition: syscall.c:114
bool create(const char *file, unsigned initial_size)
파일을 생성하는 시스템 콜
Definition: syscall.c:99
void close(int fd)
열린 파일을 닫는 시스템 콜
Definition: syscall.c:139
void * mmap(void *addr, size_t length, int writable, int fd, off_t offset)
열린 파일을 가상 주소 공간에 매핑한다.
Definition: syscall.c:149
int wait(pid_t pid)
pid에 해당하는 자식 프로세스가 종료될 때까지 기다린다.
Definition: syscall.c:94
pid_t fork(const char *thread_name)
Definition: syscall.c:84
int open(const char *file)
파일을 열 때 사용하는 시스템 콜
Definition: syscall.c:109
bool remove(const char *file)
파일을 샂게하는 시스템 콜
Definition: syscall.c:104
int write(int fd, const void *buffer, unsigned size)
열린 파일에 데이터를 쓰는 시스템 콜
Definition: syscall.c:124
int exec(const char *file)
cmd_line으로 들어온 실행 파일을 실행한다.
Definition: syscall.c:89
void seek(int fd, unsigned position)
열린 파일의 위치를 이동하는 시스템 콜
Definition: syscall.c:129
unsigned tell(int fd)
열린 파일의 위치를 알려주는 시스템 콜
Definition: syscall.c:134
int read(int fd, void *buffer, unsigned size)
열린 파일의 데이터를 읽는 시스템 콜
Definition: syscall.c:119
void munmap(void *addr)
mmap으로 매핑된 주소를 해제한다.
Definition: syscall.c:154
void halt(void)
핀토스 자체를 종료시키는 시스템 콜
Definition: syscall.c:72
@ SYS_MMAP
Definition: syscall-nr.h:23
@ SYS_WRITE
Definition: syscall-nr.h:17
@ SYS_TELL
Definition: syscall-nr.h:19
@ SYS_HALT
Definition: syscall-nr.h:7
@ SYS_READ
Definition: syscall-nr.h:16
@ SYS_CREATE
Definition: syscall-nr.h:12
@ SYS_CLOSE
Definition: syscall-nr.h:20
@ SYS_EXEC
Definition: syscall-nr.h:10
@ SYS_MUNMAP
Definition: syscall-nr.h:24
@ SYS_EXIT
Definition: syscall-nr.h:8
@ SYS_OPEN
Definition: syscall-nr.h:14
@ SYS_FILESIZE
Definition: syscall-nr.h:15
@ SYS_FORK
Definition: syscall-nr.h:9
@ SYS_WAIT
Definition: syscall-nr.h:11
@ SYS_REMOVE
Definition: syscall-nr.h:13
@ SYS_SEEK
Definition: syscall-nr.h:18
static void check_buffer(void *buffer, unsigned size, bool writable)
Definition: syscall.c:485