Annotation of embedaddon/nginx/src/core/ngx_queue.h, revision 1.1.1.1
1.1 misho 1:
2: /*
3: * Copyright (C) Igor Sysoev
4: * Copyright (C) Nginx, Inc.
5: */
6:
7:
8: #include <ngx_config.h>
9: #include <ngx_core.h>
10:
11:
12: #ifndef _NGX_QUEUE_H_INCLUDED_
13: #define _NGX_QUEUE_H_INCLUDED_
14:
15:
16: typedef struct ngx_queue_s ngx_queue_t;
17:
18: struct ngx_queue_s {
19: ngx_queue_t *prev;
20: ngx_queue_t *next;
21: };
22:
23:
24: #define ngx_queue_init(q) \
25: (q)->prev = q; \
26: (q)->next = q
27:
28:
29: #define ngx_queue_empty(h) \
30: (h == (h)->prev)
31:
32:
33: #define ngx_queue_insert_head(h, x) \
34: (x)->next = (h)->next; \
35: (x)->next->prev = x; \
36: (x)->prev = h; \
37: (h)->next = x
38:
39:
40: #define ngx_queue_insert_after ngx_queue_insert_head
41:
42:
43: #define ngx_queue_insert_tail(h, x) \
44: (x)->prev = (h)->prev; \
45: (x)->prev->next = x; \
46: (x)->next = h; \
47: (h)->prev = x
48:
49:
50: #define ngx_queue_head(h) \
51: (h)->next
52:
53:
54: #define ngx_queue_last(h) \
55: (h)->prev
56:
57:
58: #define ngx_queue_sentinel(h) \
59: (h)
60:
61:
62: #define ngx_queue_next(q) \
63: (q)->next
64:
65:
66: #define ngx_queue_prev(q) \
67: (q)->prev
68:
69:
70: #if (NGX_DEBUG)
71:
72: #define ngx_queue_remove(x) \
73: (x)->next->prev = (x)->prev; \
74: (x)->prev->next = (x)->next; \
75: (x)->prev = NULL; \
76: (x)->next = NULL
77:
78: #else
79:
80: #define ngx_queue_remove(x) \
81: (x)->next->prev = (x)->prev; \
82: (x)->prev->next = (x)->next
83:
84: #endif
85:
86:
87: #define ngx_queue_split(h, q, n) \
88: (n)->prev = (h)->prev; \
89: (n)->prev->next = n; \
90: (n)->next = q; \
91: (h)->prev = (q)->prev; \
92: (h)->prev->next = h; \
93: (q)->prev = n;
94:
95:
96: #define ngx_queue_add(h, n) \
97: (h)->prev->next = (n)->next; \
98: (n)->next->prev = (h)->prev; \
99: (h)->prev = (n)->prev; \
100: (h)->prev->next = h;
101:
102:
103: #define ngx_queue_data(q, type, link) \
104: (type *) ((u_char *) q - offsetof(type, link))
105:
106:
107: ngx_queue_t *ngx_queue_middle(ngx_queue_t *queue);
108: void ngx_queue_sort(ngx_queue_t *queue,
109: ngx_int_t (*cmp)(const ngx_queue_t *, const ngx_queue_t *));
110:
111:
112: #endif /* _NGX_QUEUE_H_INCLUDED_ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>