FreeCalypso > hg > freecalypso-sw
comparison gsm-fw/gpf/osl/os_pro_fl.c @ 340:de7141ad907e
OSL: os_GetScheduleCount() and os_DestroyTask() done
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sat, 03 May 2014 00:33:45 +0000 |
parents | 2f88c5b89113 |
children | fcbdb2ae1a47 |
comparison
equal
deleted
inserted
replaced
339:2f88c5b89113 | 340:de7141ad907e |
---|---|
149 *tcb = (unsigned *) task; | 149 *tcb = (unsigned *) task; |
150 *stackbegin = (u_char *) task->tc_stack_start; | 150 *stackbegin = (u_char *) task->tc_stack_start; |
151 *stackend = (u_char *) task->tc_stack_end; | 151 *stackend = (u_char *) task->tc_stack_end; |
152 return(OS_OK); | 152 return(OS_OK); |
153 } | 153 } |
154 | |
155 GLOBAL LONG | |
156 os_GetScheduleCount(OS_HANDLE task_handle, int *schedule_count) | |
157 { | |
158 NU_TASK *task_cb; | |
159 | |
160 if (task_handle > MaxTasks) | |
161 return(OS_ERROR); | |
162 if (!TaskTable[task_handle].Name[0]) | |
163 return(OS_ERROR); | |
164 if (task_handle == OS_NOTASK) | |
165 task_cb = (NU_TASK *) TCD_Current_Thread; | |
166 else | |
167 task_cb = &TaskTable[task_handle].TaskCB.TCB; | |
168 *schedule_count = task_cb->tc_scheduled; | |
169 return(OS_OK); | |
170 } | |
171 | |
172 GLOBAL LONG | |
173 os_DestroyTask(OS_HANDLE Caller, OS_HANDLE TaskHandle) | |
174 { | |
175 STATUS sts; | |
176 | |
177 if (NU_Terminate_Task(&TaskTable[TaskHandle].TaskCB.TCB) != NU_SUCCESS) | |
178 return(OS_ERROR); | |
179 if (NU_Delete_Task(&TaskTable[TaskHandle].TaskCB.TCB) != NU_SUCCESS) | |
180 return(OS_ERROR); | |
181 if (os_DeallocateMemory(Caller, TaskTable[TaskHandle].Stack) != OS_OK) | |
182 return(OS_ERROR); | |
183 sts = NU_Obtain_Semaphore(&ProSemCB, NU_SUSPEND); | |
184 TaskTable[TaskHandle].Name[0] = 0; | |
185 if (sts == NU_SUCCESS) | |
186 NU_Release_Semaphore(&ProSemCB); | |
187 return(OS_OK); | |
188 } |