Mercurial > hg > nginx
changeset 7875:0c5e84096d99
Core: added the ngx_rbtree_data() macro.
author | Vladimir Homutov <vl@nginx.com> |
---|---|
date | Mon, 21 Jun 2021 09:42:43 +0300 |
parents | d1079d6b2f19 |
children | b290610bf812 |
files | src/core/ngx_rbtree.h src/core/ngx_resolver.c src/event/ngx_event_timer.c |
diffstat | 3 files changed, 6 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/core/ngx_rbtree.h Fri Jun 18 04:00:21 2021 +0300 +++ b/src/core/ngx_rbtree.h Mon Jun 21 09:42:43 2021 +0300 @@ -47,6 +47,9 @@ (tree)->sentinel = s; \ (tree)->insert = i +#define ngx_rbtree_data(node, type, link) \ + (type *) ((u_char *) (node) - offsetof(type, link)) + void ngx_rbtree_insert(ngx_rbtree_t *tree, ngx_rbtree_node_t *node); void ngx_rbtree_delete(ngx_rbtree_t *tree, ngx_rbtree_node_t *node);
--- a/src/core/ngx_resolver.c Fri Jun 18 04:00:21 2021 +0300 +++ b/src/core/ngx_resolver.c Mon Jun 21 09:42:43 2021 +0300 @@ -51,9 +51,7 @@ } ngx_resolver_an_t; -#define ngx_resolver_node(n) \ - (ngx_resolver_node_t *) \ - ((u_char *) (n) - offsetof(ngx_resolver_node_t, node)) +#define ngx_resolver_node(n) ngx_rbtree_data(n, ngx_resolver_node_t, node) static ngx_int_t ngx_udp_connect(ngx_resolver_connection_t *rec);
--- a/src/event/ngx_event_timer.c Fri Jun 18 04:00:21 2021 +0300 +++ b/src/event/ngx_event_timer.c Mon Jun 21 09:42:43 2021 +0300 @@ -73,7 +73,7 @@ return; } - ev = (ngx_event_t *) ((char *) node - offsetof(ngx_event_t, timer)); + ev = ngx_rbtree_data(node, ngx_event_t, timer); ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0, "event timer del: %d: %M", @@ -113,7 +113,7 @@ node; node = ngx_rbtree_next(&ngx_event_timer_rbtree, node)) { - ev = (ngx_event_t *) ((char *) node - offsetof(ngx_event_t, timer)); + ev = ngx_rbtree_data(node, ngx_event_t, timer); if (!ev->cancelable) { return NGX_AGAIN;