diff --git a/inc/process.h b/inc/process.h index c24ddfa..f14f870 100644 --- a/inc/process.h +++ b/inc/process.h @@ -27,6 +27,8 @@ struct Process *Process(size_t proc_id, size_t total_pages_owned, size_t ws_size); +void PROCESS_destroy(struct Process *p); + size_t PROCESS_run_for(struct Process *p, size_t time_bits); void PROCESS_change_working_set(struct Process *p); diff --git a/src/kernel.c b/src/kernel.c index 49c8c5e..d71d029 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -119,7 +119,7 @@ RUNQ_remove_current_process(void) break; } - free(tp); + PROCESS_destroy(tp); runq->proc_amount--; } diff --git a/src/process.c b/src/process.c index e0b3b68..e851155 100644 --- a/src/process.c +++ b/src/process.c @@ -29,6 +29,14 @@ Process(size_t proc_id, size_t max_accesses, size_t total_pages_owned, size_t ws return p; } +void +PROCESS_destroy(struct Process *p) +{ + free(p->pt); + free(p->ws); + free(p); +} + size_t PROCESS_run_for(struct Process *p, size_t time_bits) {