@@ -36,6 +36,7 @@ void process_scheduler_stash_state() {
3636 if (process -> state == STATE_EXIT ) {
3737 // process unallocate ready to be killed
3838 process -> state = STATE_COLD ;
39+ // print_log("process_killed: %d", id);
3940 } else if (process -> state == STATE_RUNNING ) {
4041 // process move running process to ready
4142 process -> state = STATE_READY ;
@@ -49,7 +50,11 @@ int process_scheduler_get_next_pid(int lastpid) {
4950}
5051
5152static void handle_fork (unsigned int ppid , struct Process * process ) {
53+ // if(process->flagirq0_fork_ready>0 && ppid!=2) {
54+ // print_log("[ignore] handle fork for %d", ppid);
55+ // }
5256 if (process -> flagirq0_fork_ready > 0 ) {
57+ // print_log("handle fork for %d", ppid);
5358 int npid = process_fork (ppid );
5459 if (npid < 0 ) {
5560 process -> flagirq0_fork_ready = -1 ; // request failed;
@@ -76,15 +81,16 @@ void process_scheduler(int *_e_ip, int *_e_cs, int *_e_sp, int *_e_ss) {
7681
7782 struct Process * process = get_process (pid );
7883 process_scheduler_stash_state ();
79- handle_fork (pid , process );
8084
8185 if (process -> state != STATE_COLD ) {
8286 // if last process is still alive
8387 process -> cs = e_cs ;
8488 process -> ip = e_ip ;
8589 process -> ss = e_ss ;
8690 process -> sp = e_sp ;
91+ handle_fork (pid , process );
8792 }
93+
8894 // last process can be
8995 // - RUNNING
9096 // - BLOCK # TODO: implement
@@ -96,7 +102,8 @@ void process_scheduler(int *_e_ip, int *_e_cs, int *_e_sp, int *_e_ss) {
96102 }
97103
98104 if (pid != npid ) {
99- print_log ("[process_scheduler] pid: %d -> %d" , pid , npid );
105+ // print_log("[process_scheduler] pid: %d -> %d", pid, npid);
106+ // print_log("[process_scheduler] pid: %d -> %d, at eip: %x", pid, npid, e_ip);
100107 }
101108
102109 struct Process * nprocess = get_process (npid );
0 commit comments