diff options
author | Michael Foiani <mfoiani@cs.brown.edu> | 2024-02-11 04:05:38 -0500 |
---|---|---|
committer | Michael Foiani <mfoiani@cs.brown.edu> | 2024-02-11 04:05:38 -0500 |
commit | c2cebabba05eff0436faf90bbd691c1e36f7013c (patch) | |
tree | 395bd6c7513b028c82b9c4cd5ffc1ebf8e1787ca /kernel | |
parent | 65ece110519f88227039921b09dab60ec4d3d982 (diff) |
add debug statements and start some testing
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/main/kmain.c | 14 | ||||
-rw-r--r-- | kernel/proc/kthread.c | 4 | ||||
-rw-r--r-- | kernel/proc/proc.c | 4 | ||||
-rw-r--r-- | kernel/proc/sched.c | 2 | ||||
-rw-r--r-- | kernel/test/proctest.c | 2 | ||||
-rw-r--r-- | kernel/util/debug.c | 2 |
6 files changed, 25 insertions, 3 deletions
diff --git a/kernel/main/kmain.c b/kernel/main/kmain.c index da8e1be..1d61270 100644 --- a/kernel/main/kmain.c +++ b/kernel/main/kmain.c @@ -86,6 +86,8 @@ void kmain() for (size_t i = 0; i < sizeof(init_funcs) / sizeof(init_funcs[0]); i++) init_funcs[i](); + dbg(DBG_PROC, "Starting init process\n"); + initproc_start(); panic("\nReturned to kmain()\n"); } @@ -164,7 +166,15 @@ static void *initproc_run(long arg1, void *arg2) // dbg(DBG_THR, "Thread: %s\n", thread->kt_proc->p_name); // } - dbg(DBG_INIT, "%s", "In main thread!"); + proctest_main(0, NULL); + + dbg(DBG_PROC, "%s", "In main thread!"); + + // see if there are any children to wait for + while (do_waitpid(-1, 0, 0) != -ECHILD) + { + // do nothing + } return NULL; } @@ -185,6 +195,8 @@ void initproc_start() { // NOT_YET_IMPLEMENTED("PROCS: initproc_start"); + dbg(DBG_PROC, "Setting up the initial process and preparing it to run\n"); + proc_t *init_proc = proc_create("init"); KASSERT(init_proc != NULL); diff --git a/kernel/proc/kthread.c b/kernel/proc/kthread.c index 5f707c3..42beb77 100644 --- a/kernel/proc/kthread.c +++ b/kernel/proc/kthread.c @@ -69,6 +69,8 @@ kthread_t *kthread_create(proc_t *proc, kthread_func_t func, long arg1, void *arg2) { // NOT_YET_IMPLEMENTED("PROCS: kthread_create"); + dbg(DBG_THR, "ATTEMPT to create a new thread with proc name=%s, id=%d\n", proc->p_name, proc->p_pid); + kthread_t *new_thread = slab_obj_alloc(kthread_allocator); if (new_thread == NULL) { @@ -97,6 +99,8 @@ kthread_t *kthread_create(proc_t *proc, kthread_func_t func, long arg1, list_init(&new_thread->kt_mutexes); new_thread->kt_recent_core = 0; + dbg(DBG_THR, "SUCCESFULLY created a new thread with proc name=%s, id=%d\n", proc->p_name, proc->p_pid); + return new_thread; } diff --git a/kernel/proc/proc.c b/kernel/proc/proc.c index fd253f6..ef8245d 100644 --- a/kernel/proc/proc.c +++ b/kernel/proc/proc.c @@ -181,6 +181,8 @@ proc_t *proc_create(const char *name) return NULL; } + dbg(DBG_PROC, "creating process name=%s & pid =%d\n", name, proc_pid); + proc_t *proc = (proc_t *)slab_obj_alloc(proc_allocator); if (proc == NULL) { @@ -378,7 +380,7 @@ void proc_destroy(proc_t *proc) vmmap_destroy(&proc->p_vmmap); #endif - dbg(DBG_THR, "destroying P%d\n", proc->p_pid); + dbg(DBG_PROC, "destroying P%d\n", proc->p_pid); KASSERT(proc->p_pml4); pt_destroy(proc->p_pml4); diff --git a/kernel/proc/sched.c b/kernel/proc/sched.c index 26d0b22..c4f1d5a 100644 --- a/kernel/proc/sched.c +++ b/kernel/proc/sched.c @@ -270,6 +270,8 @@ void sched_make_runnable(kthread_t *thr) { // NOT_YET_IMPLEMENTED("PROCS: sched_make_runnable"); + dbg(DBG_SCHED, "Making thread with proc pid %d runnable\n", thr->kt_proc->p_pid); + KASSERT(thr != curthr); KASSERT(thr->kt_state != KT_RUNNABLE); diff --git a/kernel/test/proctest.c b/kernel/test/proctest.c index 31067cd..eb70c81 100644 --- a/kernel/test/proctest.c +++ b/kernel/test/proctest.c @@ -21,6 +21,7 @@ void *test_func(long arg1, void *arg2) test_assert(arg1 == proc_as_arg->p_pid, "Arguments are not set up correctly"); test_assert(proc_as_arg->p_state == PROC_RUNNING, "Process state is not running"); test_assert(list_empty(&proc_as_arg->p_children), "There should be no child processes"); + dbg(DBG_TEST, "Process %s is running\n", proc_as_arg->p_name); return NULL; } @@ -36,6 +37,7 @@ void test_termination() int status; while (do_waitpid(-1, &status, 0) != -ECHILD) { + dbg(DBG_TEST, "Waiting for child process to terminate\n"); test_assert(status == 0, "Returned status not set correctly"); count++; } diff --git a/kernel/util/debug.c b/kernel/util/debug.c index 027c05f..b6ba72a 100644 --- a/kernel/util/debug.c +++ b/kernel/util/debug.c @@ -19,7 +19,7 @@ * always be the first thing in this variable. Note that this setting can be * changed at runtime by modifying the dbg_modes global variable. */ -#define INIT_DBG_MODES "-all,test,print" +#define INIT_DBG_MODES "-all,test,print,thr,proc,sched" /* Below is a truly terrible poll-driven serial driver that we use for debugging * purposes - it outputs to COM1, but |