sched: initialise kernel_thread parent ptr
This commit is contained in:
@@ -39,6 +39,7 @@ kern_status_t setup_kernel_task(void)
|
|||||||
kernel_thread->tr_id = 0;
|
kernel_thread->tr_id = 0;
|
||||||
kernel_thread->tr_prio = PRIO_NORMAL;
|
kernel_thread->tr_prio = PRIO_NORMAL;
|
||||||
kernel_thread->tr_state = THREAD_READY;
|
kernel_thread->tr_state = THREAD_READY;
|
||||||
|
kernel_thread->tr_parent = __kernel_task;
|
||||||
|
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
task_lock_irqsave(__kernel_task, &flags);
|
task_lock_irqsave(__kernel_task, &flags);
|
||||||
@@ -80,5 +81,6 @@ task_t *task_from_pid(unsigned int pid)
|
|||||||
|
|
||||||
task_t *current_task(void)
|
task_t *current_task(void)
|
||||||
{
|
{
|
||||||
return current_thread()->tr_parent;
|
thread_t *thr = current_thread();
|
||||||
|
return thr ? thr->tr_parent : NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,10 @@ void thread_free(thread_t *thr)
|
|||||||
thread_t *current_thread(void)
|
thread_t *current_thread(void)
|
||||||
{
|
{
|
||||||
cpu_data_t *cpu = get_this_cpu();
|
cpu_data_t *cpu = get_this_cpu();
|
||||||
|
if (!cpu) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
thread_t *out = cpu->c_current_thread;
|
thread_t *out = cpu->c_current_thread;
|
||||||
put_cpu(cpu);
|
put_cpu(cpu);
|
||||||
return out;
|
return out;
|
||||||
|
|||||||
Reference in New Issue
Block a user