update lab1-8 codes and docs. now version is 0.2
This commit is contained in:
@@ -103,6 +103,22 @@ alloc_proc(void) {
|
||||
* uint32_t flags; // Process flag
|
||||
* char name[PROC_NAME_LEN + 1]; // Process name
|
||||
*/
|
||||
//LAB5 YOUR CODE : (update LAB4 steps)
|
||||
/*
|
||||
* below fields(add in LAB5) in proc_struct need to be initialized
|
||||
* uint32_t wait_state; // waiting state
|
||||
* struct proc_struct *cptr, *yptr, *optr; // relations between processes
|
||||
*/
|
||||
//LAB6 YOUR CODE : (update LAB5 steps)
|
||||
/*
|
||||
* below fields(add in LAB6) in proc_struct need to be initialized
|
||||
* struct run_queue *rq; // running queue contains Process
|
||||
* list_entry_t run_link; // the entry linked in run queue
|
||||
* 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
|
||||
* 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)
|
||||
*/
|
||||
}
|
||||
return proc;
|
||||
}
|
||||
@@ -389,6 +405,15 @@ do_fork(uint32_t clone_flags, uintptr_t stack, struct trapframe *tf) {
|
||||
// 5. insert proc_struct into hash_list && proc_list
|
||||
// 6. call wakup_proc to make the new child process RUNNABLE
|
||||
// 7. set ret vaule using child proc's pid
|
||||
|
||||
//LAB5 YOUR CODE : (update LAB4 steps)
|
||||
/* Some Functions
|
||||
* set_links: set the relation links of process. ALSO SEE: remove_links: lean the relation links of process
|
||||
* -------------------
|
||||
* update step 1: set child proc's parent to current process, make sure current process's wait_state is 0
|
||||
* update step 5: insert proc_struct into hash_list && proc_list, set the relation links of process
|
||||
*/
|
||||
|
||||
fork_out:
|
||||
return ret;
|
||||
|
||||
@@ -771,7 +796,7 @@ user_main(void *arg) {
|
||||
static int
|
||||
init_main(void *arg) {
|
||||
size_t nr_free_pages_store = nr_free_pages();
|
||||
size_t slab_allocated_store = kallocated();
|
||||
size_t kernel_allocated_store = kallocated();
|
||||
|
||||
int pid = kernel_thread(user_main, NULL, 0);
|
||||
if (pid <= 0) {
|
||||
@@ -790,7 +815,7 @@ init_main(void *arg) {
|
||||
assert(list_next(&proc_list) == &(initproc->list_link));
|
||||
assert(list_prev(&proc_list) == &(initproc->list_link));
|
||||
assert(nr_free_pages_store == nr_free_pages());
|
||||
assert(slab_allocated_store == kallocated());
|
||||
assert(kernel_allocated_store == kallocated());
|
||||
cprintf("init check memory pass.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user