22#ifndef ZEND_SHARED_ALLOC_H
23#define ZEND_SHARED_ALLOC_H
28#if defined(__APPLE__) && defined(__MACH__)
29# ifdef HAVE_SHM_MMAP_POSIX
30# define USE_SHM_OPEN 1
32# ifdef HAVE_SHM_MMAP_ANON
35#elif defined(__linux__) || defined(_AIX)
36# ifdef HAVE_SHM_MMAP_POSIX
37# define USE_SHM_OPEN 1
42# ifdef HAVE_SHM_MMAP_ANON
45#elif defined(__sparc) || defined(__sun)
46# ifdef HAVE_SHM_MMAP_POSIX
47# define USE_SHM_OPEN 1
53# ifdef HAVE_SHM_MMAP_ANON
58# ifdef HAVE_SHM_MMAP_POSIX
59# define USE_SHM_OPEN 1
61# ifdef HAVE_SHM_MMAP_ANON
69#define ALLOC_FAILURE 0
70#define ALLOC_SUCCESS 1
71#define FAILED_REATTACHED 2
72#define SUCCESSFULLY_REATTACHED 4
73#define ALLOC_FAIL_MAPPING 8
74#define ALLOC_FALLBACK 9
124#define ZSMMG(element) (smm_shared_globals->element)
126#define SHARED_ALLOC_REATTACHED (SUCCESS+1)
140static inline
void *zend_shared_alloc_aligned(
size_t size) {
141#if defined(__AVX__) || defined(__SSE2__)
144 return (
void *)(((uintptr_t)
p + 63L) & ~63L);
168#if ZEND_GCC_VERSION >= 2000
169# define PLATFORM_ALIGNMENT (__alignof__(align_test) < 8 ? 8 : __alignof__(align_test))
171# define PLATFORM_ALIGNMENT (sizeof(align_test))
174#define ZEND_ALIGNED_SIZE(size) \
175 ZEND_MM_ALIGNED_SIZE_EX(size, PLATFORM_ALIGNMENT)
unsigned char key[REFLECTION_KEY_LEN]
const zend_shared_memory_handlers zend_alloc_win32_handlers
void zend_shared_alloc_lock_win32(void)
void zend_shared_alloc_unlock_win32(void)
void zend_shared_alloc_create_lock(void)
const zend_shared_memory_handlers * handler
int shared_segments_count
zend_shared_segment ** shared_segments
zend_shared_memory_state shared_memory_state
size_t wasted_shared_memory
void * app_shared_globals
detach_segment_t detach_segment
create_segments_t create_segments
size_t(* segment_type_size)(void)
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)
void zend_shared_alloc_shutdown(void)
ZEND_EXT_API zend_smm_shared_globals * smm_shared_globals
void * zend_shared_alloc(size_t size)
int zend_shared_alloc_startup(size_t requested_size, size_t reserved_size)
struct _zend_shared_segment zend_shared_segment
struct _zend_shared_memory_state zend_shared_memory_state
void * zend_shared_alloc_get_xlat_entry(const void *key)
uint32_t zend_shared_alloc_checkpoint_xlat_table(void)
void zend_shared_alloc_save_state(void)
void zend_shared_alloc_lock(void)
const char * zend_accel_get_shared_model(void)
void * zend_shared_memdup_free(void *source, size_t size)
bool zend_accel_in_shm(void *ptr)
void zend_shared_alloc_init_xlat_table(void)
void * zend_shared_memdup_put_free(void *source, size_t size)
int(* detach_segment_t)(zend_shared_segment *shared_segment)
struct _handler_entry zend_shared_memory_handler_entry
void zend_shared_alloc_register_xlat_entry(const void *key, const void *value)
void zend_shared_alloc_safe_unlock(void)
void * zend_shared_memdup_put(void *source, size_t size)
void * zend_shared_memdup_get_put_free(void *source, size_t size)
union _align_test align_test
void zend_shared_alloc_unlock(void)
void zend_shared_alloc_restore_xlat_table(uint32_t checkpoint)
void zend_shared_alloc_clear_xlat_table(void)
void zend_accel_shared_protect(bool protected)
int(* create_segments_t)(size_t requested_size, zend_shared_segment ***shared_segments, int *shared_segment_count, const char **error_in)
void zend_shared_alloc_destroy_xlat_table(void)
size_t zend_shared_alloc_get_free_memory(void)
int zend_shared_memdup_size(void *p, size_t size)
void zend_shared_alloc_restore_state(void)
void * zend_shared_memdup_get_put(void *source, size_t size)
void * zend_shared_alloc(size_t size)
struct _zend_smm_shared_globals zend_smm_shared_globals
void * zend_shared_memdup(void *source, size_t size)