source: asp_ewarm/asp-1.7.0/include/queue.h@ 61

Last change on this file since 61 was 61, checked in by ertl-honda, 11 years ago

ASP for EWARM のコミット.

File size: 4.7 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory
6 * Toyohashi Univ. of Technology, JAPAN
7 * Copyright (C) 2006-2009 by Embedded and Real-Time Systems Laboratory
8 * Graduate School of Information Science, Nagoya Univ., JAPAN
9 *
10 * ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
11 * ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
12 * •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
13 * (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
14 * Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
15 * ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
16 * (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
17 * —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ…
18ƒƒ“ƒgi—˜—p
19 * ŽÒƒ}ƒjƒ…
20ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
21 * ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
22 * (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
23 * —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
24 * ‚ƁD
25 * (a) Ä”z•z‚É”º‚¤ƒhƒLƒ…
26ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
27ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
28 * ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
29 * (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
30 * •ñ‚·‚邱‚ƁD
31 * (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
32 * ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
33 * ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
34 * —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
35 * –Ɛӂ·‚邱‚ƁD
36 *
37 * –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
38 * ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
39 * ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
40 * ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
41 * ‚̐ӔC‚𕉂í‚È‚¢D
42 *
43 * @(#) $Id: queue.h 1549 2009-05-10 15:21:52Z ertl-hiro $
44 */
45
46/*
47 * ƒLƒ…
48[‘€ìƒ‰ƒCƒuƒ‰ƒŠ
49 *
50 * ‚±‚̃Lƒ…
51[‘€ìƒ‰ƒCƒuƒ‰ƒŠ‚ł́CƒLƒ…
52[ƒwƒbƒ_‚ðŠÜ‚ÞƒŠƒ“ƒO\‘¢‚̃_ƒuƒ‹
53 * ƒŠƒ“ƒNƒLƒ…
54[‚ðˆµ‚¤D‹ï‘Ì“I‚ɂ́CƒLƒ…
55[ƒwƒbƒ_‚ÌŽŸƒGƒ“ƒgƒŠ‚̓Lƒ…
56[‚Ì
57 * æ“ª‚̃Gƒ“ƒgƒŠC‘OƒGƒ“ƒgƒŠ‚̓Lƒ…
58[‚Ì––”ö‚̃Gƒ“ƒgƒŠ‚Æ‚·‚éD‚Ü‚½CƒL
59 * ƒ…
60[‚̐擪‚̃Gƒ“ƒgƒŠ‚Ì‘OƒGƒ“ƒgƒŠ‚ƁCƒLƒ…
61[‚Ì––”ö‚̃Gƒ“ƒgƒŠ‚ÌŽŸƒGƒ“
62 * ƒgƒŠ‚́CƒLƒ…
63[ƒwƒbƒ_‚Æ‚·‚éD‹ó‚̃Lƒ…
64[‚́CŽŸƒGƒ“ƒgƒŠC‘OƒGƒ“ƒgƒŠ‚Æ
65 * ‚àŽ©•ªŽ©g‚ðŽw‚·ƒLƒ…
66[ƒwƒbƒ_‚Å‚ ‚ç‚í‚·D
67 */
68
69#ifndef TOPPERS_QUEUE_H
70#define TOPPERS_QUEUE_H
71
72#ifdef __cplusplus
73extern "C" {
74#endif
75
76/*
77 * ƒLƒ…
78[‚̃f[ƒ^\‘¢‚Ì’è‹`
79 */
80typedef struct queue {
81 struct queue *p_next; /* ŽŸƒGƒ“ƒgƒŠ‚ւ̃|ƒCƒ“ƒ^ */
82 struct queue *p_prev; /* ‘OƒGƒ“ƒgƒŠ‚ւ̃|ƒCƒ“ƒ^ */
83} QUEUE;
84
85/*
86 * ƒLƒ…
87[‚̏‰Šú‰»
88 *
89 * p_queue‚ɂ̓Lƒ…
90[ƒwƒbƒ_‚ðŽw’è‚·‚éD
91 */
92Inline void
93queue_initialize(QUEUE *p_queue)
94{
95 p_queue->p_prev = p_queue->p_next = p_queue;
96}
97
98/*
99 * ƒLƒ…
100[‚Ì‘OƒGƒ“ƒgƒŠ‚Ö‚Ì‘}“ü
101 *
102 * p_queue‚Ì‘O‚Ép_entry‚ð‘}“ü‚·‚éDp_queue‚ɃLƒ…
103[ƒwƒbƒ_‚ðŽw’肵‚½ê
104 * ‡‚ɂ́CƒLƒ…
105[‚Ì––”ö‚Ép_entry‚ð‘}“ü‚·‚邱‚Æ‚É‚È‚éD
106 */
107Inline void
108queue_insert_prev(QUEUE *p_queue, QUEUE *p_entry)
109{
110 p_entry->p_prev = p_queue->p_prev;
111 p_entry->p_next = p_queue;
112 p_queue->p_prev->p_next = p_entry;
113 p_queue->p_prev = p_entry;
114}
115
116/*
117 * ƒLƒ…
118[‚ÌŽŸƒGƒ“ƒgƒŠ‚Ö‚Ì‘}“ü
119 *
120 * p_queue‚ÌŽŸ‚Ép_entry‚ð‘}“ü‚·‚éDp_queue‚ɃLƒ…
121[ƒwƒbƒ_‚ðŽw’肵‚½ê
122 * ‡‚ɂ́CƒLƒ…
123[‚̐擪‚Ép_entry‚ð‘}“ü‚·‚邱‚Æ‚É‚È‚éD
124 */
125Inline void
126queue_insert_next(QUEUE *p_queue, QUEUE *p_entry)
127{
128 p_entry->p_prev = p_queue;
129 p_entry->p_next = p_queue->p_next;
130 p_queue->p_next->p_prev = p_entry;
131 p_queue->p_next = p_entry;
132}
133
134/*
135 * ƒGƒ“ƒgƒŠ‚̍폜
136 *
137 * p_entry‚ðƒLƒ…
138[‚©‚çíœ‚·‚éD
139 */
140Inline void
141queue_delete(QUEUE *p_entry)
142{
143 p_entry->p_prev->p_next = p_entry->p_next;
144 p_entry->p_next->p_prev = p_entry->p_prev;
145}
146
147/*
148 * ƒLƒ…
149[‚ÌŽŸƒGƒ“ƒgƒŠ‚ÌŽæo‚µ
150 *
151 * p_queue‚ÌŽŸƒGƒ“ƒgƒŠ‚ðƒLƒ…
152[‚©‚çíœ‚µCíœ‚µ‚½ƒGƒ“ƒgƒŠ‚ð•Ô‚·D
153 * p_queue‚ɃLƒ…
154[ƒwƒbƒ_‚ðŽw’肵‚½ê‡‚ɂ́CƒLƒ…
155[‚̐擪‚̃Gƒ“ƒgƒŠ‚ð
156 * Žæ‚èo‚·‚±‚Æ‚É‚È‚éDp_queue‚É‹ó‚̃Lƒ…
157[‚ðŽw’肵‚ČĂяo‚µ‚Ä‚Í‚È‚ç
158 * ‚È‚¢D
159 */
160Inline QUEUE *
161queue_delete_next(QUEUE *p_queue)
162{
163 QUEUE *p_entry;
164
165 assert(p_queue->p_next != p_queue);
166 p_entry = p_queue->p_next;
167 p_queue->p_next = p_entry->p_next;
168 p_entry->p_next->p_prev = p_queue;
169 return(p_entry);
170}
171
172/*
173 * ƒLƒ…
174[‚ª‹ó‚©‚Ç‚¤‚©‚̃`ƒFƒbƒN
175 *
176 * p_queue‚ɂ̓Lƒ…
177[ƒwƒbƒ_‚ðŽw’è‚·‚éD
178 */
179Inline bool_t
180queue_empty(QUEUE *p_queue)
181{
182 if (p_queue->p_next == p_queue) {
183 assert(p_queue->p_prev == p_queue);
184 return(true);
185 }
186 return(false);
187}
188
189#ifdef __cplusplus
190}
191#endif
192
193#endif /* TOPPERS_QUEUE_H */
Note: See TracBrowser for help on using the repository browser.