blob: e64f84f4a0aa59c8984b0bb5c5809a98bad6a04c [file] [log] [blame]
Igor Sysoev6de5c2c2002-08-06 16:39:45 +00001#ifndef _NGX_ALLOC_H_INCLUDED_
2#define _NGX_ALLOC_H_INCLUDED_
3
4
5#include <ngx_config.h>
Igor Sysoev1c104622003-06-03 15:42:58 +00006#include <ngx_core.h>
Igor Sysoev6de5c2c2002-08-06 16:39:45 +00007
Igor Sysoev6de5c2c2002-08-06 16:39:45 +00008
Igor Sysoevf1079102003-10-23 06:13:16 +00009/*
Igor Sysoeva8fa0a62003-11-25 20:44:56 +000010 * NGX_MAX_ALLOC_FROM_POOL should be (NGX_PAGE_SIZE - 1), i.e. 4095 on x86.
Igor Sysoevf1079102003-10-23 06:13:16 +000011 * On FreeBSD 5.x it allows to use zero copy send.
Igor Sysoeva8fa0a62003-11-25 20:44:56 +000012 * On Windows NT it decreases a number of locked pages in a kernel.
Igor Sysoevb1ab5d02003-04-21 14:55:47 +000013 */
14#define NGX_MAX_ALLOC_FROM_POOL 4095
Igor Sysoev6de5c2c2002-08-06 16:39:45 +000015
Igor Sysoev6de5c2c2002-08-06 16:39:45 +000016#define NGX_DEFAULT_POOL_SIZE (16 * 1024)
17
Igor Sysoev4e9393a2003-01-09 05:36:00 +000018#define ngx_test_null(p, alloc, rc) if ((p = alloc) == NULL) { return rc; }
Igor Sysoev6de5c2c2002-08-06 16:39:45 +000019
20
21typedef struct ngx_pool_large_s ngx_pool_large_t;
Igor Sysoev1c104622003-06-03 15:42:58 +000022
Igor Sysoev6de5c2c2002-08-06 16:39:45 +000023struct ngx_pool_large_s {
24 ngx_pool_large_t *next;
25 void *alloc;
26};
27
Igor Sysoev1c104622003-06-03 15:42:58 +000028
29typedef struct ngx_pool_s ngx_pool_t;
30
Igor Sysoev6de5c2c2002-08-06 16:39:45 +000031struct ngx_pool_s {
32 char *last;
33 char *end;
34 ngx_pool_t *next;
35 ngx_pool_large_t *large;
36 ngx_log_t *log;
37};
38
39
40void *ngx_alloc(size_t size, ngx_log_t *log);
41void *ngx_calloc(size_t size, ngx_log_t *log);
42
43ngx_pool_t *ngx_create_pool(size_t size, ngx_log_t *log);
44void ngx_destroy_pool(ngx_pool_t *pool);
45
46void *ngx_palloc(ngx_pool_t *pool, size_t size);
47void *ngx_pcalloc(ngx_pool_t *pool, size_t size);
Igor Sysoevf1079102003-10-23 06:13:16 +000048void ngx_pfree(ngx_pool_t *pool, void *p);
49
Igor Sysoev6de5c2c2002-08-06 16:39:45 +000050
Igor Sysoeva9830112003-05-19 16:39:14 +000051#define ngx_free free
52
Igor Sysoev6de5c2c2002-08-06 16:39:45 +000053
54#endif /* _NGX_ALLOC_H_INCLUDED_ */