# HG changeset patch # User Michael Spacefalcon # Date 1399077225 0 # Node ID de7141ad907e1c6f9ebbba2a601060bd5f9f817a # Parent 2f88c5b8911309565bae51fcf3f1cf952cf877f0 OSL: os_GetScheduleCount() and os_DestroyTask() done diff -r 2f88c5b89113 -r de7141ad907e gsm-fw/gpf/osl/os_pro_fl.c --- a/gsm-fw/gpf/osl/os_pro_fl.c Fri May 02 23:44:12 2014 +0000 +++ b/gsm-fw/gpf/osl/os_pro_fl.c Sat May 03 00:33:45 2014 +0000 @@ -151,3 +151,38 @@ *stackend = (u_char *) task->tc_stack_end; return(OS_OK); } + +GLOBAL LONG +os_GetScheduleCount(OS_HANDLE task_handle, int *schedule_count) +{ + NU_TASK *task_cb; + + if (task_handle > MaxTasks) + return(OS_ERROR); + if (!TaskTable[task_handle].Name[0]) + return(OS_ERROR); + if (task_handle == OS_NOTASK) + task_cb = (NU_TASK *) TCD_Current_Thread; + else + task_cb = &TaskTable[task_handle].TaskCB.TCB; + *schedule_count = task_cb->tc_scheduled; + return(OS_OK); +} + +GLOBAL LONG +os_DestroyTask(OS_HANDLE Caller, OS_HANDLE TaskHandle) +{ + STATUS sts; + + if (NU_Terminate_Task(&TaskTable[TaskHandle].TaskCB.TCB) != NU_SUCCESS) + return(OS_ERROR); + if (NU_Delete_Task(&TaskTable[TaskHandle].TaskCB.TCB) != NU_SUCCESS) + return(OS_ERROR); + if (os_DeallocateMemory(Caller, TaskTable[TaskHandle].Stack) != OS_OK) + return(OS_ERROR); + sts = NU_Obtain_Semaphore(&ProSemCB, NU_SUSPEND); + TaskTable[TaskHandle].Name[0] = 0; + if (sts == NU_SUCCESS) + NU_Release_Semaphore(&ProSemCB); + return(OS_OK); +}