blob: 680b7fb8c15712fb5dc0d6d1d71d89d724d93584 [file] [log] [blame]
Guido van Rossum1984f1e1992-08-04 12:41:02 +00001#ifndef _THREAD_H_included
2#define _THREAD_H_included
3
Guido van Rossumb6775db1994-08-01 11:34:53 +00004#define NO_EXIT_PROG /* don't define exit_prog() */
5 /* (the result is no use of signals on SGI) */
6
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +00007#ifndef PROTO
Sjoerd Mullenderd10d8291992-09-11 15:19:27 +00008#if defined(__STDC__) || defined(__cplusplus)
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +00009#define PROTO(args) args
Guido van Rossum1984f1e1992-08-04 12:41:02 +000010#else
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +000011#define PROTO(args) ()
12#endif
Guido van Rossum1984f1e1992-08-04 12:41:02 +000013#endif
14
Sjoerd Mullenderd10d8291992-09-11 15:19:27 +000015typedef void *type_lock;
16typedef void *type_sema;
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +000022void init_thread PROTO((void));
23int start_new_thread PROTO((void (*)(void *), void *));
24void exit_thread PROTO((void));
25void _exit_thread PROTO((void));
Guido van Rossumb6775db1994-08-01 11:34:53 +000026long get_thread_ident PROTO((void));
Guido van Rossum1984f1e1992-08-04 12:41:02 +000027
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +000028type_lock allocate_lock PROTO((void));
29void free_lock PROTO((type_lock));
30int acquire_lock PROTO((type_lock, int));
Guido van Rossum1984f1e1992-08-04 12:41:02 +000031#define WAIT_LOCK 1
32#define NOWAIT_LOCK 0
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +000033void release_lock PROTO((type_lock));
Guido van Rossum1984f1e1992-08-04 12:41:02 +000034
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +000035type_sema allocate_sema PROTO((int));
36void free_sema PROTO((type_sema));
37void down_sema PROTO((type_sema));
38void up_sema PROTO((type_sema));
Guido van Rossumf9f2e821992-08-17 08:59:08 +000039
Guido van Rossumb6775db1994-08-01 11:34:53 +000040#ifndef NO_EXIT_PROG
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +000041void exit_prog PROTO((int));
42void _exit_prog PROTO((int));
Guido van Rossumb6775db1994-08-01 11:34:53 +000043#endif
Guido van Rossum1984f1e1992-08-04 12:41:02 +000044
Sjoerd Mullenderd10d8291992-09-11 15:19:27 +000045#ifdef __cplusplus
46}
47#endif
48
Guido van Rossum1984f1e1992-08-04 12:41:02 +000049#endif