quick addition of cosmo pthreads to python.com

- enable WITH_THREAD and _POSIX_THREADS
- add headers everywhere
- breaks only two tests (faulthandler and signal)
- disabled terminal completion because it causes segfaults for some
  reason (probably could not get the current thread)
This commit is contained in:
ahgamut 2023-02-23 10:08:42 +05:30 committed by Justine Tunney
parent a808b3e738
commit 60eb34509b
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
16 changed files with 166 additions and 34 deletions

View file

@ -5,6 +5,7 @@
https://docs.python.org/3/license.html │
*/
#define PY_LOCAL_AGGRESSIVE
#include "libc/errno.h"
#include "libc/intrin/likely.h"
#include "third_party/python/Include/abstract.h"
#include "third_party/python/Include/boolobject.h"

View file

@ -4,6 +4,10 @@
Python 3
https://docs.python.org/3/license.html
╚─────────────────────────────────────────────────────────────────────────────*/
#include "libc/calls/struct/timespec.h"
#include "libc/calls/struct/timeval.h"
#include "libc/thread/thread2.h"
#include "third_party/python/Include/pylifecycle.h"
#include "third_party/python/Python/condvar.h"
/* clang-format off */

View file

@ -32,6 +32,12 @@
Locking: as above.
*/
#ifdef WITH_THREAD
extern void wait_for_thread_shutdown(void);
extern void _PyGILState_Init(PyInterpreterState *, PyThreadState *);
extern void _PyGILState_Fini(void);
#endif /* WITH_THREAD */
int
Py_FinalizeEx(void)
{

View file

@ -19,6 +19,7 @@
#include "third_party/python/Include/abstract.h"
#include "third_party/python/Include/ast.h"
#include "third_party/python/Include/boolobject.h"
#include "third_party/python/Include/ceval.h"
#include "third_party/python/Include/code.h"
#include "third_party/python/Include/codecs.h"
#include "third_party/python/Include/cosmo.h"
@ -58,7 +59,7 @@ _Py_IDENTIFIER(stdout);
_Py_IDENTIFIER(stderr);
/* Forward */
static void wait_for_thread_shutdown(void);
void wait_for_thread_shutdown(void);
#ifdef WITH_THREAD
extern void _PyGILState_Init(PyInterpreterState *, PyThreadState *);
extern void _PyGILState_Fini(void);
@ -470,7 +471,7 @@ Py_EndInterpreter(PyThreadState *tstate)
the threading module was imported in the first place.
The shutdown routine will wait until all non-daemon
"threading" threads have completed. */
static void
void
wait_for_thread_shutdown(void)
{
#ifdef WITH_THREAD

View file

@ -5,6 +5,11 @@
https://docs.python.org/3/license.html │
*/
#include "libc/assert.h"
#include "libc/calls/struct/timespec.h"
#include "libc/calls/struct/timeval.h"
#include "libc/errno.h"
#include "libc/thread/thread2.h"
#include "third_party/python/Include/dynamic_annotations.h"
#include "third_party/python/Include/pyerrors.h"
#include "third_party/python/Include/pymacro.h"
#include "third_party/python/Include/pymem.h"
@ -77,18 +82,18 @@ static size_t _pythread_stacksize = 0;
#ifdef _POSIX_THREADS
#define PYTHREAD_NAME "pthread"
#include "thread_pthread.inc"
#include "third_party/python/Python/thread_pthread.inc"
#endif
#ifdef NT_THREADS
#define PYTHREAD_NAME "nt"
#include "thread_nt.inc"
// #include "thread_nt.inc"
#endif
/*
#ifdef FOOBAR_THREADS
#include "thread_foobar.inc"
// #include "thread_foobar.inc"
#endif
*/