Lines Matching refs:field

107 #define QLIST_INSERT_AFTER(listelm, elm, field) do {                    \
108 if (((elm)->field.le_next = (listelm)->field.le_next) != NULL) \
109 (listelm)->field.le_next->field.le_prev = \
110 &(elm)->field.le_next; \
111 (listelm)->field.le_next = (elm); \
112 (elm)->field.le_prev = &(listelm)->field.le_next; \
115 #define QLIST_INSERT_BEFORE(listelm, elm, field) do { \
116 (elm)->field.le_prev = (listelm)->field.le_prev; \
117 (elm)->field.le_next = (listelm); \
118 *(listelm)->field.le_prev = (elm); \
119 (listelm)->field.le_prev = &(elm)->field.le_next; \
122 #define QLIST_INSERT_HEAD(head, elm, field) do { \
123 if (((elm)->field.le_next = (head)->lh_first) != NULL) \
124 (head)->lh_first->field.le_prev = &(elm)->field.le_next;\
126 (elm)->field.le_prev = &(head)->lh_first; \
129 #define QLIST_INSERT_HEAD_RCU(head, elm, field) do { \
130 (elm)->field.le_prev = &(head)->lh_first; \
131 (elm)->field.le_next = (head)->lh_first; \
134 (head)->lh_first->field.le_prev = &(elm)->field.le_next; \
140 #define QLIST_REMOVE(elm, field) do { \
141 if ((elm)->field.le_next != NULL) \
142 (elm)->field.le_next->field.le_prev = \
143 (elm)->field.le_prev; \
144 *(elm)->field.le_prev = (elm)->field.le_next; \
147 #define QLIST_FOREACH(var, head, field) \
150 (var) = ((var)->field.le_next))
152 #define QLIST_FOREACH_SAFE(var, head, field, next_var) \
154 (var) && ((next_var) = ((var)->field.le_next), 1); \
162 #define QLIST_NEXT(elm, field) ((elm)->field.le_next)
188 #define QSLIST_INSERT_AFTER(slistelm, elm, field) do { \
189 (elm)->field.sle_next = (slistelm)->field.sle_next; \
190 (slistelm)->field.sle_next = (elm); \
193 #define QSLIST_INSERT_HEAD(head, elm, field) do { \
194 (elm)->field.sle_next = (head)->slh_first; \
198 #define QSLIST_REMOVE_HEAD(head, field) do { \
199 (head)->slh_first = (head)->slh_first->field.sle_next; \
202 #define QSLIST_REMOVE_AFTER(slistelm, field) do { \
203 (slistelm)->field.sle_next = \
204 QSLIST_NEXT(QSLIST_NEXT((slistelm), field), field); \
207 #define QSLIST_FOREACH(var, head, field) \
208 for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next)
210 #define QSLIST_FOREACH_SAFE(var, head, field, tvar) \
212 (var) && ((tvar) = QSLIST_NEXT((var), field), 1); \
220 #define QSLIST_NEXT(elm, field) ((elm)->field.sle_next)
248 #define QSIMPLEQ_INSERT_HEAD(head, elm, field) do { \
249 if (((elm)->field.sqe_next = (head)->sqh_first) == NULL) \
250 (head)->sqh_last = &(elm)->field.sqe_next; \
254 #define QSIMPLEQ_INSERT_TAIL(head, elm, field) do { \
255 (elm)->field.sqe_next = NULL; \
257 (head)->sqh_last = &(elm)->field.sqe_next; \
260 #define QSIMPLEQ_INSERT_AFTER(head, listelm, elm, field) do { \
261 if (((elm)->field.sqe_next = (listelm)->field.sqe_next) == NULL) \
262 (head)->sqh_last = &(elm)->field.sqe_next; \
263 (listelm)->field.sqe_next = (elm); \
266 #define QSIMPLEQ_REMOVE_HEAD(head, field) do { \
267 if (((head)->sqh_first = (head)->sqh_first->field.sqe_next) == NULL)\
271 #define QSIMPLEQ_REMOVE(head, elm, type, field) do { \
273 QSIMPLEQ_REMOVE_HEAD((head), field); \
276 while (curelm->field.sqe_next != (elm)) \
277 curelm = curelm->field.sqe_next; \
278 if ((curelm->field.sqe_next = \
279 curelm->field.sqe_next->field.sqe_next) == NULL) \
280 (head)->sqh_last = &(curelm)->field.sqe_next; \
284 #define QSIMPLEQ_FOREACH(var, head, field) \
287 (var) = ((var)->field.sqe_next))
289 #define QSIMPLEQ_FOREACH_SAFE(var, head, field, next) \
291 (var) && ((next = ((var)->field.sqe_next)), 1); \
302 #define QSIMPLEQ_LAST(head, type, field) \
306 ((char *)((head)->sqh_last) - offsetof(struct type, field))))
313 #define QSIMPLEQ_NEXT(elm, field) ((elm)->field.sqe_next)
344 #define QTAILQ_INSERT_HEAD(head, elm, field) do { \
345 if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \
346 (head)->tqh_first->field.tqe_prev = \
347 &(elm)->field.tqe_next; \
349 (head)->tqh_last = &(elm)->field.tqe_next; \
351 (elm)->field.tqe_prev = &(head)->tqh_first; \
354 #define QTAILQ_INSERT_TAIL(head, elm, field) do { \
355 (elm)->field.tqe_next = NULL; \
356 (elm)->field.tqe_prev = (head)->tqh_last; \
358 (head)->tqh_last = &(elm)->field.tqe_next; \
361 #define QTAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
362 if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\
363 (elm)->field.tqe_next->field.tqe_prev = \
364 &(elm)->field.tqe_next; \
366 (head)->tqh_last = &(elm)->field.tqe_next; \
367 (listelm)->field.tqe_next = (elm); \
368 (elm)->field.tqe_prev = &(listelm)->field.tqe_next; \
371 #define QTAILQ_INSERT_BEFORE(listelm, elm, field) do { \
372 (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \
373 (elm)->field.tqe_next = (listelm); \
374 *(listelm)->field.tqe_prev = (elm); \
375 (listelm)->field.tqe_prev = &(elm)->field.tqe_next; \
378 #define QTAILQ_REMOVE(head, elm, field) do { \
379 if (((elm)->field.tqe_next) != NULL) \
380 (elm)->field.tqe_next->field.tqe_prev = \
381 (elm)->field.tqe_prev; \
383 (head)->tqh_last = (elm)->field.tqe_prev; \
384 *(elm)->field.tqe_prev = (elm)->field.tqe_next; \
387 #define QTAILQ_FOREACH(var, head, field) \
390 (var) = ((var)->field.tqe_next))
392 #define QTAILQ_FOREACH_SAFE(var, head, field, next_var) \
394 (var) && ((next_var) = ((var)->field.tqe_next), 1); \
397 #define QTAILQ_FOREACH_REVERSE(var, head, headname, field) \
400 (var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last)))
407 #define QTAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
411 #define QTAILQ_PREV(elm, headname, field) \
412 (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))