File indexing completed on 2025-11-19 09:50:49
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef Py_ATOMIC_FT_WRAPPERS_H
0013 #define Py_ATOMIC_FT_WRAPPERS_H
0014 #ifdef __cplusplus
0015 extern "C" {
0016 #endif
0017
0018 #ifndef Py_BUILD_CORE
0019 #error "this header requires Py_BUILD_CORE define"
0020 #endif
0021
0022 #ifdef Py_GIL_DISABLED
0023 #define FT_ATOMIC_LOAD_PTR(value) _Py_atomic_load_ptr(&value)
0024 #define FT_ATOMIC_STORE_PTR(value, new_value) _Py_atomic_store_ptr(&value, new_value)
0025 #define FT_ATOMIC_LOAD_SSIZE(value) _Py_atomic_load_ssize(&value)
0026 #define FT_ATOMIC_LOAD_SSIZE_ACQUIRE(value) \
0027 _Py_atomic_load_ssize_acquire(&value)
0028 #define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) \
0029 _Py_atomic_load_ssize_relaxed(&value)
0030 #define FT_ATOMIC_STORE_PTR(value, new_value) \
0031 _Py_atomic_store_ptr(&value, new_value)
0032 #define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) \
0033 _Py_atomic_load_ptr_acquire(&value)
0034 #define FT_ATOMIC_LOAD_UINTPTR_ACQUIRE(value) \
0035 _Py_atomic_load_uintptr_acquire(&value)
0036 #define FT_ATOMIC_LOAD_PTR_RELAXED(value) \
0037 _Py_atomic_load_ptr_relaxed(&value)
0038 #define FT_ATOMIC_LOAD_UINT8(value) \
0039 _Py_atomic_load_uint8(&value)
0040 #define FT_ATOMIC_STORE_UINT8(value, new_value) \
0041 _Py_atomic_store_uint8(&value, new_value)
0042 #define FT_ATOMIC_LOAD_UINT8_RELAXED(value) \
0043 _Py_atomic_load_uint8_relaxed(&value)
0044 #define FT_ATOMIC_LOAD_UINT16_RELAXED(value) \
0045 _Py_atomic_load_uint16_relaxed(&value)
0046 #define FT_ATOMIC_LOAD_UINT32_RELAXED(value) \
0047 _Py_atomic_load_uint32_relaxed(&value)
0048 #define FT_ATOMIC_LOAD_ULONG_RELAXED(value) \
0049 _Py_atomic_load_ulong_relaxed(&value)
0050 #define FT_ATOMIC_STORE_PTR_RELAXED(value, new_value) \
0051 _Py_atomic_store_ptr_relaxed(&value, new_value)
0052 #define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) \
0053 _Py_atomic_store_ptr_release(&value, new_value)
0054 #define FT_ATOMIC_STORE_UINTPTR_RELEASE(value, new_value) \
0055 _Py_atomic_store_uintptr_release(&value, new_value)
0056 #define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) \
0057 _Py_atomic_store_ssize_relaxed(&value, new_value)
0058 #define FT_ATOMIC_STORE_UINT8_RELAXED(value, new_value) \
0059 _Py_atomic_store_uint8_relaxed(&value, new_value)
0060 #define FT_ATOMIC_STORE_UINT16_RELAXED(value, new_value) \
0061 _Py_atomic_store_uint16_relaxed(&value, new_value)
0062 #define FT_ATOMIC_STORE_UINT32_RELAXED(value, new_value) \
0063 _Py_atomic_store_uint32_relaxed(&value, new_value)
0064 #define FT_ATOMIC_STORE_CHAR_RELAXED(value, new_value) \
0065 _Py_atomic_store_char_relaxed(&value, new_value)
0066 #define FT_ATOMIC_LOAD_CHAR_RELAXED(value) \
0067 _Py_atomic_load_char_relaxed(&value)
0068 #define FT_ATOMIC_STORE_UCHAR_RELAXED(value, new_value) \
0069 _Py_atomic_store_uchar_relaxed(&value, new_value)
0070 #define FT_ATOMIC_LOAD_UCHAR_RELAXED(value) \
0071 _Py_atomic_load_uchar_relaxed(&value)
0072 #define FT_ATOMIC_STORE_SHORT_RELAXED(value, new_value) \
0073 _Py_atomic_store_short_relaxed(&value, new_value)
0074 #define FT_ATOMIC_LOAD_SHORT_RELAXED(value) \
0075 _Py_atomic_load_short_relaxed(&value)
0076 #define FT_ATOMIC_STORE_USHORT_RELAXED(value, new_value) \
0077 _Py_atomic_store_ushort_relaxed(&value, new_value)
0078 #define FT_ATOMIC_LOAD_USHORT_RELAXED(value) \
0079 _Py_atomic_load_ushort_relaxed(&value)
0080 #define FT_ATOMIC_STORE_INT_RELAXED(value, new_value) \
0081 _Py_atomic_store_int_relaxed(&value, new_value)
0082 #define FT_ATOMIC_LOAD_INT_RELAXED(value) \
0083 _Py_atomic_load_int_relaxed(&value)
0084 #define FT_ATOMIC_STORE_UINT_RELAXED(value, new_value) \
0085 _Py_atomic_store_uint_relaxed(&value, new_value)
0086 #define FT_ATOMIC_LOAD_UINT_RELAXED(value) \
0087 _Py_atomic_load_uint_relaxed(&value)
0088 #define FT_ATOMIC_STORE_LONG_RELAXED(value, new_value) \
0089 _Py_atomic_store_long_relaxed(&value, new_value)
0090 #define FT_ATOMIC_LOAD_LONG_RELAXED(value) \
0091 _Py_atomic_load_long_relaxed(&value)
0092 #define FT_ATOMIC_STORE_ULONG_RELAXED(value, new_value) \
0093 _Py_atomic_store_ulong_relaxed(&value, new_value)
0094 #define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) \
0095 _Py_atomic_store_ssize_relaxed(&value, new_value)
0096 #define FT_ATOMIC_STORE_FLOAT_RELAXED(value, new_value) \
0097 _Py_atomic_store_float_relaxed(&value, new_value)
0098 #define FT_ATOMIC_LOAD_FLOAT_RELAXED(value) \
0099 _Py_atomic_load_float_relaxed(&value)
0100 #define FT_ATOMIC_STORE_DOUBLE_RELAXED(value, new_value) \
0101 _Py_atomic_store_double_relaxed(&value, new_value)
0102 #define FT_ATOMIC_LOAD_DOUBLE_RELAXED(value) \
0103 _Py_atomic_load_double_relaxed(&value)
0104 #define FT_ATOMIC_STORE_LLONG_RELAXED(value, new_value) \
0105 _Py_atomic_store_llong_relaxed(&value, new_value)
0106 #define FT_ATOMIC_LOAD_LLONG_RELAXED(value) \
0107 _Py_atomic_load_llong_relaxed(&value)
0108 #define FT_ATOMIC_STORE_ULLONG_RELAXED(value, new_value) \
0109 _Py_atomic_store_ullong_relaxed(&value, new_value)
0110 #define FT_ATOMIC_LOAD_ULLONG_RELAXED(value) \
0111 _Py_atomic_load_ullong_relaxed(&value)
0112
0113 #else
0114 #define FT_ATOMIC_LOAD_PTR(value) value
0115 #define FT_ATOMIC_STORE_PTR(value, new_value) value = new_value
0116 #define FT_ATOMIC_LOAD_SSIZE(value) value
0117 #define FT_ATOMIC_LOAD_SSIZE_ACQUIRE(value) value
0118 #define FT_ATOMIC_LOAD_SSIZE_RELAXED(value) value
0119 #define FT_ATOMIC_LOAD_PTR_ACQUIRE(value) value
0120 #define FT_ATOMIC_LOAD_UINTPTR_ACQUIRE(value) value
0121 #define FT_ATOMIC_LOAD_PTR_RELAXED(value) value
0122 #define FT_ATOMIC_LOAD_UINT8(value) value
0123 #define FT_ATOMIC_STORE_UINT8(value, new_value) value = new_value
0124 #define FT_ATOMIC_LOAD_UINT8_RELAXED(value) value
0125 #define FT_ATOMIC_LOAD_UINT16_RELAXED(value) value
0126 #define FT_ATOMIC_LOAD_UINT32_RELAXED(value) value
0127 #define FT_ATOMIC_LOAD_ULONG_RELAXED(value) value
0128 #define FT_ATOMIC_STORE_PTR_RELAXED(value, new_value) value = new_value
0129 #define FT_ATOMIC_STORE_PTR_RELEASE(value, new_value) value = new_value
0130 #define FT_ATOMIC_STORE_UINTPTR_RELEASE(value, new_value) value = new_value
0131 #define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
0132 #define FT_ATOMIC_STORE_UINT8_RELAXED(value, new_value) value = new_value
0133 #define FT_ATOMIC_STORE_UINT16_RELAXED(value, new_value) value = new_value
0134 #define FT_ATOMIC_STORE_UINT32_RELAXED(value, new_value) value = new_value
0135 #define FT_ATOMIC_LOAD_CHAR_RELAXED(value) value
0136 #define FT_ATOMIC_STORE_CHAR_RELAXED(value, new_value) value = new_value
0137 #define FT_ATOMIC_LOAD_UCHAR_RELAXED(value) value
0138 #define FT_ATOMIC_STORE_UCHAR_RELAXED(value, new_value) value = new_value
0139 #define FT_ATOMIC_LOAD_SHORT_RELAXED(value) value
0140 #define FT_ATOMIC_STORE_SHORT_RELAXED(value, new_value) value = new_value
0141 #define FT_ATOMIC_LOAD_USHORT_RELAXED(value) value
0142 #define FT_ATOMIC_STORE_USHORT_RELAXED(value, new_value) value = new_value
0143 #define FT_ATOMIC_LOAD_INT_RELAXED(value) value
0144 #define FT_ATOMIC_STORE_INT_RELAXED(value, new_value) value = new_value
0145 #define FT_ATOMIC_LOAD_UINT_RELAXED(value) value
0146 #define FT_ATOMIC_STORE_UINT_RELAXED(value, new_value) value = new_value
0147 #define FT_ATOMIC_LOAD_LONG_RELAXED(value) value
0148 #define FT_ATOMIC_STORE_LONG_RELAXED(value, new_value) value = new_value
0149 #define FT_ATOMIC_STORE_ULONG_RELAXED(value, new_value) value = new_value
0150 #define FT_ATOMIC_STORE_SSIZE_RELAXED(value, new_value) value = new_value
0151 #define FT_ATOMIC_LOAD_FLOAT_RELAXED(value) value
0152 #define FT_ATOMIC_STORE_FLOAT_RELAXED(value, new_value) value = new_value
0153 #define FT_ATOMIC_LOAD_DOUBLE_RELAXED(value) value
0154 #define FT_ATOMIC_STORE_DOUBLE_RELAXED(value, new_value) value = new_value
0155 #define FT_ATOMIC_LOAD_LLONG_RELAXED(value) value
0156 #define FT_ATOMIC_STORE_LLONG_RELAXED(value, new_value) value = new_value
0157 #define FT_ATOMIC_LOAD_ULLONG_RELAXED(value) value
0158 #define FT_ATOMIC_STORE_ULLONG_RELAXED(value, new_value) value = new_value
0159
0160 #endif
0161
0162 #ifdef __cplusplus
0163 }
0164 #endif
0165 #endif