Redefine microkernel task object identifier type

The opaque task object id type is now a pointer to
the associated task structure, rather than an index
into the microkernel's array of task structures.

This change is a pre-requisite to support for private
task objects, which are defined in source code.

Change-Id: Idb53ea7f8a8a5b7e6477a74273930b08fc77dcfe
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
This commit is contained in:
Daniel Leung 2015-07-21 11:02:59 -07:00 committed by Anas Nashif
commit 1367a98e9e
6 changed files with 36 additions and 24 deletions

View file

@ -327,7 +327,7 @@ void task_abort_handler_set(void (*func)(void) /* abort handler */
void _k_task_op(struct k_args *A)
{
ktask_t Tid = A->Args.g1.task;
struct k_proc *X = _k_task_list + OBJ_INDEX(Tid);
struct k_proc *X = (struct k_proc *)Tid;
switch (A->Args.g1.opt) {
case TASK_START:
@ -499,7 +499,7 @@ kpriority_t task_priority_get(void)
void _k_task_priority_set(struct k_args *A)
{
ktask_t Tid = A->Args.g1.task;
struct k_proc *X = _k_task_list + OBJ_INDEX(Tid);
struct k_proc *X = (struct k_proc *)Tid;
_k_state_bit_set(X, TF_PRIO);
X->Prio = A->Args.g1.prio;
@ -596,6 +596,8 @@ void task_entry_set(ktask_t task, /* task */
void (*func)(void) /* entry point */
)
{
_k_task_list[OBJ_INDEX(task)].fstart = func;
struct k_proc *X = (struct k_proc *)task;
X->fstart = func;
}