summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2021-02-04 10:56:18 +0100
committerGustav Sörnäs <gustav@sornas.net>2021-02-05 13:01:40 +0100
commit7826c4030ea1651e31463cd7986de4007d8e041b (patch)
tree7189233a3ea7caa3f167c250f3db43f8c3085c8e
parent61c83ae07199aef6750b1305305f404ada302ff0 (diff)
downloadpintos-7826c4030ea1651e31463cd7986de4007d8e041b.tar.gz
syscall_handler(): parse syscall number
-rw-r--r--src/userprog/syscall.c11
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 ();
}