3
#include <mach/cthreads.h>
14
PyThread__init_thread(void)
16
#ifndef HURD_C_THREADS
17
/* Roland McGrath said this should not be used since this is
18
done while linking to threads */
30
PyThread_start_new_thread(void (*func)(void *), void *arg)
32
int success = 0; /* init not needed when SOLARIS_THREADS and */
33
/* C_THREADS implemented properly */
35
dprintf(("PyThread_start_new_thread called\n"));
37
PyThread_init_thread();
38
/* looks like solaris detaches the thread to never rejoin
41
cthread_detach(cthread_fork((cthread_fn_t) func, arg));
42
return success < 0 ? -1 : 0;
46
PyThread_get_thread_ident(void)
49
PyThread_init_thread();
50
return (long) cthread_self();
54
do_PyThread_exit_thread(int no_cleanup)
56
dprintf(("PyThread_exit_thread called\n"));
66
PyThread_exit_thread(void)
68
do_PyThread_exit_thread(0);
72
PyThread__exit_thread(void)
74
do_PyThread_exit_thread(1);
79
void do_PyThread_exit_prog(int status, int no_cleanup)
81
dprintf(("PyThread_exit_prog(%d) called\n", status));
94
PyThread_exit_prog(int status)
96
do_PyThread_exit_prog(status, 0);
100
PyThread__exit_prog(int status)
102
do_PyThread_exit_prog(status, 1);
104
#endif /* NO_EXIT_PROG */
110
PyThread_allocate_lock(void)
114
dprintf(("PyThread_allocate_lock called\n"));
116
PyThread_init_thread();
118
lock = mutex_alloc();
119
if (mutex_init(lock)) {
120
perror("mutex_init");
124
dprintf(("PyThread_allocate_lock() -> %p\n", lock));
125
return (PyThread_type_lock) lock;
129
PyThread_free_lock(PyThread_type_lock lock)
131
dprintf(("PyThread_free_lock(%p) called\n", lock));
136
PyThread_acquire_lock(PyThread_type_lock lock, int waitflag)
140
dprintf(("PyThread_acquire_lock(%p, %d) called\n", lock, waitflag));
141
if (waitflag) { /* blocking */
142
mutex_lock((mutex_t)lock);
144
} else { /* non blocking */
145
success = mutex_try_lock((mutex_t)lock);
147
dprintf(("PyThread_acquire_lock(%p, %d) -> %d\n", lock, waitflag, success));
152
PyThread_release_lock(PyThread_type_lock lock)
154
dprintf(("PyThread_release_lock(%p) called\n", lock));
155
mutex_unlock((mutex_t )lock);