Add support for some basic system calls and args handling correctly. #29

Merged
sb3923 merged 49 commits from system-calls into master 2024-11-07 19:36:30 +00:00
5 changed files with 235 additions and 20 deletions
Showing only changes of commit f4290c31f3 - Show all commits

View File

@@ -1,5 +1,6 @@
#include "userprog/syscall.h"
#include "devices/shutdown.h"
#include "devices/input.h"
#include "threads/vaddr.h"
#include "threads/interrupt.h"
#include "threads/thread.h"
@@ -150,10 +151,29 @@ syscall_filesize (int fd UNUSED)
}
static int
syscall_read (int fd UNUSED, void *buffer UNUSED, unsigned size UNUSED)
syscall_read (int fd, void *buffer, unsigned size)
{
//TODO
return 0;
/* Only console (fd = 0) or other files, not including STDOUT, (fd > 1) are
allowed. */
if (fd < 0 && fd != STDOUT_FILENO)
return -1;
validate_user_pointer (buffer, size);
if (fd == STDIN_FILENO)
{
/* Reading from the console. */
char *write_buffer = buffer;
for (int i = 0; i < size; i++)
write_buffer[i] = input_getc ();
return size;
}
else
{
/* Reading from a file. */
return 0; // TODO: Implement Write to Files
}
}
static int