diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2021-02-04 10:56:18 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2021-02-05 13:01:40 +0100 |
| commit | 7826c4030ea1651e31463cd7986de4007d8e041b (patch) | |
| tree | 7189233a3ea7caa3f167c250f3db43f8c3085c8e | |
| parent | 61c83ae07199aef6750b1305305f404ada302ff0 (diff) | |
| download | pintos-7826c4030ea1651e31463cd7986de4007d8e041b.tar.gz | |
syscall_handler(): parse syscall number
| -rw-r--r-- | src/userprog/syscall.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/userprog/syscall.c b/src/userprog/syscall.c index 370c89b..e15555e 100644 --- a/src/userprog/syscall.c +++ b/src/userprog/syscall.c @@ -15,6 +15,15 @@ syscall_init (void) static void syscall_handler (struct intr_frame *f UNUSED) { - printf ("system call!\n"); + int syscall_number = *((int *)f->esp); + switch (syscall_number) { + case 9: + // printf + printf ("printf: %s", *((char **)(f->esp+8))); + break; + default: + printf ("kernel: unknown syscall '%d'\n", syscall_number); + break; + } thread_exit (); } |
