OSDN Git Service

Import translated manuals from JM CVS Repository.
[linuxjm/jm.git] / manual / LDP_man-pages / release / man3 / queue.3
1 .\" Copyright (c) 1993
2 .\"     The Regents of the University of California.  All rights reserved.
3 .\"
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
6 .\" are met:
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\"    notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\"    notice, this list of conditions and the following disclaimer in the
11 .\"    documentation and/or other materials provided with the distribution.
12 .\" 3. All advertising materials mentioning features or use of this software
13 .\"    must display the following acknowledgement:
14 .\"     This product includes software developed by the University of
15 .\"     California, Berkeley and its contributors.
16 .\" 4. Neither the name of the University nor the names of its contributors
17 .\"    may be used to endorse or promote products derived from this software
18 .\"    without specific prior written permission.
19 .\"
20 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 .\" SUCH DAMAGE.
31 .\"
32 .\"     @(#)queue.3     8.2 (Berkeley) 1/24/94
33 .\"
34 .\" hch, 2002-03-25
35 .\" 2007-12-08, mtk, Converted from mdoc to man macros
36 .\"
37 .\" Japanese Version Copyright (c) 2004 Yuichi SATO
38 .\"         all rights reserved.
39 .\" Translated Thu Sep  2 04:41:11 JST 2004
40 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
41 .\"
42 .\"WORD:        circular queue  ½Û´Ä¥­¥å¡¼
43 .\"
44 .TH QUEUE 3 2007-12-28 "Linux" "Linux Programmer's Manual"
45 .SH Ì¾Á°
46 LIST_ENTRY, LIST_HEAD, LIST_INIT, LIST_INSERT_AFTER, \
47 LIST_INSERT_HEAD, LIST_REMOVE, TAILQ_ENTRY, TAILQ_HEAD, \
48 TAILQ_INIT, TAILQ_INSERT_AFTER, TAILQ_INSERT_HEAD, TAILQ_INSERT_TAIL, \
49 TAILQ_REMOVE, CIRCLEQ_ENTRY, CIRCLEQ_HEAD, CIRCLEQ_INIT, \
50 CIRCLEQ_INSERT_AFTER, CIRCLEQ_INSERT_BEFORE, \
51 CIRCLEQ_INSERT_HEAD, CIRCLEQ_INSERT_TAIL, \
52 CIRCLEQ_REMOVE \- ¥ê¥¹¥È¡¦¥Æ¡¼¥ë (tail) ¥­¥å¡¼¡¦½Û´Ä¥­¥å¡¼¤Î¼ÂÁõ
53 .SH ½ñ¼°
54 .nf
55 .B #include <sys/queue.h>
56
57 .BI "LIST_ENTRY(" TYPE );
58 .BI "LIST_HEAD(" HEADNAME ", " TYPE );
59 .BI "LIST_INIT(LIST_HEAD *" head );
60 .BI "LIST_INSERT_AFTER(LIST_ENTRY *" listelm ", "
61 .BI "                TYPE *" elm ", LIST_ENTRY " NAME );
62 .BI "LIST_INSERT_HEAD(LIST_HEAD *" head ", "
63 .BI "                TYPE *" elm ", LIST_ENTRY " NAME );
64 .BI "LIST_REMOVE(TYPE *" elm ", LIST_ENTRY " NAME );
65
66 .BI "TAILQ_ENTRY(" TYPE );
67 .BI "TAILQ_HEAD("HEADNAME ", " TYPE );
68 .BI "TAILQ_INIT(TAILQ_HEAD *" head );
69 .BI "TAILQ_INSERT_AFTER(TAILQ_HEAD *" head ", TYPE *" listelm ", "
70 .BI "                TYPE *" elm ", TAILQ_ENTRY " NAME );
71 .BI "TAILQ_INSERT_HEAD(TAILQ_HEAD *" head ", "
72 .BI "                TYPE *" elm ", TAILQ_ENTRY " NAME );
73 .BI "TAILQ_INSERT_TAIL(TAILQ_HEAD *" head ", "
74 .BI "                TYPE *" elm ", TAILQ_ENTRY " NAME );
75 .BI "TAILQ_REMOVE(TAILQ_HEAD *" head ", TYPE *" elm ", TAILQ_ENTRY " NAME );
76
77 .BI CIRCLEQ_ENTRY( TYPE );
78 .BI "CIRCLEQ_HEAD(" HEADNAME ", " TYPE );
79 .BI "CIRCLEQ_INIT(CIRCLEQ_HEAD *" head );
80 .BI "CIRCLEQ_INSERT_AFTER(CIRCLEQ_HEAD *" head ", TYPE *" listelm ", "
81 .BI "                TYPE *" elm ", CIRCLEQ_ENTRY " NAME );
82 .BI "CIRCLEQ_INSERT_BEFORE(CIRCLEQ_HEAD *" head ", TYPE *" listelm ", "
83 .BI "                TYPE *" elm ", CIRCLEQ_ENTRY " NAME );
84 .BI "CIRCLEQ_INSERT_HEAD(CIRCLEQ_HEAD *" head ", "
85 .BI "                TYPE *" elm ", CIRCLEQ_ENTRY " NAME );
86 .BI "CIRCLEQ_INSERT_TAIL(CIRCLEQ_HEAD *" head ", "
87 .BI "                TYPE *" elm ", CIRCLEQ_ENTRY " NAME );
88 .BI "CIRCLEQ_REMOVE(CIRCLEQ_HEAD *" head ", "
89 .BI "                TYPE *" elm ", CIRCLEQ_ENTRY " NAME );
90 .fi
91 .SH ÀâÌÀ
92 ¤³¤ì¤é¤Î¥Þ¥¯¥í¤Ï¡¢¼¡¤Î 3 ¤Ä¤Î¥Ç¡¼¥¿¹½Â¤¤òÄêµÁ¤·¤ÆÁàºî¤¹¤ë:
93 ¥ê¥¹¥È¡¦¥Æ¡¼¥ë¥­¥å¡¼¡¦½Û´Ä¥­¥å¡¼¡£
94 3 ¤Ä¤Î¥Ç¡¼¥¿¹½Â¤¤¹¤Ù¤Æ¤Ë¤ª¤¤¤Æ°Ê²¼¤Îµ¡Ç½¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë:
95 .sp
96 .RS 4
97 .PD 0
98 .IP * 4
99 ¿·¤¿¤Ê¥¨¥ó¥È¥ê¤ò¥ê¥¹¥È¤ÎÀèƬ¤ËÁÞÆþ¤¹¤ë¡£
100 .IP *
101 ¿·¤¿¤Ê¥¨¥ó¥È¥ê¤ò¥ê¥¹¥È¤Î¤É¤ÎÍ×ÁǤè¤ê¤â¸å¤ËÁÞÆþ¤¹¤ë¡£
102 .IP *
103 ¥ê¥¹¥È¤ÎǤ°Õ¤Î¥¨¥ó¥È¥ê¤òºï½ü¤¹¤ë¡£
104 .IP *
105 ¥ê¥¹¥È¤ò½çÊý¸þ¤Ëé¤ë¡£
106 .PD
107 .RE
108 .PP
109 ¥ê¥¹¥È¤Ï 3 ¤Ä¤Î¥Ç¡¼¥¿¹½Â¤¤ÎÃæ¤ÇºÇ¤âñ½ã¤Ç¤¢¤ê¡¢
110 ¾åµ­¤Îµ¡Ç½¤Î¤ß¤ò¥µ¥Ý¡¼¥È¤¹¤ë¡£
111
112 ¥Æ¡¼¥ë¥­¥å¡¼¤Ï°Ê²¼¤Îµ¡Ç½¤òÄɲ乤ë:
113 .RS 4
114 .IP * 4
115 ¥¨¥ó¥È¥ê¤ò¥ê¥¹¥È¤ÎºÇ¸å¤ËÄɲäǤ­¤ë¡£
116 .RE
117 .PP
118 ¤¿¤À¤·:
119 .sp
120 .RS 4
121 .PD 0
122 .IP 1. 4
123 Á´¤Æ¤Î¥ê¥¹¥ÈÁÞÆþ¤Èºï½ü¤Ë¤ª¤¤¤Æ¡¢¥ê¥¹¥È¤ÎÀèƬ¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
124 .IP 2.
125 ³ÆÀèƬ¥¨¥ó¥È¥ê¤Ï 1 ¤Ä¤Ç¤Ï¤Ê¤¯ 2 ¤Ä¤Î¥Ý¥¤¥ó¥¿¤òɬÍפȤ¹¤ë¡£
126 .IP 3.
127 ¥ê¥¹¥È¤ÈÈæ¤Ù¤Æ¡¢¥³¡¼¥É¥µ¥¤¥º¤Ï 15% Â礭¤¯¤Ê¤ê¡¢Áàºî¤Ï 20% ÃÙ¤¯¤Ê¤ë¡£
128 .PD
129 .RE
130 .PP
131 ½Û´Ä¥­¥å¡¼¤Ï°Ê²¼¤Îµ¡Ç½¤òÄɲ乤ë:
132 .sp
133 .RS 4
134 .PD 0
135 .IP * 4
136 ¥¨¥ó¥È¥ê¤ò¥ê¥¹¥È¤ÎºÇ¸å¤ËÄɲäǤ­¤ë¡£
137 .IP *
138 ¥¨¥ó¥È¥ê¤ò¾¤Î¥¨¥ó¥È¥ê¤ÎÁ°¤ËÄɲäǤ­¤ë¡£
139 .IP *
140 µÕÊý¸þ¤ËËöÈø¤«¤éÀèƬ¤Øé¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
141 .PD
142 .RE
143 .PP
144 ¤¿¤À¤·:
145 .sp
146 .RS 4
147 .PD 0
148 .IP 1. 4
149 Á´¤Æ¤Î¥ê¥¹¥ÈÁÞÆþ¤Èºï½ü¤Ë¤ª¤¤¤Æ¡¢¥ê¥¹¥È¤ÎÀèƬ¤ò»ØÄꤷ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
150 .IP 2.
151 ³ÆÀèƬ¥¨¥ó¥È¥ê¤Ï 1 ¤Ä¤Ç¤Ï¤Ê¤¯ 2 ¤Ä¤Î¥Ý¥¤¥ó¥¿¤òɬÍפȤ¹¤ë¡£
152 .IP 3.
153 é¤ëºÝ¤Î½ªÎ»¾ò·ï¤¬¤è¤êÊ£»¨¤Ç¤¢¤ë¡£
154 .IP 4.
155 ¥ê¥¹¥È¤ÈÈæ¤Ù¤Æ¡¢¥³¡¼¥É¥µ¥¤¥º¤Ï 40% Â礭¤¯¤Ê¤ê¡¢Áàºî¤Ï 45% ÃÙ¤¯¤Ê¤ë¡£
156 .PD
157 .RE
158 .PP
159 ¥Þ¥¯¥íÄêµÁ¤Ë¤ª¤¤¤Æ
160 .I TYPE
161 ¤Ï¥æ¡¼¥¶ÄêµÁ¹½Â¤ÂΤÎ̾Á°¤Ç¤¢¤ê¡¢
162 .BR LIST_ENTRY ,
163 .BR TAILQ_ENTRY ,
164 .BR CIRCLEQ_ENTRY
165 ¤Î²¿¤ì¤«·¿¤Î¥Õ¥£¡¼¥ë¥É¤È
166 »ØÄꤵ¤ì¤¿
167 .I NAME
168 ¤ò´Þ¤Þ¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
169 °ú¤­¿ô
170 .I HEADNAME
171 ¤Ï¥æ¡¼¥¶ÄêµÁ¹½Â¤ÂΤÎ̾Á°¤Ç¤¢¤ê¡¢
172 ¥Þ¥¯¥í
173 .BR LIST_HEAD ,
174 .BR TAILQ_HEAD ,
175 .BR CIRCLEQ_HEAD
176 ¤òÍѤ¤¤ÆÀë¸À¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
177 ¤³¤ì¤é¤Î¥Þ¥¯¥í¤¬¤É¤Î¤è¤¦¤Ë»È¤ï¤ì¤ë¤«¤Ë¤Ä¤¤¤Æ¤Î¹¹¤Ê¤ëÀâÌÀ¤Ï¡¢
178 °Ê²¼¤ÎÎã¤ò»²¾È¤¹¤ë¤³¤È¡£
179 .SS ¥ê¥¹¥È
180 ¥ê¥¹¥È¤ÎÀèƬ¤Ë¤Ï¡¢
181 .B LIST_HEAD
182 ¥Þ¥¯¥í¤ÇÄêµÁ¤µ¤ì¤ë¹½Â¤ÂΤ¬ÃÖ¤«¤ì¤ë¡£
183 ¤³¤Î¹½Â¤ÂΤϥꥹ¥È¤ÎºÇ½é¤ÎÍ×ÁǤؤΥݥ¤¥ó¥¿¤ò 1 ¤Ä´Þ¤à¡£
184 Í×ÁǤϠ2 ½Å¤Ë¥ê¥ó¥¯¤µ¤ì¤Æ¤ª¤ê¡¢
185 Ǥ°Õ¤ÎÍ×ÁǤϥꥹ¥È¤òé¤é¤º¤Ëºï½ü¤Ç¤­¤ë¡£
186 ¿·¤·¤¤Í×ÁǤϴû¸¤ÎÍ×ÁǤθå¤Þ¤¿¤Ï¥ê¥¹¥È¤ÎÀèƬ¤ËÄɲäǤ­¤ë¡£
187 .B LIST_HEAD
188 ¹½Â¤ÂΤϰʲ¼¤Î¤è¤¦¤ËÀë¸À¤µ¤ì¤Æ¤¤¤ë:
189 .in +4n
190 .nf
191
192 LIST_HEAD(HEADNAME, TYPE) head;
193 .fi
194 .in
195 .PP
196 ¤³¤³¤Ç
197 .I HEADNAME
198 ¤ÏÄêµÁ¤µ¤ì¤ë¹½Â¤ÂΤÎ̾Á°¤Ç¤¢¤ê¡¢
199 .I TYPE
200 ¤Ï¥ê¥ó¥¯Æâ¤Ç¥ê¥ó¥¯¤µ¤ì¤ëÍ×ÁǤη¿¤Ç¤¢¤ë¡£
201 ¥ê¥¹¥È¤ÎÀèƬ¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ï¡¢¤½¤Î¸å¤Ç¼¡¤Î¤è¤¦¤ËÀë¸À¤µ¤ì¤ë:
202 .in +4n
203 .nf
204
205 struct HEADNAME *headp;
206 .fi
207 .in
208 .PP
209 (̾Á°
210 .IR "head"
211 ¤È
212 .IR "headp"
213 ¤Ï¥æ¡¼¥¶¤¬ÁªÂò¤Ç¤­¤ë¡£)
214 .PP
215 ¥Þ¥¯¥í
216 .B LIST_ENTRY
217 ¤Ï¥ê¥¹¥È¤ÎÍ×ÁǤòÀܳ¤¹¤ë¹½Â¤ÂΤòÀë¸À¤¹¤ë¡£
218 .PP
219 ¥Þ¥¯¥í
220 .B LIST_INIT
221 ¤Ï
222 .I head
223 ¤Ç»²¾È¤µ¤ì¤ë¥ê¥¹¥È¤ò½é´ü²½¤¹¤ë¡£
224 .PP
225 ¥Þ¥¯¥í
226 .B LIST_INSERT_HEAD
227 ¤Ï¿·¤¿¤ÊÍ×ÁÇ
228 .I elm
229 ¤ò¥ê¥¹¥È¤ÎÀèƬ¤ËÁÞÆþ¤¹¤ë¡£
230 .PP
231 ¥Þ¥¯¥í
232 .B LIST_INSERT_AFTER
233 ¤Ï¿·¤¿¤ÊÍ×ÁÇ
234 .I elm
235 ¤òÍ×ÁÇ
236 .I listelm
237 ¤Î¸å¤ËÁÞÆþ¤¹¤ë¡£
238 .PP
239 ¥Þ¥¯¥í
240 .B LIST_REMOVE
241 ¤ÏÍ×ÁÇ
242 .I elm
243 ¤ò¥ê¥¹¥È¤«¤éºï½ü¤¹¤ë¡£
244 .SS ¥ê¥¹¥È¤ÎÎã
245 .nf
246
247 LIST_HEAD(listhead, entry) head;
248 struct listhead *headp;                 /* ¥ê¥¹¥È¤ÎÀèƬ¡£*/
249 struct entry {
250     ...
251     LIST_ENTRY(entry) entries;          /* ¥ê¥¹¥È¡£ */
252     ...
253 } *n1, *n2, *np;
254
255 LIST_INIT(&head);                       /* ¥ê¥¹¥È¤ò½é´ü²½¤¹¤ë¡£*/
256
257 n1 = malloc(sizeof(struct entry));      /* ÀèƬ¤ËÁÞÆþ¤¹¤ë¡£*/
258 LIST_INSERT_HEAD(&head, n1, entries);
259
260 n2 = malloc(sizeof(struct entry));      /* ¸å¤í¤ËÁÞÆþ¤¹¤ë¡£*/
261 LIST_INSERT_AFTER(n1, n2, entries);
262                                         /* ½çÊý¸þ¤Ëé¤ë¡£*/
263 for (np = head.lh_first; np != NULL; np = np\->entries.le_next)
264     np\-> ...
265
266 while (head.lh_first != NULL)           /* ºï½ü¤¹¤ë¡£*/
267     LIST_REMOVE(head.lh_first, entries);
268 .fi
269 .SS ¥Æ¡¼¥ë¥­¥å¡¼
270 ¥Æ¡¼¥ë¥­¥å¡¼¤ÎÀèƬ¤Ë¤Ï
271 .B TAILQ_HEAD
272 ¥Þ¥¯¥í¤ÇÄêµÁ¤µ¤ì¤ë¹½Â¤ÂΤ¬ÃÖ¤«¤ì¤ë¡£
273 ¤³¤Î¹½Â¤ÂΤϠ1 ÁȤΥݥ¤¥ó¥¿¤ò´Þ¤ó¤Ç¤¤¤ë¡£
274 1 ¤Ä¤Ï¥Æ¡¼¥ë¥­¥å¡¼¤ÎºÇ½é¤ÎÍ×ÁǤؤΥݥ¤¥ó¥¿¤Ç¤¢¤ê¡¢
275 ¤â¤¦ 1 ¤Ä¤Ï¥Æ¡¼¥ë¥­¥å¡¼¤ÎºÇ¸å¤ÎÍ×ÁǤؤΥݥ¤¥ó¥¿¤Ç¤¢¤ë¡£
276 Í×ÁǤϠ2 ½Å¤Ë¥ê¥ó¥¯¤µ¤ì¤Æ¤ª¤ê¡¢
277 Ǥ°Õ¤ÎÍ×ÁǤϥơ¼¥ë¥­¥å¡¼¤òé¤é¤º¤Ëºï½ü¤Ç¤­¤ë¡£
278 ¿·¤·¤¤Í×ÁǤϴû¸¤ÎÍ×ÁǤθå¤Þ¤¿¤Ï¥Æ¡¼¥ë¥­¥å¡¼¤ÎÀèƬ¤Þ¤¿¤ÏËöÈø¤ËÄɲäǤ­¤ë¡£
279 .B TAILQ_HEAD
280 ¹½Â¤ÂΤϰʲ¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë:
281 .in +4n
282 .nf
283
284 TAILQ_HEAD(HEADNAME, TYPE) head;
285 .fi
286 .in
287 .PP
288 ¤³¤³¤Ç
289 .Li HEADNAME
290 ¤ÏÄêµÁ¤µ¤ì¤ë¹½Â¤ÂΤÎ̾Á°¤Ç¤¢¤ê¡¢
291 .Li TYPE
292 ¤Ï¥Æ¡¼¥ë¥­¥å¡¼Æâ¤Ç¥ê¥ó¥¯¤µ¤ì¤ëÍ×ÁǤη¿¤Ç¤¢¤ë¡£
293 ¥Æ¡¼¥ë¥­¥å¡¼¤ÎÀèƬ¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ï¡¢¤½¤Î¸å¤Ç¼¡¤Î¤è¤¦¤ËÀë¸À¤µ¤ì¤ë:
294 .in +4n
295 .nf
296
297 struct HEADNAME *headp;
298 .fi
299 .in
300 .PP
301 (̾Á°
302 .IR "head"
303 ¤È
304 .IR "headp"
305 ¤Ï¥æ¡¼¥¶¤¬ÁªÂò¤Ç¤­¤ë¡£)
306 .PP
307 ¥Þ¥¯¥í
308 .B TAILQ_ENTRY
309 ¤Ï¥Æ¡¼¥ë¥­¥å¡¼¤ÎÍ×ÁǤòÀܳ¤¹¤ë¹½Â¤ÂΤòÀë¸À¤¹¤ë¡£
310 .PP
311 ¥Þ¥¯¥í
312 .B TAILQ_INIT
313 ¤Ï
314 .I head
315 ¤Ç»²¾È¤µ¤ì¤ë¥Æ¡¼¥ë¥­¥å¡¼¤ò½é´ü²½¤¹¤ë¡£
316 .PP
317 ¥Þ¥¯¥í
318 .B TAILQ_INSERT_HEAD
319 ¤Ï¿·¤¿¤ÊÍ×ÁÇ
320 .I elm
321 ¤ò¥Æ¡¼¥ë¥­¥å¡¼¤ÎÀèƬ¤ËÁÞÆþ¤¹¤ë¡£
322 .PP
323 ¥Þ¥¯¥í
324 .B TAILQ_INSERT_TAIL
325 ¤Ï¿·¤¿¤ÊÍ×ÁÇ
326 .I elm
327 ¤ò¥Æ¡¼¥ë¥­¥å¡¼¤ÎËöÈø¤ËÁÞÆþ¤¹¤ë¡£
328 .PP
329 ¥Þ¥¯¥í
330 .B TAILQ_INSERT_AFTER
331 ¤Ï¿·¤¿¤ÊÍ×ÁÇ
332 .I elm
333 ¤òÍ×ÁÇ
334 .Fa listelm
335 ¤Î¸å¤ËÁÞÆþ¤¹¤ë¡£
336 .PP
337 ¥Þ¥¯¥í
338 .B TAILQ_REMOVE
339 ¤ÏÍ×ÁÇ
340 .I elm
341 ¤ò¥Æ¡¼¥ë¥­¥å¡¼¤«¤éºï½ü¤¹¤ë¡£
342 .SS ¥Æ¡¼¥ë¥­¥å¡¼¤ÎÎã
343 .nf
344
345 TAILQ_HEAD(tailhead, entry) head;
346 struct tailhead *headp;                 /* ¥Æ¡¼¥ë¥­¥å¡¼¤ÎÀèƬ¡£*/
347 struct entry {
348     ...
349     TAILQ_ENTRY(entry) entries;         /* ¥Æ¡¼¥ë¥­¥å¡¼¡£*/
350     ...
351 } *n1, *n2, *np;
352
353 TAILQ_INIT(&head);                      /* ¥­¥å¡¼¤ò½é´ü²½¤¹¤ë¡£*/
354
355 n1 = malloc(sizeof(struct entry));      /* ÀèƬ¤ËÁÞÆþ¤¹¤ë¡£*/
356 TAILQ_INSERT_HEAD(&head, n1, entries);
357
358 n1 = malloc(sizeof(struct entry));      /* ËöÈø¤ËÁÞÆþ¤¹¤ë¡£*/
359 TAILQ_INSERT_TAIL(&head, n1, entries);
360
361 n2 = malloc(sizeof(struct entry));      /* ¸å¤í¤ËÁÞÆþ¤¹¤ë¡£*/
362 TAILQ_INSERT_AFTER(&head, n1, n2, entries);
363                                         /* ½çÊý¸þ¤Ëé¤ë¡£*/
364 for (np = head.tqh_first; np != NULL; np = np\->entries.tqe_next)
365     np\-> ...
366                                         /* ºï½ü¤¹¤ë¡£*/
367 while (head.tqh_first != NULL)
368     TAILQ_REMOVE(&head, head.tqh_first, entries);
369 .fi
370 .SS ½Û´Ä¥­¥å¡¼
371 ½Û´Ä¥­¥å¡¼¤ÎÀèƬ¤Ë¤Ï
372 .B CIRCLEQ_HEAD
373 ¥Þ¥¯¥í¤ÇÄêµÁ¤µ¤ì¤ë¹½Â¤ÂΤ¬ÃÖ¤«¤ì¤ë¡£
374 ¤³¤Î¹½Â¤ÂΤϠ1 ÁȤΥݥ¤¥ó¥¿¤ò´Þ¤ó¤Ç¤¤¤ë¡£
375 1 ¤Ä¤Ï½Û´Ä¥­¥å¡¼¤ÎºÇ½é¤ÎÍ×ÁǤؤΥݥ¤¥ó¥¿¤Ç¤¢¤ê¡¢
376 ¤â¤¦ 1 ¤Ä¤Ï½Û´Ä¥­¥å¡¼¤ÎºÇ¸å¤ÎÍ×ÁǤؤΥݥ¤¥ó¥¿¤Ç¤¢¤ë¡£
377 Í×ÁǤϠ2 ½Å¤Ë¥ê¥ó¥¯¤µ¤ì¤Æ¤ª¤ê¡¢
378 Ǥ°Õ¤ÎÍ×ÁǤϥ­¥å¡¼¤òé¤é¤º¤Ëºï½ü¤Ç¤­¤ë¡£
379 ¿·¤·¤¤Í×ÁǤϡ¢´û¸¤ÎÍ×ÁǤθå¤Þ¤¿¤ÏÁ°¡¢¤Þ¤¿¤Ï¥­¥å¡¼¤ÎÀèƬ¤Þ¤¿¤ÏËöÈø¤ËÄɲäǤ­¤ë¡£
380 A
381 .B CIRCLEQ_HEAD
382 ¹½Â¤ÂΤϰʲ¼¤Î¤è¤¦¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë:
383 .in +4n
384 .nf
385
386 CIRCLEQ_HEAD(HEADNAME, TYPE) head;
387 .fi
388 .in
389 .PP
390 ¤³¤³¤Ç
391 .IR "HEADNAME"
392 ¤ÏÄêµÁ¤µ¤ì¤ë¹½Â¤ÂΤÎ̾Á°¤Ç¤¢¤ê¡¢
393 .IR "TYPE"
394 ¤Ï½Û´Ä¥­¥å¡¼Æâ¤Ç¥ê¥ó¥¯¤µ¤ì¤ëÍ×ÁǤη¿¤Ç¤¢¤ë¡£
395 ½Û´Ä¥­¥å¡¼¤ÎÀèƬ¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ï¡¢¤½¤Î¸å¤Ç¼¡¤Î¤è¤¦¤ËÀë¸À¤µ¤ì¤ë:
396 .in +4n
397 .nf
398
399 struct HEADNAME *headp;
400 .fi
401 .in
402 .PP
403 (̾Á°
404 .I head
405 ¤È
406 .I headp
407 ¤Ï¥æ¡¼¥¶¤¬ÁªÂò¤Ç¤­¤ë¡£)
408 .PP
409 ¥Þ¥¯¥í
410 .B CIRCLEQ_ENTRY
411 ¤Ï½Û´Ä¥­¥å¡¼¤ÎÍ×ÁǤòÀܳ¤¹¤ë¹½Â¤ÂΤòÀë¸À¤¹¤ë¡£
412 .PP
413 ¥Þ¥¯¥í
414 .B CIRCLEQ_INIT
415 ¤Ï
416 .I head
417 ¤Ç»²¾È¤µ¤ì¤ë½Û´Ä¥­¥å¡¼¤ò½é´ü²½¤¹¤ë¡£
418 .PP
419 ¥Þ¥¯¥í
420 .B CIRCLEQ_INSERT_HEAD
421 ¤Ï¿·¤¿¤ÊÍ×ÁÇ
422 .I elm
423 ¤ò½Û´Ä¥­¥å¡¼¤ÎÀèƬ¤ËÁÞÆþ¤¹¤ë¡£
424 .PP
425 ¥Þ¥¯¥í
426 .B CIRCLEQ_INSERT_TAIL
427 ¤Ï¿·¤¿¤ÊÍ×ÁÇ
428 .I elm
429 ¤ò½Û´Ä¥­¥å¡¼¤ÎËöÈø¤ËÁÞÆþ¤¹¤ë¡£
430 .PP
431 ¥Þ¥¯¥í
432 .B CIRCLEQ_INSERT_AFTER
433 ¤Ï¿·¤¿¤ÊÍ×ÁÇ
434 .I elm
435 ¤òÍ×ÁÇ
436 .I listelm
437 ¤Î¸å¤ËÁÞÆþ¤¹¤ë¡£
438 .PP
439 ¥Þ¥¯¥í
440 .B CIRCLEQ_INSERT_AFTER
441 ¤Ï¿·¤¿¤ÊÍ×ÁÇ
442 .I elm
443 ¤òÍ×ÁÇ
444 .I listelm
445 ¤ÎÁ°¤ËÁÞÆþ¤¹¤ë¡£
446 .PP
447 ¥Þ¥¯¥í
448 .B CIRCLEQ_REMOVE
449 ¤ÏÍ×ÁÇ
450 .I elm
451 ¤ò½Û´Ä¥­¥å¡¼¤«¤éºï½ü¤¹¤ë¡£
452 .SS ½Û´Ä¥­¥å¡¼¤ÎÎã
453 .nf
454
455 CIRCLEQ_HEAD(circleq, entry) head;
456 struct circleq *headp;                  /* ½Û´Ä¥­¥å¡¼¤ÎÀèƬ¡£*/
457 struct entry {
458     ...
459     CIRCLEQ_ENTRY(entry) entries;       /* ½Û´Ä¥­¥å¡¼¡£*/
460     ...
461 } *n1, *n2, *np;
462
463 CIRCLEQ_INIT(&head);                    /* ½Û´Ä¥­¥å¡¼¤ò½é´ü²½¤¹¤ë¡£*/
464
465 n1 = malloc(sizeof(struct entry));      /* ÀèƬ¤ËÁÞÆþ¤¹¤ë¡£*/
466 CIRCLEQ_INSERT_HEAD(&head, n1, entries);
467
468 n1 = malloc(sizeof(struct entry));      /* ËöÈø¤ËÁÞÆþ¤¹¤ë¡£*/
469 CIRCLEQ_INSERT_TAIL(&head, n1, entries);
470
471 n2 = malloc(sizeof(struct entry));      /* ¸å¤í¤ËÁÞÆþ¤¹¤ë¡£*/
472 CIRCLEQ_INSERT_AFTER(&head, n1, n2, entries);
473
474 n2 = malloc(sizeof(struct entry));      /* Á°¤ËÁÞÆþ¤¹¤ë¡£*/
475 CIRCLEQ_INSERT_BEFORE(&head, n1, n2, entries);
476                                         /* ½çÊý¸þ¤Ëé¤ë¡£*/
477 for (np = head.cqh_first; np != (void *)&head; np = np\->entries.cqe_next)
478     np\-> ...
479                                         /* µÕÊý¸þ¤Ëé¤ë¡£*/
480 for (np = head.cqh_last; np != (void *)&head; np = np\->entries.cqe_prev)
481     np\-> ...
482                                         /* ºï½ü¤¹¤ë¡£*/
483 while (head.cqh_first != (void *)&head)
484     CIRCLEQ_REMOVE(&head, head.cqh_first, entries);
485 .fi
486 .SH ½àµò
487 POSIX.1-2001 ¤Ë¤Ï¤Ê¤¤¡£
488 BSD ·Ï¤Ë¸ºß¤¹¤ë¡£
489 queue ´Ø¿ô¤Ï 4.4BSD ¤Ç½é¤á¤ÆÅо줷¤¿¡£