/* +----------------------------------------------------------------------+ | Zend OPcache | +----------------------------------------------------------------------+ | Copyright (c) 1998-2016 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available through the world-wide-web at the following url: | | http://www.php.net/license/3_01.txt | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans <andi@zend.com> | | Zeev Suraski <zeev@zend.com> | | Stanislav Malyshev <stas@zend.com> | | Dmitry Stogov <dmitry@zend.com> | +----------------------------------------------------------------------+ */ #include "zend_shared_alloc.h" #ifdef USE_MMAP #include <sys/types.h> #include <sys/stat.h> #include <stdio.h> #include <stdlib.h> #include <sys/mman.h> #if defined(MAP_ANON) && !defined(MAP_ANONYMOUS) # define MAP_ANONYMOUS MAP_ANON #endif static int create_segments(size_t requested_size, zend_shared_segment ***shared_segments_p, int *shared_segments_count, char **error_in) { zend_shared_segment *shared_segment; *shared_segments_count = 1; *shared_segments_p = (zend_shared_segment **) calloc(1, sizeof(zend_shared_segment) + sizeof(void *)); if (!*shared_segments_p) { *error_in = "calloc"; return ALLOC_FAILURE; } shared_segment = (zend_shared_segment *)((char *)(*shared_segments_p) + sizeof(void *)); (*shared_segments_p)[0] = shared_segment; shared_segment->p = mmap(0, requested_size, PROT_READ | PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0); if (shared_segment->p == MAP_FAILED) { *error_in = "mmap"; return ALLOC_FAILURE; } shared_segment->pos = 0; shared_segment->size = requested_size; return ALLOC_SUCCESS; } static int detach_segment(zend_shared_segment *shared_segment) { munmap(shared_segment->p, shared_segment->size); return 0; } static size_t segment_type_size(void) { return sizeof(zend_shared_segment); } zend_shared_memory_handlers zend_alloc_mmap_handlers = { create_segments, detach_segment, segment_type_size }; #endif /* USE_MMAP */
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
Optimizer | Folder | 0755 |
|
|
ZendAccelerator.c | File | 91.05 KB | 0644 |
|
ZendAccelerator.h | File | 15.06 KB | 0644 |
|
shared_alloc_mmap.c | File | 2.71 KB | 0644 |
|
shared_alloc_shm.c | File | 4.7 KB | 0644 |
|
zend_accelerator_blacklist.c | File | 9.54 KB | 0644 |
|
zend_accelerator_blacklist.h | File | 2.22 KB | 0644 |
|
zend_accelerator_debug.c | File | 2.83 KB | 0644 |
|
zend_accelerator_debug.h | File | 1.65 KB | 0644 |
|
zend_accelerator_hash.c | File | 7.24 KB | 0644 |
|
zend_accelerator_hash.h | File | 3.91 KB | 0644 |
|
zend_accelerator_module.c | File | 33.37 KB | 0644 |
|
zend_accelerator_module.h | File | 1.53 KB | 0644 |
|
zend_accelerator_util_funcs.c | File | 35.13 KB | 0644 |
|
zend_accelerator_util_funcs.h | File | 2.22 KB | 0644 |
|
zend_persist.c | File | 22.88 KB | 0644 |
|
zend_persist.h | File | 1.72 KB | 0644 |
|
zend_persist_calc.c | File | 12.13 KB | 0644 |
|
zend_shared_alloc.c | File | 13.71 KB | 0644 |
|
zend_shared_alloc.h | File | 5.87 KB | 0644 |
|