1e18a033bSKonstantin Ananyev
2e18a033bSKonstantin Ananyev/*
3e18a033bSKonstantin Ananyev * Copyright (C) Igor Sysoev
4e18a033bSKonstantin Ananyev * Copyright (C) Nginx, Inc.
5e18a033bSKonstantin Ananyev */
6e18a033bSKonstantin Ananyev
7e18a033bSKonstantin Ananyev
8e18a033bSKonstantin Ananyev#ifndef _NGX_SHMEM_H_INCLUDED_
9e18a033bSKonstantin Ananyev#define _NGX_SHMEM_H_INCLUDED_
10e18a033bSKonstantin Ananyev
11e18a033bSKonstantin Ananyev
12e18a033bSKonstantin Ananyev#include <ngx_config.h>
13e18a033bSKonstantin Ananyev#include <ngx_core.h>
14e18a033bSKonstantin Ananyev
15e18a033bSKonstantin Ananyev
16e18a033bSKonstantin Ananyevtypedef struct {
17e18a033bSKonstantin Ananyev    u_char      *addr;
18e18a033bSKonstantin Ananyev    size_t       size;
19e18a033bSKonstantin Ananyev    ngx_str_t    name;
20e18a033bSKonstantin Ananyev    HANDLE       handle;
21e18a033bSKonstantin Ananyev    ngx_log_t   *log;
22e18a033bSKonstantin Ananyev    ngx_uint_t   exists;   /* unsigned  exists:1;  */
23e18a033bSKonstantin Ananyev} ngx_shm_t;
24e18a033bSKonstantin Ananyev
25e18a033bSKonstantin Ananyev
26e18a033bSKonstantin Ananyevngx_int_t ngx_shm_alloc(ngx_shm_t *shm);
27e18a033bSKonstantin Ananyevngx_int_t ngx_shm_remap(ngx_shm_t *shm, u_char *addr);
28e18a033bSKonstantin Ananyevvoid ngx_shm_free(ngx_shm_t *shm);
29e18a033bSKonstantin Ananyev
30e18a033bSKonstantin Ananyevextern ngx_uint_t  ngx_allocation_granularity;
31e18a033bSKonstantin Ananyev
32e18a033bSKonstantin Ananyev
33e18a033bSKonstantin Ananyev#endif /* _NGX_SHMEM_H_INCLUDED_ */
34