aboutsummaryrefslogtreecommitdiffstats
path: root/nginx/src/core/ngx_list.c
diff options
context:
space:
mode:
authorYu Ping <ping.yu@intel.com>2020-02-21 22:36:20 +0800
committerFlorin Coras <fcoras@cisco.com>2020-02-22 00:30:48 +0000
commit54346b61f91008c5098243b588f184ad92ad29c9 (patch)
tree60116fad568970aee2538a081de0560b0487db8c /nginx/src/core/ngx_list.c
parent4b0794f139564682503fcd2f59c7bcd3238e6633 (diff)
initial version of VSAP
Signed-off-by: Yu Ping <ping.yu@intel.com> Change-Id: I04d9150f0c7607ba20de9096b452476eff1622fc
Diffstat (limited to 'nginx/src/core/ngx_list.c')
-rw-r--r--nginx/src/core/ngx_list.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/nginx/src/core/ngx_list.c b/nginx/src/core/ngx_list.c
new file mode 100644
index 0000000..d0eb159
--- /dev/null
+++ b/nginx/src/core/ngx_list.c
@@ -0,0 +1,63 @@
+
+/*
+ * Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
+ */
+
+
+#include <ngx_config.h>
+#include <ngx_core.h>
+
+
+ngx_list_t *
+ngx_list_create(ngx_pool_t *pool, ngx_uint_t n, size_t size)
+{
+ ngx_list_t *list;
+
+ list = ngx_palloc(pool, sizeof(ngx_list_t));
+ if (list == NULL) {
+ return NULL;
+ }
+
+ if (ngx_list_init(list, pool, n, size) != NGX_OK) {
+ return NULL;
+ }
+
+ return list;
+}
+
+
+void *
+ngx_list_push(ngx_list_t *l)
+{
+ void *elt;
+ ngx_list_part_t *last;
+
+ last = l->last;
+
+ if (last->nelts == l->nalloc) {
+
+ /* the last part is full, allocate a new list part */
+
+ last = ngx_palloc(l->pool, sizeof(ngx_list_part_t));
+ if (last == NULL) {
+ return NULL;
+ }
+
+ last->elts = ngx_palloc(l->pool, l->nalloc * l->size);
+ if (last->elts == NULL) {
+ return NULL;
+ }
+
+ last->nelts = 0;
+ last->next = NULL;
+
+ l->last->next = last;
+ l->last = last;
+ }
+
+ elt = (char *) last->elts + l->size * last->nelts;
+ last->nelts++;
+
+ return elt;
+}