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);