Add in syscall hash helper functions for open_file struct: fd_hash and fd_less, w/ E

This commit is contained in:
sBubshait
2024-11-08 15:12:08 +00:00
parent b112824a64
commit 5bbe7a03c0
2 changed files with 28 additions and 0 deletions

View File

@@ -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.

View File

@@ -1,8 +1,13 @@
#ifndef USERPROG_SYSCALL_H
#define USERPROG_SYSCALL_H
#include <hash.h>
typedef int pid_t;
void syscall_init (void);
unsigned fd_hash (const struct hash_elem *element, void *aux);
bool fd_less (const struct hash_elem *a, const struct hash_elem *b, void *aux);
#endif /* userprog/syscall.h */