Home | History | Annotate | Download | only in src

Lines Matching defs:Ring

39 /* From ring.h */
40 typedef struct Ring RingItem;
41 typedef struct Ring {
44 } Ring;
46 static inline void ring_init(Ring *ring)
48 ring->next = ring->prev = ring;
61 static inline int ring_is_empty(Ring *ring)
63 assert(ring->next != NULL && ring->prev != NULL);
64 return ring == ring->next;
67 static inline void ring_add(Ring *ring, RingItem *item)
69 assert(ring->next != NULL && ring->prev != NULL);
72 item->next = ring->next;
73 item->prev = ring;
74 ring->next = item->next->prev = item;
92 static inline RingItem *ring_get_head(Ring *ring)
96 assert(ring->next != NULL && ring->prev != NULL);
98 if (ring_is_empty(ring)) {
101 ret = ring->next;
105 static inline RingItem *ring_get_tail(Ring *ring)
109 assert(ring->next != NULL && ring->prev != NULL);
111 if (ring_is_empty(ring)) {
114 ret = ring->prev;
118 static inline RingItem *ring_next(Ring *ring, RingItem *pos)
122 assert(ring->next != NULL && ring->prev != NULL);
126 return (ret == ring) ? NULL : ret;
129 static inline RingItem *ring_prev(Ring *ring, RingItem *pos)
133 assert(ring->next != NULL && ring->prev != NULL);
137 return (ret == ring) ? NULL : ret;
140 #define RING_FOREACH_SAFE(var, next, ring) \
141 for ((var) = ring_get_head(ring), \
142 (next) = (var) ? ring_next(ring, (var)) : NULL; \
145 (next) = (var) ? ring_next(ring, (var)) : NULL)
206 Ring watches;
314 static int no_write_watches(Ring *w)