summaryrefslogtreecommitdiff
path: root/lib/libdrm/libdrm_lists.h
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2013-03-25 02:32:21 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2013-03-25 02:32:21 +0000
commit772b7c37d98402773e200095eb483e2e12a84336 (patch)
tree48c61e271b02d83fa136444bbcd94d6f5e0bf93c /lib/libdrm/libdrm_lists.h
parenteafc582f025f0bcdfe962d2f7efae0240bbc081a (diff)
update to libdrm 2.4.42
tested by matthieu@ krw@ mpi@ shadchin@ and ajacoutot@ ok mpi@
Diffstat (limited to 'lib/libdrm/libdrm_lists.h')
-rw-r--r--lib/libdrm/libdrm_lists.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/libdrm/libdrm_lists.h b/lib/libdrm/libdrm_lists.h
index 6410f5733..8926d8d1a 100644
--- a/lib/libdrm/libdrm_lists.h
+++ b/lib/libdrm/libdrm_lists.h
@@ -78,6 +78,13 @@ typedef struct _drmMMListHead
#define DRMLISTEMPTY(__item) ((__item)->next == (__item))
+#define DRMLISTSINGLE(__list) \
+ (!DRMLISTEMPTY(__list) && ((__list)->next == (__list)->prev))
+
+#define DRMLISTFOREACH(__item, __list) \
+ for ((__item) = (__list)->next; \
+ (__item) != (__list); (__item) = (__item)->next)
+
#define DRMLISTFOREACHSAFE(__item, __temp, __list) \
for ((__item) = (__list)->next, (__temp) = (__item)->next; \
(__item) != (__list); \
@@ -87,3 +94,25 @@ typedef struct _drmMMListHead
for ((__item) = (__list)->prev, (__temp) = (__item)->prev; \
(__item) != (__list); \
(__item) = (__temp), (__temp) = (__item)->prev)
+
+#define DRMLISTFOREACHENTRY(__item, __list, __head) \
+ for ((__item) = DRMLISTENTRY(typeof(*__item), (__list)->next, __head); \
+ &(__item)->__head != (__list); \
+ (__item) = DRMLISTENTRY(typeof(*__item), \
+ (__item)->__head.next, __head))
+
+#define DRMLISTFOREACHENTRYSAFE(__item, __temp, __list, __head) \
+ for ((__item) = DRMLISTENTRY(typeof(*__item), (__list)->next, __head), \
+ (__temp) = DRMLISTENTRY(typeof(*__item), \
+ (__item)->__head.next, __head); \
+ &(__item)->__head != (__list); \
+ (__item) = (__temp), \
+ (__temp) = DRMLISTENTRY(typeof(*__item), \
+ (__temp)->__head.next, __head))
+
+#define DRMLISTJOIN(__list, __join) if (!DRMLISTEMPTY(__list)) { \
+ (__list)->next->prev = (__join); \
+ (__list)->prev->next = (__join)->next; \
+ (__join)->next->prev = (__list)->prev; \
+ (__join)->next = (__list)->next; \
+}