patch-2.1.92 linux/include/linux/lists.h
Next file: linux/include/linux/major.h
Previous file: linux/include/linux/isdnif.h
Back to the patch index
Back to the overall index
- Lines: 35
- Date:
Mon Mar 30 00:21:41 1998
- Orig file:
v2.1.91/linux/include/linux/lists.h
- Orig date:
Tue Jan 9 23:27:39 1996
diff -u --recursive --new-file v2.1.91/linux/include/linux/lists.h linux/include/linux/lists.h
@@ -13,7 +13,7 @@
#define DLIST_INIT(listnam) \
(listnam).dl_prev = &(listnam); \
- (listnam).dl_last = &(listnam);
+ (listnam).dl_next = &(listnam);
#define DLIST_NEXT(listnam) listnam.dl_next
#define DLIST_PREV(listnam) listnam.dl_prev
@@ -38,3 +38,25 @@
node->listnam.dl_next->listnam.dl_prev = \
node->listnam.dl_prev; \
} while (0)
+
+/*
+ * queue-style operations, which have a head and tail
+ */
+
+#define QUEUE_INIT(head, listnam, ptype) \
+ (head)->listnam.dl_prev = (head)->listnam.dl_next = (ptype)(head);
+
+#define QUEUE_FIRST(head, listnam) (head)->DLIST_NEXT(listnam)
+#define QUEUE_LAST(head, listnam) (head)->DLIST_PREV(listnam)
+#define QUEUE_EMPTY(head, listnam) \
+ ((QUEUE_FIRST(head, listnam) == QUEUE_LAST(head, listnam)) && \
+ ((u_long)QUEUE_FIRST(head, listnam) == (u_long)head))
+
+#define QUEUE_ENTER(head, new, listnam, ptype) do { \
+ (new)->listnam.dl_prev = (ptype)(head); \
+ (new)->listnam.dl_next = (head)->listnam.dl_next; \
+ (head)->listnam.dl_next->listnam.dl_prev = (new); \
+ (head)->listnam.dl_next = (new); \
+ } while (0)
+
+#define QUEUE_REMOVE(head, node, listnam) DLIST_DELETE(node, listnam)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov