diff options
author | Igor Sysoev <igor@sysoev.ru> | 2006-11-20 08:51:45 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2006-11-20 08:51:45 +0000 |
commit | 67cd336d88f8a920ea5921936785a1c1553062fb (patch) | |
tree | f76934379e98e22854638a4ddc44b022deefd265 /src/os/unix | |
parent | cae66582d5e6137d3b53552fcb84520a042841ca (diff) | |
download | nginx-67cd336d88f8a920ea5921936785a1c1553062fb.tar.gz nginx-67cd336d88f8a920ea5921936785a1c1553062fb.zip |
slab allocator in shared memory
Diffstat (limited to 'src/os/unix')
-rw-r--r-- | src/os/unix/ngx_alloc.c | 3 | ||||
-rw-r--r-- | src/os/unix/ngx_alloc.h | 3 | ||||
-rw-r--r-- | src/os/unix/ngx_posix_init.c | 6 |
3 files changed, 10 insertions, 2 deletions
diff --git a/src/os/unix/ngx_alloc.c b/src/os/unix/ngx_alloc.c index 25606e2f6..c38d7d27e 100644 --- a/src/os/unix/ngx_alloc.c +++ b/src/os/unix/ngx_alloc.c @@ -8,7 +8,8 @@ #include <ngx_core.h> -int ngx_pagesize; +ngx_uint_t ngx_pagesize; +ngx_uint_t ngx_pagesize_shift; ngx_uint_t ngx_cacheline_size; diff --git a/src/os/unix/ngx_alloc.h b/src/os/unix/ngx_alloc.h index a88818e2e..8b7b766b2 100644 --- a/src/os/unix/ngx_alloc.h +++ b/src/os/unix/ngx_alloc.h @@ -36,7 +36,8 @@ void *ngx_memalign(size_t alignment, size_t size, ngx_log_t *log); #endif -extern int ngx_pagesize; +extern ngx_uint_t ngx_pagesize; +extern ngx_uint_t ngx_pagesize_shift; extern ngx_uint_t ngx_cacheline_size; diff --git a/src/os/unix/ngx_posix_init.c b/src/os/unix/ngx_posix_init.c index 4844ae52f..39e1b584a 100644 --- a/src/os/unix/ngx_posix_init.c +++ b/src/os/unix/ngx_posix_init.c @@ -30,6 +30,8 @@ ngx_os_io_t ngx_os_io = { ngx_int_t ngx_os_init(ngx_log_t *log) { + ngx_uint_t n; + #if (NGX_HAVE_OS_SPECIFIC_INIT) if (ngx_os_specific_init(log) != NGX_OK) { return NGX_ERROR; @@ -41,6 +43,10 @@ ngx_os_init(ngx_log_t *log) ngx_pagesize = getpagesize(); ngx_cacheline_size = NGX_CPU_CACHE_LINE; + n = ngx_pagesize; + + for (n = ngx_pagesize; n >>= 1; ngx_pagesize_shift++) { /* void */ } + if (ngx_ncpu == 0) { ngx_ncpu = 1; } |