xref: /unit/src/nxt_mem_map.h (revision 2084:7d479274f334)
10Sigor@sysoev.ru 
20Sigor@sysoev.ru /*
30Sigor@sysoev.ru  * Copyright (C) Igor Sysoev
40Sigor@sysoev.ru  * Copyright (C) NGINX, Inc.
50Sigor@sysoev.ru  */
60Sigor@sysoev.ru 
70Sigor@sysoev.ru #ifndef _NXT_UNIX_MEM_MAP_H_INCLUDED_
80Sigor@sysoev.ru #define _NXT_UNIX_MEM_MAP_H_INCLUDED_
90Sigor@sysoev.ru 
100Sigor@sysoev.ru 
110Sigor@sysoev.ru #define NXT_MEM_MAP_FAILED    MAP_FAILED
120Sigor@sysoev.ru 
130Sigor@sysoev.ru 
140Sigor@sysoev.ru #define NXT_MEM_MAP_READ      PROT_READ
150Sigor@sysoev.ru #define NXT_MEM_MAP_WRITE     PROT_WRITE
160Sigor@sysoev.ru 
170Sigor@sysoev.ru 
180Sigor@sysoev.ru #if (NXT_HAVE_MAP_ANONYMOUS)
190Sigor@sysoev.ru #define NXT_MEM_MAP_ANON      MAP_ANONYMOUS
200Sigor@sysoev.ru #else
210Sigor@sysoev.ru #define NXT_MEM_MAP_ANON      MAP_ANON
220Sigor@sysoev.ru #endif
230Sigor@sysoev.ru 
240Sigor@sysoev.ru #define NXT_MEM_MAP_SHARED    (MAP_SHARED | NXT_MEM_MAP_ANON)
250Sigor@sysoev.ru 
260Sigor@sysoev.ru 
270Sigor@sysoev.ru #if (NXT_HAVE_MAP_POPULATE)
280Sigor@sysoev.ru /*
290Sigor@sysoev.ru  * Linux MAP_POPULATE reads ahead and wires pages.
300Sigor@sysoev.ru  * (MAP_POPULATE | MAP_NONBLOCK) wires only resident pages
310Sigor@sysoev.ru  * without read ahead but it does not work since Linux 2.6.23.
320Sigor@sysoev.ru  */
330Sigor@sysoev.ru #define NXT_MEM_MAP_PREFAULT  MAP_POPULATE
340Sigor@sysoev.ru 
350Sigor@sysoev.ru #elif (NXT_HAVE_MAP_PREFAULT_READ)
360Sigor@sysoev.ru /* FreeBSD MAP_PREFAULT_READ wires resident pages without read ahead. */
370Sigor@sysoev.ru #define NXT_MEM_MAP_PREFAULT  MAP_PREFAULT_READ
380Sigor@sysoev.ru 
390Sigor@sysoev.ru #else
400Sigor@sysoev.ru #define NXT_MEM_MAP_PREFAULT  0
410Sigor@sysoev.ru #endif
420Sigor@sysoev.ru 
430Sigor@sysoev.ru #define NXT_MEM_MAP_FILE      (MAP_SHARED | NXT_MEM_MAP_PREFAULT)
440Sigor@sysoev.ru 
450Sigor@sysoev.ru 
46*2084Salx.manpages@gmail.com #define     nxt_mem_map_file_ctx_t(ctx)
470Sigor@sysoev.ru 
480Sigor@sysoev.ru 
49*2084Salx.manpages@gmail.com #define nxt_mem_map(addr, ctx, len, protection, flags, fd, offset)            \
500Sigor@sysoev.ru     nxt_mem_mmap(addr, len, protection, flags, fd, offset)
510Sigor@sysoev.ru 
520Sigor@sysoev.ru 
53*2084Salx.manpages@gmail.com #define nxt_mem_unmap(addr, ctx, len)                                         \
540Sigor@sysoev.ru     nxt_mem_munmap(addr, len)
550Sigor@sysoev.ru 
560Sigor@sysoev.ru 
570Sigor@sysoev.ru NXT_EXPORT void *nxt_mem_mmap(void *addr, size_t len, nxt_uint_t protection,
580Sigor@sysoev.ru     nxt_uint_t flags, nxt_fd_t fd, nxt_off_t offset);
590Sigor@sysoev.ru NXT_EXPORT void nxt_mem_munmap(void *addr, size_t len);
600Sigor@sysoev.ru 
610Sigor@sysoev.ru 
620Sigor@sysoev.ru #endif /* _NXT_UNIX_MEM_MAP_H_INCLUDED_ */
63