From 5668fada6459bff7ac6cbdbf39733b5c311dce3f Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 30 Oct 2018 11:41:14 +0100 Subject: [PATCH 1/2] bpo-35081: Move Include/pyatomic.c to Include/internal/ --- Include/Python.h | 2 -- Include/internal/ceval.h | 2 +- Include/internal/gil.h | 6 +++--- Include/{ => internal}/pyatomic.h | 13 +++++++++++-- Include/internal/pystate.h | 2 +- Makefile.pre.in | 2 +- Modules/signalmodule.c | 2 ++ Python/ceval_gil.h | 1 + 8 files changed, 20 insertions(+), 10 deletions(-) rename Include/{ => internal}/pyatomic.h (99%) diff --git a/Include/Python.h b/Include/Python.h index 80200feb9033ea..cf87a5ce7a701b 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -53,8 +53,6 @@ #include "pyport.h" #include "pymacro.h" -#include "pyatomic.h" - /* Debug-mode build with pymalloc implies PYMALLOC_DEBUG. * PYMALLOC_DEBUG is in error if pymalloc is not in use. */ diff --git a/Include/internal/ceval.h b/Include/internal/ceval.h index cdabb9521d1023..4297b5a51ce42f 100644 --- a/Include/internal/ceval.h +++ b/Include/internal/ceval.h @@ -4,7 +4,7 @@ extern "C" { #endif -#include "pyatomic.h" +#include "internal/pyatomic.h" #include "pythread.h" struct _pending_calls { diff --git a/Include/internal/gil.h b/Include/internal/gil.h index 6139bd215c3811..7743b3f0aa8b76 100644 --- a/Include/internal/gil.h +++ b/Include/internal/gil.h @@ -4,11 +4,11 @@ extern "C" { #endif -#include "pyatomic.h" - #include "internal/condvar.h" +#include "internal/pyatomic.h" + #ifndef Py_HAVE_CONDVAR -#error You need either a POSIX-compatible or a Windows system! +# error You need either a POSIX-compatible or a Windows system! #endif /* Enable if you want to force the switching of threads at least diff --git a/Include/pyatomic.h b/Include/internal/pyatomic.h similarity index 99% rename from Include/pyatomic.h rename to Include/internal/pyatomic.h index 9a497a683688a9..5f349cc3e9e99c 100644 --- a/Include/pyatomic.h +++ b/Include/internal/pyatomic.h @@ -1,6 +1,12 @@ #ifndef Py_ATOMIC_H #define Py_ATOMIC_H -#ifdef Py_BUILD_CORE +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef Py_BUILD_CORE +# error "Py_BUILD_CORE must be defined to include this header" +#endif #include "dynamic_annotations.h" @@ -531,5 +537,8 @@ typedef struct _Py_atomic_int { _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) -#endif /* Py_BUILD_CORE */ + +#ifdef __cplusplus +} +#endif #endif /* Py_ATOMIC_H */ diff --git a/Include/internal/pystate.h b/Include/internal/pystate.h index c93dda28954ae8..2fa4d1b86f6943 100644 --- a/Include/internal/pystate.h +++ b/Include/internal/pystate.h @@ -5,11 +5,11 @@ extern "C" { #endif #include "pystate.h" -#include "pyatomic.h" #include "pythread.h" #include "internal/mem.h" #include "internal/ceval.h" +#include "internal/pyatomic.h" #include "internal/warnings.h" diff --git a/Makefile.pre.in b/Makefile.pre.in index 61b469d4504eb3..232025f1cb6141 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -988,7 +988,6 @@ PYTHON_HEADERS= \ $(srcdir)/Include/pgen.h \ $(srcdir)/Include/pgenheaders.h \ $(srcdir)/Include/pyarena.h \ - $(srcdir)/Include/pyatomic.h \ $(srcdir)/Include/pycapsule.h \ $(srcdir)/Include/pyctype.h \ $(srcdir)/Include/pydebug.h \ @@ -1029,6 +1028,7 @@ PYTHON_HEADERS= \ $(srcdir)/Include/internal/ceval.h \ $(srcdir)/Include/internal/gil.h \ $(srcdir)/Include/internal/mem.h \ + $(srcdir)/Include/internal/pyatomic.h \ $(srcdir)/Include/internal/pygetopt.h \ $(srcdir)/Include/internal/pystate.h \ $(srcdir)/Include/internal/context.h \ diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c index d1209485827331..a81de6ab64622c 100644 --- a/Modules/signalmodule.c +++ b/Modules/signalmodule.c @@ -4,6 +4,8 @@ /* XXX Signals should be recorded per thread, now we have thread state. */ #include "Python.h" +#include "internal/pyatomic.h" + #ifndef MS_WINDOWS #include "posixmodule.h" #endif diff --git a/Python/ceval_gil.h b/Python/ceval_gil.h index ef5189068e0c9b..4a054a97f71082 100644 --- a/Python/ceval_gil.h +++ b/Python/ceval_gil.h @@ -5,6 +5,7 @@ #include #include +#include "internal/pyatomic.h" /* First some general settings */ From 6061f5b7785d06e2ba0388fd93ba64ba6f2ef0ab Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 30 Oct 2018 14:22:47 +0100 Subject: [PATCH 2/2] Address Serhiy's comments * Add pyatomic.h to the VS project (it wasn't referenced) * Don't include pyatomic.c in internal/pystate.h --- Include/internal/pystate.h | 1 - PCbuild/pythoncore.vcxproj | 1 + PCbuild/pythoncore.vcxproj.filters | 3 +++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Include/internal/pystate.h b/Include/internal/pystate.h index 2fa4d1b86f6943..38845d32ecafab 100644 --- a/Include/internal/pystate.h +++ b/Include/internal/pystate.h @@ -9,7 +9,6 @@ extern "C" { #include "internal/mem.h" #include "internal/ceval.h" -#include "internal/pyatomic.h" #include "internal/warnings.h" diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj index cb835390ee1382..f65bb5b2197c8e 100644 --- a/PCbuild/pythoncore.vcxproj +++ b/PCbuild/pythoncore.vcxproj @@ -118,6 +118,7 @@ + diff --git a/PCbuild/pythoncore.vcxproj.filters b/PCbuild/pythoncore.vcxproj.filters index 510a9c2b2e4e10..7fdadc81676df7 100644 --- a/PCbuild/pythoncore.vcxproj.filters +++ b/PCbuild/pythoncore.vcxproj.filters @@ -153,6 +153,9 @@ Include + + Include + Include