opt
/
alt
/
python34
/
include
/
python3.4m
/
Go to Home Directory
+
Upload
Create File
root@0UT1S:~$
Execute
By Order of Mr.0UT1S
[DIR] ..
N/A
Python-ast.h
19.03 KB
Rename
Delete
Python.h
2.79 KB
Rename
Delete
abstract.h
42.07 KB
Rename
Delete
accu.h
1016 bytes
Rename
Delete
asdl.h
1.16 KB
Rename
Delete
ast.h
477 bytes
Rename
Delete
bitset.h
792 bytes
Rename
Delete
bltinmodule.h
264 bytes
Rename
Delete
boolobject.h
886 bytes
Rename
Delete
bytearrayobject.h
2.06 KB
Rename
Delete
bytes_methods.h
1.98 KB
Rename
Delete
bytesobject.h
4.81 KB
Rename
Delete
cellobject.h
701 bytes
Rename
Delete
ceval.h
7.03 KB
Rename
Delete
classobject.h
1.63 KB
Rename
Delete
code.h
4.13 KB
Rename
Delete
codecs.h
6.40 KB
Rename
Delete
compile.h
2.07 KB
Rename
Delete
complexobject.h
1.91 KB
Rename
Delete
datetime.h
8.34 KB
Rename
Delete
descrobject.h
2.84 KB
Rename
Delete
dictobject.h
5.06 KB
Rename
Delete
dtoa.h
458 bytes
Rename
Delete
dynamic_annotations.h
21.94 KB
Rename
Delete
enumobject.h
253 bytes
Rename
Delete
errcode.h
1.46 KB
Rename
Delete
eval.h
597 bytes
Rename
Delete
fileobject.h
1.82 KB
Rename
Delete
fileutils.h
1.47 KB
Rename
Delete
floatobject.h
4.53 KB
Rename
Delete
frameobject.h
3.47 KB
Rename
Delete
funcobject.h
3.68 KB
Rename
Delete
genobject.h
1.10 KB
Rename
Delete
graminit.h
1.83 KB
Rename
Delete
grammar.h
2.00 KB
Rename
Delete
import.h
3.81 KB
Rename
Delete
intrcheck.h
460 bytes
Rename
Delete
iterobject.h
567 bytes
Rename
Delete
listobject.h
2.77 KB
Rename
Delete
longintrepr.h
3.90 KB
Rename
Delete
longobject.h
7.98 KB
Rename
Delete
marshal.h
803 bytes
Rename
Delete
memoryobject.h
2.79 KB
Rename
Delete
metagrammar.h
253 bytes
Rename
Delete
methodobject.h
3.23 KB
Rename
Delete
modsupport.h
4.78 KB
Rename
Delete
moduleobject.h
1.58 KB
Rename
Delete
namespaceobject.h
297 bytes
Rename
Delete
node.h
1008 bytes
Rename
Delete
object.h
37.62 KB
Rename
Delete
objimpl.h
13.52 KB
Rename
Delete
opcode.h
5.09 KB
Rename
Delete
osdefs.h
848 bytes
Rename
Delete
parsetok.h
2.82 KB
Rename
Delete
patchlevel.h
1.10 KB
Rename
Delete
pgen.h
253 bytes
Rename
Delete
pgenheaders.h
1.12 KB
Rename
Delete
py_curses.h
4.08 KB
Rename
Delete
pyarena.h
2.68 KB
Rename
Delete
pyatomic.h
5.80 KB
Rename
Delete
pycapsule.h
1.69 KB
Rename
Delete
pyconfig-64.h
42.32 KB
Rename
Delete
pyconfig.h
162 bytes
Rename
Delete
pyctype.h
1.29 KB
Rename
Delete
pydebug.h
1019 bytes
Rename
Delete
pyerrors.h
15.65 KB
Rename
Delete
pyexpat.h
2.39 KB
Rename
Delete
pyfpe.h
8.29 KB
Rename
Delete
pygetopt.h
388 bytes
Rename
Delete
pyhash.h
4.17 KB
Rename
Delete
pymacconfig.h
2.92 KB
Rename
Delete
pymacro.h
2.75 KB
Rename
Delete
pymath.h
7.05 KB
Rename
Delete
pymem.h
6.62 KB
Rename
Delete
pyport.h
30.15 KB
Rename
Delete
pystate.h
8.91 KB
Rename
Delete
pystrcmp.h
436 bytes
Rename
Delete
pystrtod.h
1.25 KB
Rename
Delete
pythonrun.h
9.95 KB
Rename
Delete
pythread.h
2.96 KB
Rename
Delete
pytime.h
2.85 KB
Rename
Delete
rangeobject.h
629 bytes
Rename
Delete
setobject.h
3.22 KB
Rename
Delete
sliceobject.h
1.55 KB
Rename
Delete
structmember.h
2.02 KB
Rename
Delete
structseq.h
1.32 KB
Rename
Delete
symtable.h
4.98 KB
Rename
Delete
sysmodule.h
1.32 KB
Rename
Delete
token.h
1.84 KB
Rename
Delete
traceback.h
2.16 KB
Rename
Delete
tupleobject.h
2.39 KB
Rename
Delete
typeslots.h
1.95 KB
Rename
Delete
ucnhash.h
1.03 KB
Rename
Delete
unicodeobject.h
76.30 KB
Rename
Delete
warnings.h
1.39 KB
Rename
Delete
weakrefobject.h
2.80 KB
Rename
Delete
#ifndef Py_LIMITED_API #ifndef Py_ATOMIC_H #define Py_ATOMIC_H /* XXX: When compilers start offering a stdatomic.h with lock-free atomic_int and atomic_address types, include that here and rewrite the atomic operations in terms of it. */ #include "dynamic_annotations.h" #ifdef __cplusplus extern "C" { #endif /* This is modeled after the atomics interface from C1x, according to * the draft at * http://www.open-std.org/JTC1/SC22/wg14/www/docs/n1425.pdf. * Operations and types are named the same except with a _Py_ prefix * and have the same semantics. * * Beware, the implementations here are deep magic. */ typedef enum _Py_memory_order { _Py_memory_order_relaxed, _Py_memory_order_acquire, _Py_memory_order_release, _Py_memory_order_acq_rel, _Py_memory_order_seq_cst } _Py_memory_order; typedef struct _Py_atomic_address { void *_value; } _Py_atomic_address; typedef struct _Py_atomic_int { int _value; } _Py_atomic_int; /* Only support GCC (for expression statements) and x86 (for simple * atomic semantics) for now */ #if defined(__GNUC__) && (defined(__i386__) || defined(__amd64)) static __inline__ void _Py_atomic_signal_fence(_Py_memory_order order) { if (order != _Py_memory_order_relaxed) __asm__ volatile("":::"memory"); } static __inline__ void _Py_atomic_thread_fence(_Py_memory_order order) { if (order != _Py_memory_order_relaxed) __asm__ volatile("mfence":::"memory"); } /* Tell the race checker about this operation's effects. */ static __inline__ void _Py_ANNOTATE_MEMORY_ORDER(const volatile void *address, _Py_memory_order order) { (void)address; /* shut up -Wunused-parameter */ switch(order) { case _Py_memory_order_release: case _Py_memory_order_acq_rel: case _Py_memory_order_seq_cst: _Py_ANNOTATE_HAPPENS_BEFORE(address); break; case _Py_memory_order_relaxed: case _Py_memory_order_acquire: break; } switch(order) { case _Py_memory_order_acquire: case _Py_memory_order_acq_rel: case _Py_memory_order_seq_cst: _Py_ANNOTATE_HAPPENS_AFTER(address); break; case _Py_memory_order_relaxed: case _Py_memory_order_release: break; } } #define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \ __extension__ ({ \ __typeof__(ATOMIC_VAL) atomic_val = ATOMIC_VAL; \ __typeof__(atomic_val->_value) new_val = NEW_VAL;\ volatile __typeof__(new_val) *volatile_data = &atomic_val->_value; \ _Py_memory_order order = ORDER; \ _Py_ANNOTATE_MEMORY_ORDER(atomic_val, order); \ \ /* Perform the operation. */ \ _Py_ANNOTATE_IGNORE_WRITES_BEGIN(); \ switch(order) { \ case _Py_memory_order_release: \ _Py_atomic_signal_fence(_Py_memory_order_release); \ /* fallthrough */ \ case _Py_memory_order_relaxed: \ *volatile_data = new_val; \ break; \ \ case _Py_memory_order_acquire: \ case _Py_memory_order_acq_rel: \ case _Py_memory_order_seq_cst: \ __asm__ volatile("xchg %0, %1" \ : "+r"(new_val) \ : "m"(atomic_val->_value) \ : "memory"); \ break; \ } \ _Py_ANNOTATE_IGNORE_WRITES_END(); \ }) #define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \ __extension__ ({ \ __typeof__(ATOMIC_VAL) atomic_val = ATOMIC_VAL; \ __typeof__(atomic_val->_value) result; \ volatile __typeof__(result) *volatile_data = &atomic_val->_value; \ _Py_memory_order order = ORDER; \ _Py_ANNOTATE_MEMORY_ORDER(atomic_val, order); \ \ /* Perform the operation. */ \ _Py_ANNOTATE_IGNORE_READS_BEGIN(); \ switch(order) { \ case _Py_memory_order_release: \ case _Py_memory_order_acq_rel: \ case _Py_memory_order_seq_cst: \ /* Loads on x86 are not releases by default, so need a */ \ /* thread fence. */ \ _Py_atomic_thread_fence(_Py_memory_order_release); \ break; \ default: \ /* No fence */ \ break; \ } \ result = *volatile_data; \ switch(order) { \ case _Py_memory_order_acquire: \ case _Py_memory_order_acq_rel: \ case _Py_memory_order_seq_cst: \ /* Loads on x86 are automatically acquire operations so */ \ /* can get by with just a compiler fence. */ \ _Py_atomic_signal_fence(_Py_memory_order_acquire); \ break; \ default: \ /* No fence */ \ break; \ } \ _Py_ANNOTATE_IGNORE_READS_END(); \ result; \ }) #else /* !gcc x86 */ /* Fall back to other compilers and processors by assuming that simple volatile accesses are atomic. This is false, so people should port this. */ #define _Py_atomic_signal_fence(/*memory_order*/ ORDER) ((void)0) #define _Py_atomic_thread_fence(/*memory_order*/ ORDER) ((void)0) #define _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, ORDER) \ ((ATOMIC_VAL)->_value = NEW_VAL) #define _Py_atomic_load_explicit(ATOMIC_VAL, ORDER) \ ((ATOMIC_VAL)->_value) #endif /* !gcc x86 */ /* Standardized shortcuts. */ #define _Py_atomic_store(ATOMIC_VAL, NEW_VAL) \ _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, _Py_memory_order_seq_cst) #define _Py_atomic_load(ATOMIC_VAL) \ _Py_atomic_load_explicit(ATOMIC_VAL, _Py_memory_order_seq_cst) /* Python-local extensions */ #define _Py_atomic_store_relaxed(ATOMIC_VAL, NEW_VAL) \ _Py_atomic_store_explicit(ATOMIC_VAL, NEW_VAL, _Py_memory_order_relaxed) #define _Py_atomic_load_relaxed(ATOMIC_VAL) \ _Py_atomic_load_explicit(ATOMIC_VAL, _Py_memory_order_relaxed) #ifdef __cplusplus } #endif #endif /* Py_ATOMIC_H */ #endif /* Py_LIMITED_API */
Save