33 #define MICRIUM_SOURCE
36 #ifdef VSC_INCLUDE_SOURCE_FILE_NAMES
37 const CPU_CHAR *os_tick__c =
"$Id: $";
106 #ifdef OS_SAFETY_CRITICAL
107 if (p_err == (
OS_ERR *)0) {
108 OS_SAFETY_CRITICAL_EXCEPTION();
137 (
CPU_CHAR *)((
void *)
"uC/OS-III Tick Task"),
169 OS_TICK_SPOKE *p_spoke;
175 p_spoke->FirstPtr = (OS_TCB *)0;
227 OS_TICK_SPOKE *p_spoke;
237 p_tcb->TickCtrMatch = (
OS_TICK )0u;
238 p_tcb->TickRemain = (
OS_TICK )0u;
239 p_tcb->TickSpokePtr = (OS_TICK_SPOKE *)0;
243 p_tcb->TickCtrMatch = time;
244 p_tcb->TickRemain = tick_delta + 1u;
246 }
else if (time > (
OS_TICK)0u) {
248 tick_next = p_tcb->TickCtrPrev + time;
250 if (tick_delta < time) {
251 p_tcb->TickCtrMatch = tick_next;
255 p_tcb->TickRemain = p_tcb->TickCtrMatch -
OSTickCtr;
256 p_tcb->TickCtrPrev = p_tcb->TickCtrMatch;
260 p_tcb->TickRemain = time;
264 p_tcb->TickCtrMatch = (
OS_TICK )0u;
265 p_tcb->TickRemain = (
OS_TICK )0u;
266 p_tcb->TickSpokePtr = (OS_TICK_SPOKE *)0;
276 p_tcb->TickNextPtr = (OS_TCB *)0;
277 p_tcb->TickPrevPtr = (OS_TCB *)0;
278 p_spoke->FirstPtr = p_tcb;
281 p_tcb1 = p_spoke->FirstPtr;
282 while (p_tcb1 != (OS_TCB *)0) {
283 p_tcb1->TickRemain = p_tcb1->TickCtrMatch
285 if (p_tcb->TickRemain > p_tcb1->TickRemain) {
286 if (p_tcb1->TickNextPtr != (OS_TCB *)0) {
287 p_tcb1 = p_tcb1->TickNextPtr;
289 p_tcb->TickNextPtr = (OS_TCB *)0;
290 p_tcb->TickPrevPtr = p_tcb1;
291 p_tcb1->TickNextPtr = p_tcb;
292 p_tcb1 = (OS_TCB *)0;
295 if (p_tcb1->TickPrevPtr == (OS_TCB *)0) {
296 p_tcb->TickPrevPtr = (OS_TCB *)0;
297 p_tcb->TickNextPtr = p_tcb1;
298 p_tcb1->TickPrevPtr = p_tcb;
299 p_spoke->FirstPtr = p_tcb;
301 p_tcb0 = p_tcb1->TickPrevPtr;
302 p_tcb->TickPrevPtr = p_tcb0;
303 p_tcb->TickNextPtr = p_tcb1;
304 p_tcb0->TickNextPtr = p_tcb;
305 p_tcb1->TickPrevPtr = p_tcb;
307 p_tcb1 = (OS_TCB *)0;
310 p_spoke->NbrEntries++;
312 if (p_spoke->NbrEntriesMax < p_spoke->NbrEntries) {
313 p_spoke->NbrEntriesMax = p_spoke->NbrEntries;
315 p_tcb->TickSpokePtr = p_spoke;
339 OS_TICK_SPOKE *p_spoke;
345 p_spoke = p_tcb->TickSpokePtr;
346 if (p_spoke != (OS_TICK_SPOKE *)0) {
347 p_tcb->TickRemain = (
OS_TICK)0u;
348 if (p_spoke->FirstPtr == p_tcb) {
349 p_tcb1 = (OS_TCB *)p_tcb->TickNextPtr;
350 p_spoke->FirstPtr = p_tcb1;
351 if (p_tcb1 != (OS_TCB *)0) {
352 p_tcb1->TickPrevPtr = (OS_TCB *)0;
355 p_tcb1 = p_tcb->TickPrevPtr;
356 p_tcb2 = p_tcb->TickNextPtr;
357 p_tcb1->TickNextPtr = p_tcb2;
358 if (p_tcb2 != (OS_TCB *)0) {
359 p_tcb2->TickPrevPtr = p_tcb1;
362 p_tcb->TickNextPtr = (OS_TCB *)0;
363 p_tcb->TickPrevPtr = (OS_TCB *)0;
364 p_tcb->TickSpokePtr = (OS_TICK_SPOKE *)0;
365 p_tcb->TickCtrMatch = (
OS_TICK )0u;
366 p_spoke->NbrEntries--;
389 OS_TICK_SPOKE *p_spoke;
418 OS_TICK_SPOKE *p_spoke;
432 p_tcb = p_spoke->FirstPtr;
435 if (p_tcb != (OS_TCB *)0) {
436 p_tcb_next = p_tcb->TickNextPtr;
437 switch (p_tcb->TaskState) {
445 p_tcb->TickRemain = p_tcb->TickCtrMatch
456 p_tcb->TickRemain = p_tcb->TickCtrMatch
460 p_tcb->MsgPtr = (
void *)0;
475 p_tcb->TickRemain = p_tcb->TickCtrMatch
486 p_tcb->TickRemain = p_tcb->TickCtrMatch
490 p_tcb->MsgPtr = (
void *)0;