From c81093913a2fad2e3b701af4607d6bb761672b93 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Wed, 3 Sep 2014 13:47:11 -0600 Subject: [PATCH] IDLE TCB setup needs to indicate the the IDLE thread is a privileged, kernel thread --- sched/init/os_start.c | 1 + sched/task/task.h | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/sched/init/os_start.c b/sched/init/os_start.c index 27ebd29c21..8f3a190c25 100644 --- a/sched/init/os_start.c +++ b/sched/init/os_start.c @@ -300,6 +300,7 @@ void os_start(void) bzero((void*)&g_idletcb, sizeof(struct task_tcb_s)); g_idletcb.cmn.task_state = TSTATE_TASK_RUNNING; g_idletcb.cmn.entry.main = (main_t)os_start; + g_idletcb.cmn.flags = TCB_FLAG_TTYPE_KERNEL; /* Set the IDLE task name */ diff --git a/sched/task/task.h b/sched/task/task.h index a748877f78..b22cf54025 100644 --- a/sched/task/task.h +++ b/sched/task/task.h @@ -63,15 +63,23 @@ * Public Function Prototypes ****************************************************************************/ +/* Task start-up */ + void task_start(void); int task_schedsetup(FAR struct task_tcb_s *tcb, int priority, start_t start, main_t main, uint8_t ttype); int task_argsetup(FAR struct task_tcb_s *tcb, FAR const char *name, FAR char * const argv[]); + +/* Task exit */ + int task_exit(void); int task_terminate(pid_t pid, bool nonblocking); void task_exithook(FAR struct tcb_s *tcb, int status, bool nonblocking); void task_recover(FAR struct tcb_s *tcb); + +/* Misc. */ + bool sched_addreadytorun(FAR struct tcb_s *rtrtcb); #endif /* __SCHED_TASK_TASK_H */