diff --git a/kernel-src/include/kernel/scheduler.h b/kernel-src/include/kernel/scheduler.h index 81274101..4afb7304 100644 --- a/kernel-src/include/kernel/scheduler.h +++ b/kernel-src/include/kernel/scheduler.h @@ -82,6 +82,7 @@ proc_t *sched_newproc(); vnode_t *sched_getcwd(); vnode_t *sched_getroot(); thread_t *sched_newthread(void *ip, size_t kstacksize, int priority, proc_t *proc, void *ustack); - +void sched_destroyproc(proc_t *); +void sched_destroythread(thread_t *); #endif diff --git a/kernel-src/sys/scheduler.c b/kernel-src/sys/scheduler.c index 330620c5..698bb50b 100644 --- a/kernel-src/sys/scheduler.c +++ b/kernel-src/sys/scheduler.c @@ -40,7 +40,9 @@ proc_t *sched_newproc() { slab_free(processcache, proc); return NULL; } + // TODO move this to slab + proc->state = SCHED_PROC_STATE_NORMAL; proc->threadtablesize = 1; proc->runningthreadcount = 1; SPINLOCK_INIT(proc->lock); @@ -97,9 +99,9 @@ void sched_destroythread(thread_t *thread) { } void sched_destroyproc(proc_t *proc) { - //free(proc->threads); - //free(proc->fd); - //slab_free(processcache, proc); + free(proc->threads); + free(proc->fd); + slab_free(processcache, proc); } static thread_t *runqueuenext(int minprio) {