Lines Matching refs:FIELD
271 #define list_entry(PTR, TYPE, FIELD) container_of(PTR, TYPE, FIELD)
272 #define list_first_entry(PTR, TYPE, FIELD) \
273 list_entry(list_first((PTR)), TYPE, FIELD)
274 #define list_first_entry_or_null(PTR, TYPE, FIELD) \
275 (list_empty((PTR)) ? NULL : list_entry(list_first((PTR)), TYPE, FIELD))
276 #define list_last_entry(PTR, TYPE, FIELD) \
277 list_entry(list_last((PTR)), TYPE, FIELD)
278 #define list_next_entry(ENTRY, FIELD) \
279 list_entry(list_next(&(ENTRY)->FIELD), typeof(*(ENTRY)), FIELD)
280 #define list_prev_entry(ENTRY, FIELD) \
281 list_entry(list_prev(&(ENTRY)->FIELD), typeof(*(ENTRY)), FIELD)
298 #define list_safe_reset_next(VAR, NEXT, FIELD) \
299 (NEXT) = list_next_entry(VAR, FIELD)
301 #define list_for_each_entry(VAR, HEAD, FIELD) \
302 for ((VAR) = list_entry(list_first((HEAD)), typeof(*(VAR)), FIELD); \
303 &(VAR)->FIELD != (HEAD); \
304 (VAR) = list_entry(list_next(&(VAR)->FIELD), typeof(*(VAR)), \
305 FIELD))
307 #define list_for_each_entry_safe(VAR, NEXT, HEAD, FIELD) \
308 for ((VAR) = list_entry(list_first((HEAD)), typeof(*(VAR)), FIELD); \
309 (&(VAR)->FIELD != (HEAD)) && \
310 ((NEXT) = list_entry(list_next(&(VAR)->FIELD), \
311 typeof(*(VAR)), FIELD), 1); \
314 #define list_for_each_entry_safe_reverse(VAR, NEXT, HEAD, FIELD) \
315 for ((VAR) = list_entry(list_last((HEAD)), typeof(*(VAR)), FIELD); \
316 (&(VAR)->FIELD != (HEAD)) && \
317 ((NEXT) = list_entry(list_prev(&(VAR)->FIELD), \
318 typeof(*(VAR)), FIELD), 1); \
321 #define list_for_each_entry_reverse(VAR, HEAD, FIELD) \
322 for ((VAR) = list_entry(list_last((HEAD)), typeof(*(VAR)), FIELD); \
323 &(VAR)->FIELD != (HEAD); \
324 (VAR) = list_entry(list_prev(&(VAR)->FIELD), typeof(*(VAR)), \
325 FIELD))
327 #define list_for_each_entry_continue(VAR, HEAD, FIELD) \
328 for ((VAR) = list_next_entry((VAR), FIELD); \
329 &(VAR)->FIELD != (HEAD); \
330 (VAR) = list_next_entry((VAR), FIELD))
332 #define list_for_each_entry_continue_reverse(VAR, HEAD, FIELD) \
333 for ((VAR) = list_prev_entry((VAR), FIELD); \
334 &(VAR)->FIELD != (HEAD); \
335 (VAR) = list_prev_entry((VAR), FIELD))
337 #define list_for_each_entry_from(VAR, HEAD, FIELD) \
339 (&(VAR)->FIELD != (HEAD)); \
340 (VAR) = list_next_entry((VAR), FIELD))
342 #define list_for_each_entry_from_reverse(VAR, HEAD, FIELD) \
344 (&(VAR)->FIELD != (HEAD)); \
345 (VAR) = list_prev_entry((VAR), FIELD))
347 #define list_for_each_entry_safe_from(VAR, NEXT, HEAD, FIELD) \
349 (&(VAR)->FIELD != (HEAD)) && \
350 ((NEXT) = list_next_entry((VAR), FIELD)); \
392 #define hlist_entry(PTR, TYPE, FIELD) container_of(PTR, TYPE, FIELD)
399 #define hlist_for_each_entry(VAR, HEAD, FIELD) \
402 FIELD)); \
404 (VAR) = (hlist_next(&(VAR)->FIELD) == NULL ? NULL : \
405 hlist_entry(hlist_next(&(VAR)->FIELD), typeof(*(VAR)),\
406 FIELD)))
408 #define hlist_for_each_entry_safe(VAR, NEXT, HEAD, FIELD) \
411 FIELD)); \
413 ((NEXT) = hlist_next(&(VAR)->FIELD), 1)); \
414 (VAR) = hlist_entry((NEXT), typeof(*(VAR)), FIELD))
437 #define hlist_for_each_entry_rcu(VAR, HEAD, FIELD) \
440 FIELD)); \
442 (VAR) = (hlist_next_rcu(&(VAR)->FIELD) == NULL ? NULL : \
443 hlist_entry(hlist_next_rcu(&(VAR)->FIELD), \
444 typeof(*(VAR)), FIELD)))