Skip to content
Snippets Groups Projects
Commit 9ad37f5d authored by a2-stratford's avatar a2-stratford
Browse files

Improved file_search function

line 80..106: Added comments and improved functionality
parent eb3d8de8
Branches
No related tags found
2 merge requests!22Merge Feature/system calls,!6Implemented filesize system call
......@@ -4,7 +4,8 @@
#include "system_calls.h"
#include "threads/interrupt.h"
#include "threads/thread.h"
#include "lib/kernel/list.h" // Dependencies for
// Dependency for list_elem struct and list_next / is_tail functions
#include "lib/kernel/list.h"
/* System call numbers. */
......@@ -88,15 +89,30 @@ syscall_handler (struct intr_frame *f UNUSED)
static struct list *file_list;
// Goes through all the files in the file_list and looks for the
/* Goes through all the files in the file_list and looks for the given file
* Descriptor.
*/
void file_search(struct file_map *f) {
// Creates a struct to hold the currently checked file
struct file_map *curr_file;
// Creates the list element to test for end of list
struct list_elem *list_element;
*list_element = *list_begin(file_list);
// Loop to check each file in the linked list in turn
while ((curr_file->file_descriptor != f->file_descriptor) &&
(is_tail(curr_file->list_element) == false)
(is_tail(list_element) == false)
) {
*list_element = curr_file->list_element;
// Swaps the list_element for the next one in place
list_next(list_element);
}
// Copies list_element to current file
curr_file->list_element = *list_element;
// Checks if file has been found returning NULL if not or the file if it has
if (curr_file->file_descriptor != f->file_descriptor) {
f->file = NULL;
}
else {
f = curr_file;
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment