Mercurial > hg > nginx
comparison src/os/win32/ngx_shmem.c @ 2903:beb0707ed8ab
allow shared memory segments more than 4G
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sat, 30 May 2009 17:06:38 +0000 |
parents | d52cf82d0d77 |
children | 474a9daf8c80 |
comparison
equal
deleted
inserted
replaced
2902:a1a1c7e3fb8d | 2903:beb0707ed8ab |
---|---|
9 | 9 |
10 | 10 |
11 ngx_int_t | 11 ngx_int_t |
12 ngx_shm_alloc(ngx_shm_t *shm) | 12 ngx_shm_alloc(ngx_shm_t *shm) |
13 { | 13 { |
14 u_char *name; | 14 u_char *name; |
15 uint64_t size; | |
15 | 16 |
16 name = ngx_alloc(shm->name.len + 2 + sizeof(NGX_INT32_LEN), shm->log); | 17 name = ngx_alloc(shm->name.len + 2 + sizeof(NGX_INT32_LEN), shm->log); |
17 if (name == NULL) { | 18 if (name == NULL) { |
18 return NGX_ERROR; | 19 return NGX_ERROR; |
19 } | 20 } |
20 | 21 |
21 ngx_sprintf(name, "%V_%s%Z", &shm->name, ngx_unique); | 22 ngx_sprintf(name, "%V_%s%Z", &shm->name, ngx_unique); |
22 | 23 |
23 ngx_set_errno(0); | 24 ngx_set_errno(0); |
24 | 25 |
26 size = shm->size; | |
27 | |
25 shm->handle = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, | 28 shm->handle = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, |
26 0, shm->size, (char *) name); | 29 (u_long) (size >> 32), |
30 (u_long) (size & 0xffffffff), | |
31 (char *) name); | |
27 | 32 |
28 if (shm->handle == NULL) { | 33 if (shm->handle == NULL) { |
29 ngx_log_error(NGX_LOG_ALERT, shm->log, ngx_errno, | 34 ngx_log_error(NGX_LOG_ALERT, shm->log, ngx_errno, |
30 "CreateFileMapping(%uz, %s) failed", | 35 "CreateFileMapping(%uz, %s) failed", |
31 shm->size, shm->name.data); | 36 shm->size, shm->name.data); |