blob: 7d4e0ea5f269b3fb498bfdb2479d4671b1855861 [file] [log] [blame]
Guido van Rossumd023a781999-03-24 19:02:09 +00001#ifndef Py_PYTHREAD_H
2#define Py_PYTHREAD_H
3
4/***********************************************************
Guido van Rossumfd71b9e2000-06-30 23:50:40 +00005Copyright (c) 2000, BeOpen.com.
6Copyright (c) 1995-2000, Corporation for National Research Initiatives.
7Copyright (c) 1990-1995, Stichting Mathematisch Centrum.
8All rights reserved.
Guido van Rossumd023a781999-03-24 19:02:09 +00009
Guido van Rossumfd71b9e2000-06-30 23:50:40 +000010See the file "Misc/COPYRIGHT" for information on usage and
11redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
Guido van Rossumd023a781999-03-24 19:02:09 +000012******************************************************************/
Guido van Rossum1984f1e1992-08-04 12:41:02 +000013
Guido van Rossum65d5b571998-12-21 19:32:43 +000014#define NO_EXIT_PROG /* don't define PyThread_exit_prog() */
Guido van Rossumb6775db1994-08-01 11:34:53 +000015 /* (the result is no use of signals on SGI) */
16
Guido van Rossumcaa63801995-01-12 11:45:45 +000017#ifndef Py_PROTO
Sjoerd Mullenderd10d8291992-09-11 15:19:27 +000018#if defined(__STDC__) || defined(__cplusplus)
Guido van Rossumcaa63801995-01-12 11:45:45 +000019#define Py_PROTO(args) args
Guido van Rossum1984f1e1992-08-04 12:41:02 +000020#else
Guido van Rossumcaa63801995-01-12 11:45:45 +000021#define Py_PROTO(args) ()
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +000022#endif
Guido van Rossum1984f1e1992-08-04 12:41:02 +000023#endif
24
Guido van Rossum65d5b571998-12-21 19:32:43 +000025typedef void *PyThread_type_lock;
26typedef void *PyThread_type_sema;
Sjoerd Mullenderd10d8291992-09-11 15:19:27 +000027
28#ifdef __cplusplus
29extern "C" {
30#endif
31
Guido van Rossum65d5b571998-12-21 19:32:43 +000032DL_IMPORT(void) PyThread_init_thread Py_PROTO((void));
33DL_IMPORT(int) PyThread_start_new_thread Py_PROTO((void (*)(void *), void *));
Guido van Rossum43466ec1998-12-04 18:48:25 +000034DL_IMPORT(void) PyThread_exit_thread Py_PROTO((void));
Guido van Rossum65d5b571998-12-21 19:32:43 +000035DL_IMPORT(void) PyThread__PyThread_exit_thread Py_PROTO((void));
36DL_IMPORT(long) PyThread_get_thread_ident Py_PROTO((void));
Guido van Rossum1984f1e1992-08-04 12:41:02 +000037
Guido van Rossum65d5b571998-12-21 19:32:43 +000038DL_IMPORT(PyThread_type_lock) PyThread_allocate_lock Py_PROTO((void));
39DL_IMPORT(void) PyThread_free_lock Py_PROTO((PyThread_type_lock));
40DL_IMPORT(int) PyThread_acquire_lock Py_PROTO((PyThread_type_lock, int));
Guido van Rossum1984f1e1992-08-04 12:41:02 +000041#define WAIT_LOCK 1
42#define NOWAIT_LOCK 0
Guido van Rossum65d5b571998-12-21 19:32:43 +000043DL_IMPORT(void) PyThread_release_lock Py_PROTO((PyThread_type_lock));
Guido van Rossum1984f1e1992-08-04 12:41:02 +000044
Guido van Rossum65d5b571998-12-21 19:32:43 +000045DL_IMPORT(PyThread_type_sema) PyThread_allocate_sema Py_PROTO((int));
46DL_IMPORT(void) PyThread_free_sema Py_PROTO((PyThread_type_sema));
47DL_IMPORT(int) PyThread_down_sema Py_PROTO((PyThread_type_sema, int));
Guido van Rossuma6351841996-10-08 14:21:49 +000048#define WAIT_SEMA 1
49#define NOWAIT_SEMA 0
Guido van Rossum65d5b571998-12-21 19:32:43 +000050DL_IMPORT(void) PyThread_up_sema Py_PROTO((PyThread_type_sema));
Guido van Rossumf9f2e821992-08-17 08:59:08 +000051
Guido van Rossumb6775db1994-08-01 11:34:53 +000052#ifndef NO_EXIT_PROG
Guido van Rossum65d5b571998-12-21 19:32:43 +000053DL_IMPORT(void) PyThread_exit_prog Py_PROTO((int));
54DL_IMPORT(void) PyThread__PyThread_exit_prog Py_PROTO((int));
Guido van Rossumb6775db1994-08-01 11:34:53 +000055#endif
Guido van Rossum1984f1e1992-08-04 12:41:02 +000056
Guido van Rossum65d5b571998-12-21 19:32:43 +000057DL_IMPORT(int) PyThread_create_key Py_PROTO((void));
58DL_IMPORT(void) PyThread_delete_key Py_PROTO((int));
59DL_IMPORT(int) PyThread_set_key_value Py_PROTO((int, void *));
60DL_IMPORT(void *) PyThread_get_key_value Py_PROTO((int));
Guido van Rossuma027efa1997-05-05 20:56:21 +000061
Sjoerd Mullenderd10d8291992-09-11 15:19:27 +000062#ifdef __cplusplus
63}
64#endif
65
Guido van Rossumd023a781999-03-24 19:02:09 +000066#endif /* !Py_PYTHREAD_H */