GRAYBYTE WORDPRESS FILE MANAGER4485

Server IP : 198.54.121.189 / Your IP : 216.73.216.112
System : Linux premium69.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
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/alt/php82/usr/include/php/Zend/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/alt/php82/usr/include/php/Zend//zend_atomic.h
/*
   +----------------------------------------------------------------------+
   | 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;
#elif defined(HAVE_C11_ATOMICS)
typedef struct zend_atomic_bool_s {
	_Atomic(bool) value;
} zend_atomic_bool;
#else
typedef struct zend_atomic_bool_s {
	volatile bool value;
} zend_atomic_bool;
#endif

BEGIN_EXTERN_C()

#ifdef ZEND_WIN32

#ifndef InterlockedExchange8
#define InterlockedExchange8 _InterlockedExchange8
#endif
#ifndef InterlockedOr8
#define InterlockedOr8 _InterlockedOr8
#endif

#define ZEND_ATOMIC_BOOL_INIT(obj, desired) ((obj)->value = (desired))

static zend_always_inline bool zend_atomic_bool_exchange_ex(zend_atomic_bool *obj, bool desired) {
	return InterlockedExchange8(&obj->value, desired);
}

/* 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 void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) {
	(void)InterlockedExchange8(&obj->value, desired);
}

#elif defined(HAVE_C11_ATOMICS)

#define ZEND_ATOMIC_BOOL_INIT(obj, desired) __c11_atomic_init(&(obj)->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 bool zend_atomic_bool_load_ex(const zend_atomic_bool *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);
}

#elif defined(HAVE_GNUC_ATOMICS)

#define ZEND_ATOMIC_BOOL_INIT(obj, desired) ((obj)->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 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 void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) {
	__atomic_store(&obj->value, &desired, __ATOMIC_SEQ_CST);
}

#elif defined(HAVE_SYNC_ATOMICS)

#define ZEND_ATOMIC_BOOL_INIT(obj, desired) ((obj)->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 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 void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool 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))

static zend_always_inline void zend_atomic_bool_store_ex(zend_atomic_bool *obj, bool desired) {
	obj->value = desired;
}

static zend_always_inline bool zend_atomic_bool_load_ex(const zend_atomic_bool *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;
}

#endif

ZEND_API void zend_atomic_bool_init(zend_atomic_bool *obj, bool desired);
ZEND_API bool zend_atomic_bool_exchange(zend_atomic_bool *obj, bool desired);
ZEND_API void zend_atomic_bool_store(zend_atomic_bool *obj, bool 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);
#else
ZEND_API bool zend_atomic_bool_load(const zend_atomic_bool *obj);
#endif

END_EXTERN_C()

#endif

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
April 07 2025 13:22:46
root / linksafe
0755
Optimizer
--
May 13 2025 08:39:10
root / linksafe
0755
zend.h
15.272 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_API.h
98.022 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_alloc.h
18.826 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_alloc_sizes.h
2.567 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_arena.h
5.921 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_ast.h
12.695 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_atomic.h
5.57 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_attributes.h
5.478 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_attributes_arginfo.h
10.503 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_bitset.h
7.739 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_build.h
1.588 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_builtin_functions.h
1.478 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_builtin_functions_arginfo.h
13.852 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_closures.h
2.236 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_closures_arginfo.h
2.035 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_compile.h
47.688 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_config.h
0.031 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_constants.h
6.549 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_constants_arginfo.h
1.32 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_cpuinfo.h
7.379 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_dtrace.h
2.003 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_enum.h
2.775 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_enum_arginfo.h
1.664 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_errors.h
2.344 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_exceptions.h
4.444 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_exceptions_arginfo.h
17.344 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_execute.h
20.074 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_extensions.h
6.203 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_fibers.h
4.846 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_fibers_arginfo.h
3.485 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_float.h
15.076 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_gc.h
3.82 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_gdb.h
1.387 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_generators.h
7.336 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_generators_arginfo.h
2.722 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_globals.h
8.985 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_globals_macros.h
2.744 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_hash.h
50.108 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_highlight.h
2.242 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_inheritance.h
2.369 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_ini.h
11.647 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_ini_parser.h
2.666 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_ini_scanner.h
1.845 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_ini_scanner_defs.h
0.22 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_interfaces.h
4.021 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_interfaces_arginfo.h
7.841 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_istdiostream.h
1.501 KB
April 07 2025 13:22:56
root / linksafe
0644
zend_iterators.h
3.697 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_language_parser.h
5.959 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_language_scanner.h
2.973 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_language_scanner_defs.h
0.303 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_list.h
3.394 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_llist.h
3.907 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_long.h
4.128 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_map_ptr.h
2.936 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_max_execution_timer.h
1.449 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_mmap.h
1.474 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_modules.h
4.713 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_multibyte.h
4.782 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_multiply.h
9.969 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_object_handlers.h
14.019 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_objects.h
1.771 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_objects_API.h
4.542 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_observer.h
6.248 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_operators.h
33.016 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_portability.h
22.256 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_ptr_stack.h
4.195 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_range_check.h
2.93 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_signal.h
3.979 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_smart_str.h
6.76 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_smart_str_public.h
1.132 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_smart_string.h
4.108 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_smart_string_public.h
1.211 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_sort.h
1.499 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_stack.h
2.304 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_stream.h
3.531 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_string.h
20.23 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_strtod.h
2.101 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_strtod_int.h
3.334 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_system_id.h
1.371 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_type_info.h
4.438 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_types.h
46.475 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_variables.h
2.993 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_virtual_cwd.h
12.686 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_vm.h
1.947 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_vm_def.h
281.454 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_vm_execute.h
2.02 MB
April 07 2025 13:22:57
root / linksafe
0644
zend_vm_handlers.h
89.361 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_vm_opcodes.h
12.387 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_vm_trace_handlers.h
3.141 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_vm_trace_lines.h
1.714 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_vm_trace_map.h
2.603 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_weakrefs.h
2.738 KB
April 07 2025 13:22:57
root / linksafe
0644
zend_weakrefs_arginfo.h
3.397 KB
April 07 2025 13:22:57
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF