Lines Matching refs:elm
60 #define SH_LIST_NEXTP(elm, field, type) \ argument
61 ((struct type *)(((u_int8_t *)(elm)) + (elm)->field.sle_next))
63 #define SH_LIST_NEXT(elm, field, type) \ argument
64 ((elm)->field.sle_next == -1 ? NULL : \
65 ((struct type *)(((u_int8_t *)(elm)) + (elm)->field.sle_next)))
67 #define SH_LIST_PREV(elm, field) \ argument
68 ((ssize_t *)(((u_int8_t *)(elm)) + (elm)->field.sle_prev))
80 #define SH_LIST_NEXT_TO_PREV(elm, field) \ argument
81 (-(elm)->field.sle_next + SH_PTR_TO_OFF(elm, &(elm)->field.sle_next))
85 #define SH_LIST_INSERT_AFTER(listelm, elm, field, type) do { \ argument
87 (elm)->field.sle_next = SH_PTR_TO_OFF(elm, \
90 SH_LIST_NEXT_TO_PREV(elm, field); \
92 (elm)->field.sle_next = -1; \
93 (listelm)->field.sle_next = SH_PTR_TO_OFF(listelm, elm); \
94 (elm)->field.sle_prev = SH_LIST_NEXT_TO_PREV(listelm, field); \
97 #define SH_LIST_INSERT_HEAD(head, elm, field, type) do { \ argument
99 (elm)->field.sle_next = \
100 (head)->slh_first - SH_PTR_TO_OFF(head, elm); \
102 SH_LIST_NEXT_TO_PREV(elm, field); \
104 (elm)->field.sle_next = -1; \
105 (head)->slh_first = SH_PTR_TO_OFF(head, elm); \
106 (elm)->field.sle_prev = SH_PTR_TO_OFF(elm, &(head)->slh_first); \
109 #define SH_LIST_REMOVE(elm, field, type) do { \ argument
110 if ((elm)->field.sle_next != -1) { \
111 SH_LIST_NEXTP(elm, field, type)->field.sle_prev = \
112 (elm)->field.sle_prev - (elm)->field.sle_next; \
113 *SH_LIST_PREV(elm, field) += (elm)->field.sle_next; \
115 *SH_LIST_PREV(elm, field) = -1; \
142 #define SH_TAILQ_NEXTP(elm, field, type) \ argument
143 ((struct type *)((u_int8_t *)(elm) + (elm)->field.stqe_next))
145 #define SH_TAILQ_NEXT(elm, field, type) \ argument
146 ((elm)->field.stqe_next == -1 ? NULL : SH_TAILQ_NEXTP(elm, field, type))
148 #define SH_TAILQ_PREVP(elm, field) \ argument
149 ((ssize_t *)((u_int8_t *)(elm) + (elm)->field.stqe_prev))
154 #define SH_TAILQ_NEXT_TO_PREV(elm, field) \ argument
155 (-(elm)->field.stqe_next + SH_PTR_TO_OFF(elm, &(elm)->field.stqe_next))
164 #define SH_TAILQ_INSERT_HEAD(head, elm, field, type) do { \ argument
166 (elm)->field.stqe_next = \
167 (head)->stqh_first - SH_PTR_TO_OFF(head, elm); \
169 SH_TAILQ_NEXT_TO_PREV(elm, field); \
171 (elm)->field.stqe_next = -1; \
173 SH_PTR_TO_OFF(head, &(elm)->field.stqe_next); \
175 (head)->stqh_first = SH_PTR_TO_OFF(head, elm); \
176 (elm)->field.stqe_prev = \
177 SH_PTR_TO_OFF(elm, &(head)->stqh_first); \
180 #define SH_TAILQ_INSERT_TAIL(head, elm, field) do { \ argument
181 (elm)->field.stqe_next = -1; \
182 (elm)->field.stqe_prev = \
183 -SH_PTR_TO_OFF(head, elm) + (head)->stqh_last; \
186 (head)->stqh_first = SH_PTR_TO_OFF(head, elm); \
189 SH_PTR_TO_OFF((elm), &(elm)->field.stqe_next) + \
190 SH_PTR_TO_OFF(head, elm); \
192 SH_PTR_TO_OFF(head, &((elm)->field.stqe_next)); \
195 #define SH_TAILQ_INSERT_AFTER(head, listelm, elm, field, type) do { \ argument
197 (elm)->field.stqe_next = (listelm)->field.stqe_next - \
198 SH_PTR_TO_OFF(listelm, elm); \
200 SH_TAILQ_NEXT_TO_PREV(elm, field); \
202 (elm)->field.stqe_next = -1; \
204 SH_PTR_TO_OFF(head, &elm->field.stqe_next); \
206 (listelm)->field.stqe_next = SH_PTR_TO_OFF(listelm, elm); \
207 (elm)->field.stqe_prev = SH_TAILQ_NEXT_TO_PREV(listelm, field); \
210 #define SH_TAILQ_REMOVE(head, elm, field, type) do { \ argument
211 if ((elm)->field.stqe_next != -1) { \
212 SH_TAILQ_NEXTP(elm, field, type)->field.stqe_prev = \
213 (elm)->field.stqe_prev + \
214 SH_PTR_TO_OFF(SH_TAILQ_NEXTP(elm, \
215 field, type), elm); \
216 *SH_TAILQ_PREVP(elm, field) += elm->field.stqe_next; \
218 (head)->stqh_last = (elm)->field.stqe_prev + \
219 SH_PTR_TO_OFF(head, elm); \
220 *SH_TAILQ_PREVP(elm, field) = -1; \
255 #define SH_CIRCLEQ_NEXTP(elm, field, type) \ argument
256 ((struct type *)(((u_int8_t *)(elm)) + (elm)->field.scqe_next))
258 #define SH_CIRCLEQ_NEXT(head, elm, field, type) \ argument
259 ((elm)->field.scqe_next == SH_PTR_TO_OFF(elm, head) ? \
260 (void *)head : SH_CIRCLEQ_NEXTP(elm, field, type))
262 #define SH_CIRCLEQ_PREVP(elm, field, type) \ argument
263 ((struct type *)(((u_int8_t *)(elm)) + (elm)->field.scqe_prev))
265 #define SH_CIRCLEQ_PREV(head, elm, field, type) \ argument
266 ((elm)->field.scqe_prev == SH_PTR_TO_OFF(elm, head) ? \
267 (void *)head : SH_CIRCLEQ_PREVP(elm, field, type))
276 #define SH_CIRCLEQ_INSERT_AFTER(head, listelm, elm, field, type) do { \ argument
277 (elm)->field.scqe_prev = SH_PTR_TO_OFF(elm, listelm); \
278 (elm)->field.scqe_next = (listelm)->field.scqe_next + \
279 (elm)->field.scqe_prev; \
281 (head)->scqh_last = SH_PTR_TO_OFF(head, elm); \
286 field, type), elm); \
287 (listelm)->field.scqe_next = -(elm)->field.scqe_prev; \
290 #define SH_CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field, type) do { \ argument
291 (elm)->field.scqe_next = SH_PTR_TO_OFF(elm, listelm); \
292 (elm)->field.scqe_prev = (elm)->field.scqe_next - \
295 (head)->scqh_first = SH_PTR_TO_OFF(head, elm); \
300 field, type), elm); \
301 (listelm)->field.scqe_prev = -(elm)->field.scqe_next; \
304 #define SH_CIRCLEQ_INSERT_HEAD(head, elm, field, type) do { \ argument
305 (elm)->field.scqe_prev = SH_PTR_TO_OFF(elm, head); \
306 (elm)->field.scqe_next = (head)->scqh_first + \
307 (elm)->field.scqe_prev; \
309 (head)->scqh_last = -(elm)->field.scqe_prev; \
312 SH_PTR_TO_OFF(SH_CIRCLEQ_FIRSTP(head, type), elm); \
313 (head)->scqh_first = -(elm)->field.scqe_prev; \
316 #define SH_CIRCLEQ_INSERT_TAIL(head, elm, field, type) do { \ argument
317 (elm)->field.scqe_next = SH_PTR_TO_OFF(elm, head); \
318 (elm)->field.scqe_prev = (head)->scqh_last + \
319 (elm)->field.scqe_next; \
321 (head)->scqh_first = -(elm)->field.scqe_next; \
324 SH_PTR_TO_OFF(SH_CIRCLEQ_LASTP(head, type), elm); \
325 (head)->scqh_last = -(elm)->field.scqe_next; \
328 #define SH_CIRCLEQ_REMOVE(head, elm, field, type) do { \ argument
329 if (SH_CIRCLEQ_NEXTP(elm, field, type) == (void *)(head)) \
330 (head)->scqh_last += (elm)->field.scqe_prev; \
332 SH_CIRCLEQ_NEXTP(elm, field, type)->field.scqe_prev += \
333 (elm)->field.scqe_prev; \
334 if (SH_CIRCLEQ_PREVP(elm, field, type) == (void *)(head)) \
335 (head)->scqh_first += (elm)->field.scqe_next; \
337 SH_CIRCLEQ_PREVP(elm, field, type)->field.scqe_next += \
338 (elm)->field.scqe_next; \