Add in syscall hash helper functions for open_file struct: fd_hash and fd_less, w/ E
This commit is contained in:
@@ -13,6 +13,13 @@
|
||||
|
||||
static struct lock filesys_lock;
|
||||
|
||||
struct open_file
|
||||
{
|
||||
int fd; /* File Descriptor / Identifier */
|
||||
struct file *file; /* Pointer to the associated file */
|
||||
struct hash_elem elem; /* elem for a hash table */
|
||||
};
|
||||
|
||||
static void syscall_handler (struct intr_frame *);
|
||||
|
||||
/* A syscall_function is a function that receives up to 3 arguments, the
|
||||
@@ -239,6 +246,22 @@ syscall_close (int fd UNUSED)
|
||||
//TODO
|
||||
}
|
||||
|
||||
unsigned
|
||||
fd_hash (const struct hash_elem *element, void *aux UNUSED)
|
||||
{
|
||||
return hash_int (hash_entry (element, struct open_file, elem)->fd);
|
||||
}
|
||||
|
||||
bool
|
||||
fd_less (const struct hash_elem *a_, const struct hash_elem *b_,
|
||||
void *aux UNUSED)
|
||||
{
|
||||
struct open_file *a = hash_entry (a_, struct open_file, elem);
|
||||
struct open_file *b = hash_entry (b_, struct open_file, elem);
|
||||
|
||||
return a->fd < b->fd;
|
||||
}
|
||||
|
||||
/* Validates if a block of memory starting at PTR and of size SIZE bytes is
|
||||
fully contained within user virtual memory. Kills the thread (by calling
|
||||
thread_exit) if the memory is invalid. Otherwise, returns the PTR given.
|
||||
|
||||
Reference in New Issue
Block a user