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