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 }