Mercurial > hg > nginx
view src/os/win32/ngx_shmem.c @ 681:7e24168b0853 release-0.4.0
nginx-0.4.0-RELEASE import
*) Change in internal API: the HTTP modules initialization was moved
from the init module phase to the HTTP postconfiguration phase.
*) Change: now the request body is not read beforehand for the
ngx_http_perl_module: it's required to start the reading using the
$r->has_request_body method.
*) Feature: the ngx_http_perl_module supports the DECLINED return code.
*) Feature: the ngx_http_dav_module supports the incoming "Date" header
line for the PUT method.
*) Feature: the "ssi" directive is available inside the "if" block.
*) Bugfix: a segmentation fault occurred if there was an "index"
directive with variables and the first index name was without
variables; the bug had appeared in 0.1.29.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 30 Aug 2006 10:39:17 +0000 |
parents | 5dac8c7fb71b |
children | d5896f6608e8 |
line wrap: on
line source
/* * Copyright (C) Igor Sysoev */ #include <ngx_config.h> #include <ngx_core.h> /* * TODO: * maping name or inheritable handle */ ngx_int_t ngx_shm_alloc(ngx_shm_t *shm) { shm->handle = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, shm->size, NULL); if (shm->handle == NULL) { ngx_log_error(NGX_LOG_ALERT, shm->log, ngx_errno, "CreateFileMapping(%uz) failed", shm->size); return NGX_ERROR; } shm->addr = MapViewOfFile(shm->handle, FILE_MAP_WRITE, 0, 0, 0); if (shm->addr == NULL) { ngx_log_error(NGX_LOG_ALERT, shm->log, ngx_errno, "MapViewOfFile(%uz) failed", shm->size); if (CloseHandle(shm->handle) == 0) { ngx_log_error(NGX_LOG_ALERT, shm->log, ngx_errno, "CloseHandle() failed"); } return NGX_ERROR; } return NGX_OK; } void ngx_shm_free(ngx_shm_t *shm) { if (UnmapViewOfFile(shm->addr) == 0) { ngx_log_error(NGX_LOG_ALERT, shm->log, ngx_errno, "UnmapViewOfFile(%p) failed", shm->addr); } if (CloseHandle(shm->handle) == 0) { ngx_log_error(NGX_LOG_ALERT, shm->log, ngx_errno, "CloseHandle() failed"); } }