blob: 806882f2df41ede2519ffb0c13163a22f0672a83 [file] [log] [blame]
Guido van Rossum1984f1e1992-08-04 12:41:02 +00001#ifndef _THREAD_H_included
2#define _THREAD_H_included
3
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +00004#ifndef PROTO
Sjoerd Mullenderd10d8291992-09-11 15:19:27 +00005#if defined(__STDC__) || defined(__cplusplus)
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +00006#define PROTO(args) args
Guido van Rossum1984f1e1992-08-04 12:41:02 +00007#else
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +00008#define PROTO(args) ()
9#endif
Guido van Rossum1984f1e1992-08-04 12:41:02 +000010#endif
11
Sjoerd Mullenderd10d8291992-09-11 15:19:27 +000012typedef void *type_lock;
13typedef void *type_sema;
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +000019void init_thread PROTO((void));
20int start_new_thread PROTO((void (*)(void *), void *));
21void exit_thread PROTO((void));
22void _exit_thread PROTO((void));
Guido van Rossum1984f1e1992-08-04 12:41:02 +000023
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +000024type_lock allocate_lock PROTO((void));
25void free_lock PROTO((type_lock));
26int acquire_lock PROTO((type_lock, int));
Guido van Rossum1984f1e1992-08-04 12:41:02 +000027#define WAIT_LOCK 1
28#define NOWAIT_LOCK 0
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +000029void release_lock PROTO((type_lock));
Guido van Rossum1984f1e1992-08-04 12:41:02 +000030
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +000031type_sema allocate_sema PROTO((int));
32void free_sema PROTO((type_sema));
33void down_sema PROTO((type_sema));
34void up_sema PROTO((type_sema));
Guido van Rossumf9f2e821992-08-17 08:59:08 +000035
Sjoerd Mullender7030b1f1993-12-20 17:26:34 +000036void exit_prog PROTO((int));
37void _exit_prog PROTO((int));
Guido van Rossum1984f1e1992-08-04 12:41:02 +000038
Sjoerd Mullenderd10d8291992-09-11 15:19:27 +000039#ifdef __cplusplus
40}
41#endif
42
Guido van Rossum1984f1e1992-08-04 12:41:02 +000043#endif