Current Path: > > opt > cloudlinux > alt-php84 > root > usr > include > php > Zend
Operation : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 162.0.232.56 | Your IP: 216.73.216.111 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
Optimizer | Directory | - | - | |
zend.h | File | 17662 bytes | July 15 2025 16:18:35. | |
zend_API.h | File | 108956 bytes | July 15 2025 16:18:35. | |
zend_alloc.h | File | 20701 bytes | July 15 2025 16:18:35. | |
zend_alloc_sizes.h | File | 2629 bytes | July 15 2025 16:18:35. | |
zend_arena.h | File | 6081 bytes | July 15 2025 16:18:35. | |
zend_ast.h | File | 13789 bytes | July 15 2025 16:18:35. | |
zend_atomic.h | File | 13081 bytes | July 15 2025 16:18:35. | |
zend_attributes.h | File | 5913 bytes | July 15 2025 16:18:35. | |
zend_attributes_arginfo.h | File | 14522 bytes | July 15 2025 16:18:35. | |
zend_bitset.h | File | 8083 bytes | July 15 2025 16:18:35. | |
zend_build.h | File | 1626 bytes | July 15 2025 16:18:35. | |
zend_builtin_functions.h | File | 1573 bytes | July 15 2025 16:18:35. | |
zend_builtin_functions_arginfo.h | File | 15229 bytes | July 15 2025 16:18:35. | |
zend_call_stack.h | File | 3056 bytes | July 15 2025 16:18:35. | |
zend_closures.h | File | 2315 bytes | July 15 2025 16:18:35. | |
zend_closures_arginfo.h | File | 2064 bytes | July 15 2025 16:18:35. | |
zend_compile.h | File | 53450 bytes | July 15 2025 16:18:35. | |
zend_config.h | File | 32 bytes | July 15 2025 16:18:37. | |
zend_constants.h | File | 7128 bytes | July 15 2025 16:18:35. | |
zend_constants_arginfo.h | File | 1893 bytes | July 15 2025 16:18:35. | |
zend_cpuinfo.h | File | 9513 bytes | July 15 2025 16:18:35. | |
zend_dtrace.h | File | 2051 bytes | July 15 2025 16:18:35. | |
zend_enum.h | File | 2928 bytes | July 15 2025 16:18:35. | |
zend_enum_arginfo.h | File | 1691 bytes | July 15 2025 16:18:35. | |
zend_errors.h | File | 2416 bytes | July 15 2025 16:18:35. | |
zend_exceptions.h | File | 4648 bytes | July 15 2025 16:18:35. | |
zend_exceptions_arginfo.h | File | 17678 bytes | July 15 2025 16:18:35. | |
zend_execute.h | File | 23964 bytes | July 15 2025 16:18:35. | |
zend_extensions.h | File | 6588 bytes | July 15 2025 16:18:36. | |
zend_fibers.h | File | 5412 bytes | July 15 2025 16:18:36. | |
zend_fibers_arginfo.h | File | 3530 bytes | July 15 2025 16:18:36. | |
zend_float.h | File | 15468 bytes | July 15 2025 16:18:36. | |
zend_frameless_function.h | File | 5518 bytes | July 15 2025 16:18:36. | |
zend_gc.h | File | 4688 bytes | July 15 2025 16:18:36. | |
zend_gdb.h | File | 1420 bytes | July 15 2025 16:18:36. | |
zend_generators.h | File | 7664 bytes | July 15 2025 16:18:36. | |
zend_generators_arginfo.h | File | 2889 bytes | July 15 2025 16:18:36. | |
zend_globals.h | File | 10004 bytes | July 15 2025 16:18:36. | |
zend_globals_macros.h | File | 2841 bytes | July 15 2025 16:18:36. | |
zend_hash.h | File | 51567 bytes | July 15 2025 16:18:36. | |
zend_highlight.h | File | 2321 bytes | July 15 2025 16:18:36. | |
zend_hrtime.h | File | 3842 bytes | July 15 2025 16:18:36. | |
zend_inheritance.h | File | 3186 bytes | July 15 2025 16:18:36. | |
zend_ini.h | File | 12163 bytes | July 15 2025 16:18:36. | |
zend_ini_parser.h | File | 2753 bytes | July 15 2025 16:18:36. | |
zend_ini_scanner.h | File | 1978 bytes | July 15 2025 16:18:37. | |
zend_ini_scanner_defs.h | File | 246 bytes | July 15 2025 16:18:36. | |
zend_interfaces.h | File | 4118 bytes | July 15 2025 16:18:36. | |
zend_interfaces_arginfo.h | File | 7839 bytes | July 15 2025 16:18:36. | |
zend_iterators.h | File | 3901 bytes | July 15 2025 16:18:36. | |
zend_language_parser.h | File | 6202 bytes | July 15 2025 16:18:36. | |
zend_language_scanner.h | File | 3071 bytes | July 15 2025 16:18:37. | |
zend_language_scanner_defs.h | File | 310 bytes | July 15 2025 16:18:36. | |
zend_lazy_objects.h | File | 4719 bytes | July 15 2025 16:18:36. | |
zend_list.h | File | 3483 bytes | July 15 2025 16:18:36. | |
zend_llist.h | File | 4032 bytes | July 15 2025 16:18:36. | |
zend_long.h | File | 4227 bytes | July 15 2025 16:18:36. | |
zend_map_ptr.h | File | 3571 bytes | July 15 2025 16:18:36. | |
zend_max_execution_timer.h | File | 1484 bytes | July 15 2025 16:18:36. | |
zend_mmap.h | File | 1512 bytes | July 15 2025 16:18:36. | |
zend_modules.h | File | 4826 bytes | July 15 2025 16:18:36. | |
zend_multibyte.h | File | 4946 bytes | July 15 2025 16:18:36. | |
zend_multiply.h | File | 10226 bytes | July 15 2025 16:18:37. | |
zend_object_handlers.h | File | 18085 bytes | July 15 2025 16:18:37. | |
zend_objects.h | File | 1941 bytes | July 15 2025 16:18:37. | |
zend_objects_API.h | File | 5607 bytes | July 15 2025 16:18:37. | |
zend_observer.h | File | 9036 bytes | July 15 2025 16:18:37. | |
zend_operators.h | File | 34059 bytes | July 15 2025 16:18:37. | |
zend_portability.h | File | 27362 bytes | July 15 2025 16:18:37. | |
zend_property_hooks.h | File | 1824 bytes | July 15 2025 16:18:37. | |
zend_ptr_stack.h | File | 4321 bytes | July 15 2025 16:18:37. | |
zend_range_check.h | File | 3000 bytes | July 15 2025 16:18:37. | |
zend_signal.h | File | 4105 bytes | July 15 2025 16:18:37. | |
zend_smart_str.h | File | 7045 bytes | July 15 2025 16:18:37. | |
zend_smart_str_public.h | File | 1222 bytes | July 15 2025 16:18:37. | |
zend_smart_string.h | File | 4207 bytes | July 15 2025 16:18:37. | |
zend_smart_string_public.h | File | 1240 bytes | July 15 2025 16:18:37. | |
zend_sort.h | File | 1560 bytes | July 15 2025 16:18:37. | |
zend_stack.h | File | 2442 bytes | July 15 2025 16:18:37. | |
zend_stream.h | File | 3641 bytes | July 15 2025 16:18:37. | |
zend_string.h | File | 22693 bytes | July 15 2025 16:18:37. | |
zend_strtod.h | File | 2344 bytes | July 15 2025 16:18:37. | |
zend_strtod_int.h | File | 2874 bytes | July 15 2025 16:18:37. | |
zend_system_id.h | File | 1424 bytes | July 15 2025 16:18:37. | |
zend_type_info.h | File | 4544 bytes | July 15 2025 16:18:37. | |
zend_types.h | File | 51982 bytes | July 15 2025 16:18:37. | |
zend_variables.h | File | 3088 bytes | July 15 2025 16:18:37. | |
zend_verify_type_inference.h | File | 8262 bytes | July 15 2025 16:18:37. | |
zend_virtual_cwd.h | File | 13200 bytes | July 15 2025 16:18:37. | |
zend_vm.h | File | 2112 bytes | July 15 2025 16:18:37. | |
zend_vm_def.h | File | 302251 bytes | July 15 2025 16:18:37. | |
zend_vm_execute.h | File | 2275637 bytes | July 15 2025 16:18:37. | |
zend_vm_handlers.h | File | 92711 bytes | July 15 2025 16:18:37. | |
zend_vm_opcodes.h | File | 13775 bytes | July 15 2025 16:18:37. | |
zend_vm_trace_handlers.h | File | 3216 bytes | July 15 2025 16:18:37. | |
zend_vm_trace_lines.h | File | 1755 bytes | July 15 2025 16:18:37. | |
zend_vm_trace_map.h | File | 2665 bytes | July 15 2025 16:18:37. | |
zend_weakrefs.h | File | 3226 bytes | July 15 2025 16:18:37. | |
zend_weakrefs_arginfo.h | File | 3440 bytes | July 15 2025 16:18:37. |
/* +----------------------------------------------------------------------+ | 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: | | https://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: Levi Morrison <morrison.levi@gmail.com> | +----------------------------------------------------------------------+ */ #ifndef ZEND_ATOMIC_H #define ZEND_ATOMIC_H #include "zend_portability.h" #include <stdbool.h> #define ZEND_GCC_PREREQ(x, y) \ ((__GNUC__ == (x) && __GNUC_MINOR__ >= (y)) || (__GNUC__ > (x))) /* Builtins are used to avoid library linkage */ #if __has_feature(c_atomic) && defined(__clang__) #define HAVE_C11_ATOMICS 1 #elif ZEND_GCC_PREREQ(4, 7) #define HAVE_GNUC_ATOMICS 1 #elif defined(__GNUC__) #define HAVE_SYNC_ATOMICS 1 #elif !defined(ZEND_WIN32) #define HAVE_NO_ATOMICS 1 #endif #undef ZEND_GCC_PREREQ /* Treat zend_atomic_* types as opaque. They have definitions only for size * and alignment purposes. */ #if defined(ZEND_WIN32) || defined(HAVE_SYNC_ATOMICS) typedef struct zend_atomic_bool_s { volatile char value; } zend_atomic_bool; typedef struct zend_atomic_int_s { # ifdef ZEND_WIN32 volatile long value; # else volatile int value; # endif } zend_atomic_int; #elif defined(HAVE_C11_ATOMICS) typedef struct zend_atomic_bool_s { _Atomic(bool) value; } zend_atomic_bool; typedef struct zend_atomic_int_s { _Atomic(int) value; } zend_atomic_int; #else typedef struct zend_atomic_bool_s { volatile bool value; } zend_atomic_bool; typedef struct zend_atomic_int_s { volatile int value; } zend_atomic_int; #endif BEGIN_EXTERN_C() #ifdef ZEND_WIN32 #ifndef InterlockedExchange8 #define InterlockedExchange8 _InterlockedExchange8 #endif #ifndef InterlockedOr8 #define InterlockedOr8 _InterlockedOr8 #endif #ifndef InterlockedCompareExchange8 #define InterlockedCompareExchange8 _InterlockedCompareExchange8 #endif #ifndef InterlockedExchange #define InterlockedExchange _InterlockedExchange #endif #ifndef InterlockedOr #define InterlockedOr _InterlockedOr #endif #ifndef InterlockedCompareExchange #define InterlockedCompareExchange _InterlockedCompareExchange #endif #define ZEND_ATOMIC_BOOL_INIT(obj, desired) ((obj)->value = (desired)) #define ZEND_ATOMIC_INT_INIT(obj, desired) ((obj)->value = (desired)) #define ZEND_ATOMIC_BOOL_INITIALIZER(desired) {.value = (desired)} #define ZEND_ATOMIC_INT_INITIALIZER(desired) {.value = (desired)} static zend_always_inline bool zend_atomic_bool_exchange_ex(zend_atomic_bool *obj, bool desired) { return InterlockedExchange8(&obj->value, desired); } static zend_always_inline int zend_atomic_int_exchange_ex(zend_atomic_int *obj, int desired) { return (int) InterlockedExchange(&obj->value, desired); } static zend_always_inline bool zend_atomic_bool_compare_exchange_ex(zend_atomic_bool *obj, bool *expected, bool desired) { bool prev = (bool) InterlockedCompareExchange8(&obj->value, *expected, desired); if (prev == *expected) { return true; } else { *expected = prev; return false; } } static zend_always_inline bool zend_atomic_int_compare_exchange_ex(zend_atomic_int *obj, int *expected, int desired) { int prev = (int) InterlockedCompareExchange(&obj->value, *expected, desired); if (prev == *expected) { return true; } else { *expected = prev; return false; } } /* On this platform it is non-const due to Iterlocked API*/ static zend_always_inline bool zend_atomic_bool_load_ex(zend_atomic_bool *obj) { /* Or'ing with false won't change the value. */ return InterlockedOr8(&obj->value, false); } static zend_always_inline int zend_atomic_int_load_ex(zend_atomic_int *obj) { /* Or'ing with 0 won't change the value. */ return (int) InterlockedOr(&obj->value, 0); } static zend_always_inline void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) { (void)InterlockedExchange8(&obj->value, desired); } static zend_always_inline void zend_atomic_int_store_ex(zend_atomic_int *obj, int desired) { (void)InterlockedExchange(&obj->value, desired); } #elif defined(HAVE_C11_ATOMICS) #define ZEND_ATOMIC_BOOL_INIT(obj, desired) __c11_atomic_init(&(obj)->value, (desired)) #define ZEND_ATOMIC_INT_INIT(obj, desired) __c11_atomic_init(&(obj)->value, (desired)) #define ZEND_ATOMIC_BOOL_INITIALIZER(desired) {.value = (desired)} #define ZEND_ATOMIC_INT_INITIALIZER(desired) {.value = (desired)} static zend_always_inline bool zend_atomic_bool_exchange_ex(zend_atomic_bool *obj, bool desired) { return __c11_atomic_exchange(&obj->value, desired, __ATOMIC_SEQ_CST); } static zend_always_inline int zend_atomic_int_exchange_ex(zend_atomic_int *obj, int desired) { return __c11_atomic_exchange(&obj->value, desired, __ATOMIC_SEQ_CST); } static zend_always_inline bool zend_atomic_bool_compare_exchange_ex(zend_atomic_bool *obj, bool *expected, bool desired) { return __c11_atomic_compare_exchange_strong(&obj->value, expected, desired, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); } static zend_always_inline bool zend_atomic_int_compare_exchange_ex(zend_atomic_int *obj, int *expected, int desired) { return __c11_atomic_compare_exchange_strong(&obj->value, expected, desired, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); } static zend_always_inline bool zend_atomic_bool_load_ex(const zend_atomic_bool *obj) { return __c11_atomic_load(&obj->value, __ATOMIC_SEQ_CST); } static zend_always_inline int zend_atomic_int_load_ex(const zend_atomic_int *obj) { return __c11_atomic_load(&obj->value, __ATOMIC_SEQ_CST); } static zend_always_inline void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) { __c11_atomic_store(&obj->value, desired, __ATOMIC_SEQ_CST); } static zend_always_inline void zend_atomic_int_store_ex(zend_atomic_int *obj, int desired) { __c11_atomic_store(&obj->value, desired, __ATOMIC_SEQ_CST); } #elif defined(HAVE_GNUC_ATOMICS) /* bool */ #define ZEND_ATOMIC_BOOL_INIT(obj, desired) ((obj)->value = (desired)) #define ZEND_ATOMIC_INT_INIT(obj, desired) ((obj)->value = (desired)) #define ZEND_ATOMIC_BOOL_INITIALIZER(desired) {.value = (desired)} #define ZEND_ATOMIC_INT_INITIALIZER(desired) {.value = (desired)} static zend_always_inline bool zend_atomic_bool_exchange_ex(zend_atomic_bool *obj, bool desired) { bool prev = false; __atomic_exchange(&obj->value, &desired, &prev, __ATOMIC_SEQ_CST); return prev; } static zend_always_inline int zend_atomic_int_exchange_ex(zend_atomic_int *obj, int desired) { int prev = false; __atomic_exchange(&obj->value, &desired, &prev, __ATOMIC_SEQ_CST); return prev; } static zend_always_inline bool zend_atomic_bool_compare_exchange_ex(zend_atomic_bool *obj, bool *expected, bool desired) { return __atomic_compare_exchange(&obj->value, expected, &desired, /* weak */ false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); } static zend_always_inline bool zend_atomic_int_compare_exchange_ex(zend_atomic_int *obj, int *expected, int desired) { return __atomic_compare_exchange(&obj->value, expected, &desired, /* weak */ false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); } static zend_always_inline bool zend_atomic_bool_load_ex(const zend_atomic_bool *obj) { bool prev = false; __atomic_load(&obj->value, &prev, __ATOMIC_SEQ_CST); return prev; } static zend_always_inline int zend_atomic_int_load_ex(const zend_atomic_int *obj) { int prev = false; __atomic_load(&obj->value, &prev, __ATOMIC_SEQ_CST); return prev; } static zend_always_inline void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) { __atomic_store(&obj->value, &desired, __ATOMIC_SEQ_CST); } static zend_always_inline void zend_atomic_int_store_ex(zend_atomic_int *obj, int desired) { __atomic_store(&obj->value, &desired, __ATOMIC_SEQ_CST); } #elif defined(HAVE_SYNC_ATOMICS) #define ZEND_ATOMIC_BOOL_INIT(obj, desired) ((obj)->value = (desired)) #define ZEND_ATOMIC_INT_INIT(obj, desired) ((obj)->value = (desired)) #define ZEND_ATOMIC_BOOL_INITIALIZER(desired) {.value = (desired)} #define ZEND_ATOMIC_INT_INITIALIZER(desired) {.value = (desired)} static zend_always_inline bool zend_atomic_bool_exchange_ex(zend_atomic_bool *obj, bool desired) { bool prev = __sync_lock_test_and_set(&obj->value, desired); /* __sync_lock_test_and_set only does an acquire barrier, so sync * immediately after. */ __sync_synchronize(); return prev; } static zend_always_inline int zend_atomic_int_exchange_ex(zend_atomic_int *obj, int desired) { int prev = __sync_lock_test_and_set(&obj->value, desired); /* __sync_lock_test_and_set only does an acquire barrier, so sync * immediately after. */ __sync_synchronize(); return prev; } static zend_always_inline bool zend_atomic_bool_compare_exchange_ex(zend_atomic_bool *obj, bool *expected, bool desired) { bool prev = __sync_val_compare_and_swap(&obj->value, *expected, desired); if (prev == *expected) { return true; } else { *expected = prev; return false; } } static zend_always_inline bool zend_atomic_int_compare_exchange_ex(zend_atomic_int *obj, int *expected, int desired) { int prev = __sync_val_compare_and_swap(&obj->value, *expected, desired); if (prev == *expected) { return true; } else { *expected = prev; return false; } } static zend_always_inline bool zend_atomic_bool_load_ex(zend_atomic_bool *obj) { /* Or'ing false won't change the value */ return __sync_fetch_and_or(&obj->value, false); } static zend_always_inline int zend_atomic_int_load_ex(zend_atomic_int *obj) { /* Or'ing 0 won't change the value */ return __sync_fetch_and_or(&obj->value, 0); } static zend_always_inline void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) { __sync_synchronize(); obj->value = desired; __sync_synchronize(); } static zend_always_inline void zend_atomic_int_store_ex(zend_atomic_int *obj, int desired) { __sync_synchronize(); obj->value = desired; __sync_synchronize(); } #elif defined(HAVE_NO_ATOMICS) #warning No atomics support detected. Please open an issue with platform details. #define ZEND_ATOMIC_BOOL_INIT(obj, desired) ((obj)->value = (desired)) #define ZEND_ATOMIC_INT_INIT(obj, desired) ((obj)->value = (desired)) #define ZEND_ATOMIC_BOOL_INITIALIZER(desired) {.value = (desired)} #define ZEND_ATOMIC_INT_INITIALIZER(desired) {.value = (desired)} static zend_always_inline void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) { obj->value = desired; } static zend_always_inline void zend_atomic_int_store_ex(zend_atomic_int *obj, int desired) { obj->value = desired; } static zend_always_inline bool zend_atomic_bool_compare_exchange_ex(zend_atomic_int *obj, bool *expected, bool desired) { bool prev = obj->value; if (prev == *expected) { obj->value = desired; return true; } else { *expected = prev; return false; } } static zend_always_inline bool zend_atomic_int_compare_exchange_ex(zend_atomic_int *obj, int *expected, int desired) { int prev = obj->value; if (prev == *expected) { obj->value = desired; return true; } else { *expected = prev; return false; } } static zend_always_inline bool zend_atomic_bool_load_ex(const zend_atomic_bool *obj) { return obj->value; } static zend_always_inline int zend_atomic_int_load_ex(const zend_atomic_int *obj) { return obj->value; } static zend_always_inline bool zend_atomic_bool_exchange_ex(zend_atomic_bool *obj, bool desired) { bool prev = obj->value; obj->value = desired; return prev; } static zend_always_inline int zend_atomic_int_exchange_ex(zend_atomic_int *obj, int desired) { int prev = obj->value; obj->value = desired; return prev; } #endif ZEND_API void zend_atomic_bool_init(zend_atomic_bool *obj, bool desired); ZEND_API void zend_atomic_int_init(zend_atomic_int *obj, int desired); ZEND_API bool zend_atomic_bool_exchange(zend_atomic_bool *obj, bool desired); ZEND_API int zend_atomic_int_exchange(zend_atomic_int *obj, int desired); ZEND_API bool zend_atomic_bool_compare_exchange(zend_atomic_bool *obj, bool *expected, bool desired); ZEND_API bool zend_atomic_int_compare_exchange(zend_atomic_int *obj, int *expected, int desired); ZEND_API void zend_atomic_bool_store(zend_atomic_bool *obj, bool desired); ZEND_API void zend_atomic_int_store(zend_atomic_int *obj, int desired); #if defined(ZEND_WIN32) || defined(HAVE_SYNC_ATOMICS) /* On these platforms it is non-const due to underlying APIs. */ ZEND_API bool zend_atomic_bool_load(zend_atomic_bool *obj); ZEND_API int zend_atomic_int_load(zend_atomic_int *obj); #else ZEND_API bool zend_atomic_bool_load(const zend_atomic_bool *obj); ZEND_API int zend_atomic_int_load(const zend_atomic_int *obj); #endif END_EXTERN_C() #endif
SILENT KILLER Tool