Update thread and syscall to use local fd counter instead global one, preventing overflow
This commit is contained in:
@@ -688,6 +688,7 @@ init_thread (struct thread *t, const char *name, int nice, int priority,
|
||||
t->recent_cpu = recent_cpu;
|
||||
t->priority = t->base_priority;
|
||||
|
||||
t->fd_counter = MINIMUM_USER_FD;
|
||||
t->exit_status = -1;
|
||||
list_init (&t->child_results);
|
||||
|
||||
|
||||
@@ -32,6 +32,9 @@ typedef int tid_t;
|
||||
#define NICE_DEFAULT 0 /* Default niceness. */
|
||||
#define NICE_MAX 20 /* Highest niceness. */
|
||||
|
||||
/* File Descriptors. */
|
||||
#define MINIMUM_USER_FD 2 /* Minimum file descriptor for user programs. */
|
||||
|
||||
/* A process result, synchronised between parent and child. */
|
||||
struct process_result
|
||||
{
|
||||
@@ -137,7 +140,9 @@ struct thread
|
||||
#ifdef USERPROG
|
||||
/* Owned by userprog/process.c. */
|
||||
uint32_t *pagedir; /* Page directory. */
|
||||
struct hash open_files; /* Hash Table of FD -> Struct File */
|
||||
unsigned int fd_counter; /* File descriptor counter for thread's
|
||||
open files. */
|
||||
struct hash open_files; /* Hash Table of FD -> Struct File. */
|
||||
#endif
|
||||
|
||||
/* Owned by thread.c. */
|
||||
|
||||
Reference in New Issue
Block a user