aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/main/kmain.c14
-rw-r--r--kernel/proc/kthread.c4
-rw-r--r--kernel/proc/proc.c4
-rw-r--r--kernel/proc/sched.c2
-rw-r--r--kernel/test/proctest.c2
-rw-r--r--kernel/util/debug.c2
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