Implement syscall for file creation, with relevant locks w/ S.

This commit is contained in:
EDiasAlberto
2024-11-08 14:34:08 +00:00
parent 26e38be761
commit a8676f2e09

View File

@@ -1,14 +1,18 @@
#include "userprog/syscall.h" #include "userprog/syscall.h"
#include "devices/shutdown.h" #include "devices/shutdown.h"
#include "devices/input.h" #include "devices/input.h"
#include "filesys/filesys.h"
#include "threads/vaddr.h" #include "threads/vaddr.h"
#include "threads/interrupt.h" #include "threads/interrupt.h"
#include "threads/thread.h" #include "threads/thread.h"
#include "threads/synch.h"
#include "userprog/process.h" #include "userprog/process.h"
#include "userprog/pagedir.h" #include "userprog/pagedir.h"
#include <stdio.h> #include <stdio.h>
#include <syscall-nr.h> #include <syscall-nr.h>
static struct lock filesys_lock;
static void syscall_handler (struct intr_frame *); static void syscall_handler (struct intr_frame *);
/* A syscall_function is a function that receives up to 3 arguments, the /* A syscall_function is a function that receives up to 3 arguments, the
@@ -68,6 +72,7 @@ void
syscall_init (void) syscall_init (void)
{ {
intr_register_int (0x30, 3, INTR_ON, syscall_handler, "syscall"); intr_register_int (0x30, 3, INTR_ON, syscall_handler, "syscall");
lock_init (&filesys_lock);
} }
static void static void
@@ -126,8 +131,13 @@ syscall_wait (pid_t pid)
static bool static bool
syscall_create (const char *file UNUSED, unsigned initial_size UNUSED) syscall_create (const char *file UNUSED, unsigned initial_size UNUSED)
{ {
//TODO validate_user_pointer (file, 1);
return 0;
lock_acquire (&filesys_lock);
bool status = filesys_create (file, initial_size);
lock_release (&filesys_lock);
return status;
} }
static bool static bool