Annotation of embedaddon/nginx/src/core/ngx_queue.h, revision 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>