source: ssp_qb_r5f100le_cs/trunk/kernel/queue.h@ 93

Last change on this file since 93 was 93, checked in by nmir-saito, 9 years ago

add Combined package of SSP kernel for QB-R5F100LE-TB(RL78 processor)

File size: 3.0 KB
RevLine 
[93]1/*
2 * TOPPERS/SSP Kernel
3 * Smallest Set Profile Kernel
4 *
5 * Copyright (C) 2011 by Meika Sugimoto
6 *
7 * ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
8 * ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
9 * Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
10 * (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
11 * •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
12 * ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
13 * (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
14 * ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ…
15ƒƒ“ƒgi—˜—pŽÒƒ}
16 * ƒjƒ…
17ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
18 * Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
19 * (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
20 * ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
21 * (a) Ä”z•z‚É”º‚¤ƒhƒLƒ…
22ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
23ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
24 * Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
25 * (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
26 * ‚·‚邱‚ƁD
27 * (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
28 * ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
29 * –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
30 * ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
31 *
32 * –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
33 * ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
34 * ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
35 * ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
36 * ‚í‚È‚¢D
37 *
38 */
39
40/*
41 * ƒLƒ…
42[‘€ìƒwƒbƒ_
43 *
44 * SSPƒJ[ƒlƒ‹‚ł̓ƒ‚ƒŠß–ñ‚Ì‚½‚߂ɃCƒ“ƒfƒbƒNƒX‚ðŽg—p‚µ‚½ƒLƒ…
45[‚ð—p‚¢‚é
46 */
47
48#ifndef TOPPERS_QUEUE_H
49#define TOPPERS_QUEUE_H
50
51/* ƒLƒ…
52[‚̃Cƒ“ƒfƒbƒNƒX */
53typedef uint8_t QUEIDX;
54
55/* ƒLƒ…
56[\‘¢‘Ì */
57typedef struct
58{
59 QUEIDX next;
60 QUEIDX prev;
61} QUEUE;
62
63
64/* ƒLƒ…
65[ƒwƒbƒ_‚̏‰Šú‰» */
66Inline void
67queue_initialize(QUEUE *queue , QUEIDX queue_null)
68{
69 queue->next = queue->prev = queue_null;
70}
71
72/* Žw’肵‚½—v‘f‚Ì‘O‚ɐV‚½‚È—v‘f‚ð’ljÁ */
73Inline void
74queue_insert_prev(QUEUE *top , QUEIDX queue , QUEIDX entry)
75{
76 top[entry].prev = top[queue].prev;
77 top[entry].next = queue;
78 top[top[queue].prev].next = entry;
79 top[queue].prev = entry;
80}
81
82
83/* Žw’肵‚½ƒLƒ…
84[‚ÌŽŸ‚Ì—v‘f‚ðíœ‚µC‚»‚̃Cƒ“ƒfƒbƒNƒX‚ð•Ô‚· */
85Inline QUEIDX
86queue_delete_next(QUEUE *top , QUEIDX queue)
87{
88 top[top[queue].next].prev = top[queue].prev;
89 top[top[queue].prev].next = top[queue].next;
90
91 return top[queue].next;
92}
93
94
95/*
96 * ƒLƒ…
97[‚ª‹ó‚©‚Ç‚¤‚©‚̃eƒXƒg
98 *
99 * queue‚ɂ̓Lƒ…
100[ƒwƒbƒ_‚ðŽw’è‚·‚邱‚Æ
101 */
102Inline bool_t
103queue_empty(QUEUE *queue , QUEIDX queue_null)
104{
105 bool_t empty;
106
107 if(queue->next == queue_null)
108 {
109 empty = true;
110 }
111 else
112 {
113 empty = false;
114 }
115
116 return empty;
117}
118
119#endif /* TOPPERS_QUEUE_H */
Note: See TracBrowser for help on using the repository browser.