diff --git a/Makefile.build b/Makefile.build index 30d709bed0682faf702cab87e8fe75b2e85cffd3..2fb7073287800f5c80383e3a10287304011d6a18 100644 --- a/Makefile.build +++ b/Makefile.build @@ -67,6 +67,7 @@ userprog_SRC += userprog/syscall_exit.c userprog_SRC += userprog/syscall_halt.c userprog_SRC += userprog/syscall_wait.c userprog_SRC += userprog/syscall_create.c +userprog_SRC += userprog/syscall_write.c # No virtual memory code yet. #vm_SRC = vm/file.c # Some file. diff --git a/userprog/syscall.c b/userprog/syscall.c index c78175f256fa5a9e0b31bda1d2ae6fe2fb2bdd07..24a265420b8dd82f46874e7cd85af02ca9f36c36 100644 --- a/userprog/syscall.c +++ b/userprog/syscall.c @@ -70,9 +70,11 @@ syscall_handler (struct intr_frame *f UNUSED) case SYSCALL_CREATE: syscall_create(f); break; + case SYSCALL_WRITE: + syscall_write(f); + break; default: printf ("WARNING: Invalid Syscall (%d)\n", syscall_number); thread_exit (); } - // TODO: remove this call to exit as we don't want all syscalls to make the thread exit } diff --git a/userprog/syscall_write.c b/userprog/syscall_write.c new file mode 100644 index 0000000000000000000000000000000000000000..cf476a75ac71b4cca1b482a88a46d47f4fb97edc --- /dev/null +++ b/userprog/syscall_write.c @@ -0,0 +1,12 @@ +/* + * The Write System Call + * + * Authored by Joshua Saxby + */ +#include "system_calls.h" +#include "threads/interrupt.h" + +void syscall_write(struct intr_frame *f) { + // TODO: implement me! + (void*)0; +} diff --git a/userprog/system_calls.h b/userprog/system_calls.h index 6fadcd1f7e3d556e4884521bb746da97de11b6e0..be83270c704309e07150583226503aafc2ce1c82 100644 --- a/userprog/system_calls.h +++ b/userprog/system_calls.h @@ -35,6 +35,13 @@ void syscall_wait(struct intr_frame *f); */ void syscall_create(struct intr_frame *f); +/* + * Writes size bytes from buffer to the open file fd. + * Returns the number of bytes actually written, which may be less than size if + * some bytes could not be written. + */ +void syscall_write(struct intr_frame *f); + /* * NOTE: There are more system calls implemented by Pintos but we are not * implementing them because the assignment brief does not ask of it.