summaryrefslogtreecommitdiffstats
path: root/src/userprog/syscall.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/userprog/syscall.c')
-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 ();
}