|
@ -41,7 +41,6 @@ struct context { |
|
|
extern list_entry_t proc_list; |
|
|
extern list_entry_t proc_list; |
|
|
|
|
|
|
|
|
struct inode; |
|
|
struct inode; |
|
|
struct fs_struct; |
|
|
|
|
|
|
|
|
|
|
|
struct proc_struct { |
|
|
struct proc_struct { |
|
|
enum proc_state state; // Process state |
|
|
enum proc_state state; // Process state |
|
@ -56,7 +55,7 @@ struct proc_struct { |
|
|
uintptr_t cr3; // CR3 register: the base addr of Page Directroy Table(PDT) |
|
|
uintptr_t cr3; // CR3 register: the base addr of Page Directroy Table(PDT) |
|
|
uint32_t flags; // Process flag |
|
|
uint32_t flags; // Process flag |
|
|
char name[PROC_NAME_LEN + 1]; // Process name |
|
|
char name[PROC_NAME_LEN + 1]; // Process name |
|
|
list_entry_t list_link; // Process link list |
|
|
|
|
|
|
|
|
list_entry_t list_link; // Process link list |
|
|
list_entry_t hash_link; // Process hash list |
|
|
list_entry_t hash_link; // Process hash list |
|
|
int exit_code; // exit code (be sent to parent proc) |
|
|
int exit_code; // exit code (be sent to parent proc) |
|
|
uint32_t wait_state; // waiting state |
|
|
uint32_t wait_state; // waiting state |
|
@ -65,7 +64,7 @@ struct proc_struct { |
|
|
list_entry_t run_link; // the entry linked in run queue |
|
|
list_entry_t run_link; // the entry linked in run queue |
|
|
int time_slice; // time slice for occupying the CPU |
|
|
int time_slice; // time slice for occupying the CPU |
|
|
skew_heap_entry_t lab6_run_pool; // FOR LAB6 ONLY: the entry in the run pool |
|
|
skew_heap_entry_t lab6_run_pool; // FOR LAB6 ONLY: the entry in the run pool |
|
|
uint32_t lab6_stride; // FOR LAB6 ONLY: the current stride of the process |
|
|
|
|
|
|
|
|
uint32_t lab6_stride; // FOR LAB6 ONLY: the current stride of the process |
|
|
uint32_t lab6_priority; // FOR LAB6 ONLY: the priority of process, set by lab6_set_priority(uint32_t) |
|
|
uint32_t lab6_priority; // FOR LAB6 ONLY: the priority of process, set by lab6_set_priority(uint32_t) |
|
|
struct files_struct *filesp; // the file related info(pwd, files_count, files_array, fs_semaphore) of process |
|
|
struct files_struct *filesp; // the file related info(pwd, files_count, files_array, fs_semaphore) of process |
|
|
}; |
|
|
}; |
|
@ -98,7 +97,7 @@ int do_yield(void); |
|
|
int do_execve(const char *name, int argc, const char **argv); |
|
|
int do_execve(const char *name, int argc, const char **argv); |
|
|
int do_wait(int pid, int *code_store); |
|
|
int do_wait(int pid, int *code_store); |
|
|
int do_kill(int pid); |
|
|
int do_kill(int pid); |
|
|
//FOR LAB6, set the process's priority (bigger value will get more CPU time) |
|
|
|
|
|
|
|
|
//FOR LAB6, set the process's priority (bigger value will get more CPU time) |
|
|
void lab6_set_priority(uint32_t priority); |
|
|
void lab6_set_priority(uint32_t priority); |
|
|
int do_sleep(unsigned int time); |
|
|
int do_sleep(unsigned int time); |
|
|
#endif /* !__KERN_PROCESS_PROC_H__ */ |
|
|
#endif /* !__KERN_PROCESS_PROC_H__ */ |
|
|