8000 cpython/Include/cpython/pyatomic_std.h at 3.14 · python/cpython · GitHub
[go: up one dir, main page]

Skip to content

Latest commit

 

History

History
1112 lines (947 loc) · 27.3 KB

File metadata and controls

1112 lines (947 loc) · 27.3 KB
static inline void
_Py_atomic_store_int8_relaxed(int8_t *obj, int8_t value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(int8_t)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_int16_relaxed(int16_t *obj, int16_t value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(int16_t)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_int32_relaxed(int32_t *obj, int32_t value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(int32_t)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_int64_relaxed(int64_t *obj, int64_t value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(int64_t)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_intptr_relaxed(intptr_t *obj, intptr_t value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(intptr_t)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_uint8_relaxed(uint8_t *obj, uint8_t value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(uint8_t)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_uint16_relaxed(uint16_t *obj, uint16_t value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(uint16_t)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_uint32_relaxed(uint32_t *obj, uint32_t value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(uint32_t)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_uint64_relaxed(uint64_t *obj, uint64_t value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(uint64_t)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_uintptr_relaxed(uintptr_t *obj, uintptr_t value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(uintptr_t)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_uint_relaxed(unsigned int *obj, unsigned int value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(unsigned int)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_ptr_relaxed(void *obj, void *value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(void*)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_ssize_relaxed(Py_ssize_t *obj, Py_ssize_t value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(Py_ssize_t)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_ullong_relaxed(unsigned long long *obj,
unsigned long long value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(unsigned long long)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_char_relaxed(char *obj, char value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(char)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_uchar_relaxed(unsigned char *obj, unsigned char value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(unsigned char)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_short_relaxed(short *obj, short value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(short)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_ushort_relaxed(unsigned short *obj, unsigned short value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(unsigned short)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_long_relaxed(long *obj, long value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(long)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_float_relaxed(float *obj, float value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(float)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_double_relaxed(double *obj, double value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(double)*)obj, value,
memory_order_relaxed);
}
static inline void
_Py_atomic_store_llong_relaxed(long long *obj, long long value)
{
_Py_USING_STD;
atomic_store_explicit((_Atomic(long long)*)obj, value,
memory_order_relaxed);
}
// --- _Py_atomic_load_ptr_acquire / _Py_atomic_store_ptr_release ------------
static inline void *
_Py_atomic_load_ptr_acquire(const void *obj)
{
_Py_USING_STD;
return atomic_load_explicit((const _Atomic(void*)*)obj,
memory_order_acquire);
}
static inline uintptr_t
_Py_atomic_load_uintptr_acquire(const uintptr_t *obj)
{
_Py_USING_STD;
return atomic_load_explicit((const _Atomic(uintptr_t)*)obj,
memory_order_acquire);
}
0