Annotation of embedaddon/nginx/src/core/ngx_palloc.h, revision 1.1
1.1 ! misho 1:
! 2: /*
! 3: * Copyright (C) Igor Sysoev
! 4: * Copyright (C) Nginx, Inc.
! 5: */
! 6:
! 7:
! 8: #ifndef _NGX_PALLOC_H_INCLUDED_
! 9: #define _NGX_PALLOC_H_INCLUDED_
! 10:
! 11:
! 12: #include <ngx_config.h>
! 13: #include <ngx_core.h>
! 14:
! 15:
! 16: /*
! 17: * NGX_MAX_ALLOC_FROM_POOL should be (ngx_pagesize - 1), i.e. 4095 on x86.
! 18: * On Windows NT it decreases a number of locked pages in a kernel.
! 19: */
! 20: #define NGX_MAX_ALLOC_FROM_POOL (ngx_pagesize - 1)
! 21:
! 22: #define NGX_DEFAULT_POOL_SIZE (16 * 1024)
! 23:
! 24: #define NGX_POOL_ALIGNMENT 16
! 25: #define NGX_MIN_POOL_SIZE \
! 26: ngx_align((sizeof(ngx_pool_t) + 2 * sizeof(ngx_pool_large_t)), \
! 27: NGX_POOL_ALIGNMENT)
! 28:
! 29:
! 30: typedef void (*ngx_pool_cleanup_pt)(void *data);
! 31:
! 32: typedef struct ngx_pool_cleanup_s ngx_pool_cleanup_t;
! 33:
! 34: struct ngx_pool_cleanup_s {
! 35: ngx_pool_cleanup_pt handler;
! 36: void *data;
! 37: ngx_pool_cleanup_t *next;
! 38: };
! 39:
! 40:
! 41: typedef struct ngx_pool_large_s ngx_pool_large_t;
! 42:
! 43: struct ngx_pool_large_s {
! 44: ngx_pool_large_t *next;
! 45: void *alloc;
! 46: };
! 47:
! 48:
! 49: typedef struct {
! 50: u_char *last;
! 51: u_char *end;
! 52: ngx_pool_t *next;
! 53: ngx_uint_t failed;
! 54: } ngx_pool_data_t;
! 55:
! 56:
! 57: struct ngx_pool_s {
! 58: ngx_pool_data_t d;
! 59: size_t max;
! 60: ngx_pool_t *current;
! 61: ngx_chain_t *chain;
! 62: ngx_pool_large_t *large;
! 63: ngx_pool_cleanup_t *cleanup;
! 64: ngx_log_t *log;
! 65: };
! 66:
! 67:
! 68: typedef struct {
! 69: ngx_fd_t fd;
! 70: u_char *name;
! 71: ngx_log_t *log;
! 72: } ngx_pool_cleanup_file_t;
! 73:
! 74:
! 75: void *ngx_alloc(size_t size, ngx_log_t *log);
! 76: void *ngx_calloc(size_t size, ngx_log_t *log);
! 77:
! 78: ngx_pool_t *ngx_create_pool(size_t size, ngx_log_t *log);
! 79: void ngx_destroy_pool(ngx_pool_t *pool);
! 80: void ngx_reset_pool(ngx_pool_t *pool);
! 81:
! 82: void *ngx_palloc(ngx_pool_t *pool, size_t size);
! 83: void *ngx_pnalloc(ngx_pool_t *pool, size_t size);
! 84: void *ngx_pcalloc(ngx_pool_t *pool, size_t size);
! 85: void *ngx_pmemalign(ngx_pool_t *pool, size_t size, size_t alignment);
! 86: ngx_int_t ngx_pfree(ngx_pool_t *pool, void *p);
! 87:
! 88:
! 89: ngx_pool_cleanup_t *ngx_pool_cleanup_add(ngx_pool_t *p, size_t size);
! 90: void ngx_pool_run_cleanup_file(ngx_pool_t *p, ngx_fd_t fd);
! 91: void ngx_pool_cleanup_file(void *data);
! 92: void ngx_pool_delete_file(void *data);
! 93:
! 94:
! 95: #endif /* _NGX_PALLOC_H_INCLUDED_ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>