More stuff
[kopensolaris-gnu/glibc.git] / nptl / sysdeps / unix / sysv / solaris2 / kopensolaris-gnu / thread.h
1 /* Copyright (C) 2008 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3    Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
4
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, write to the Free
17    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18    02111-1307 USA.  */
19
20 #ifndef _THREAD_H
21 #define _THREAD_H
22
23 #include <signal.h>
24 #include <synch.h>
25
26 typedef unsigned int thread_t;
27 typedef unsigned int thread_key_t;
28
29 #define THR_BOUND       0x00000001 /* PTHREAD_SCOPE_SYSTEM; unused */
30 #define THR_NEW_LWP     0x00000002 /* unused */
31 #define THR_DETACHED    0x00000040 /* PTHREAD_CREATE_DETACHED */
32 #define THR_SUSPENDED   0x00000080
33 #define THR_DAEMON      0x00000100
34
35 #define THR_ONCE_KEY    (thread_key_t)(-1)
36
37 #define TRS_VALID       0
38 #define TRS_NONVOLATILE 1
39 #define TRS_LWPID       2
40 #define TRS_INVALID     3
41
42 __BEGIN_DECLS
43
44 extern int thr_create (void *, size_t, void * (*)(void *), void *, long,
45     thread_t *);
46
47 extern int thr_join (thread_t, thread_t *, void **);
48
49 extern int thr_setconcurrency (int);
50
51 extern int thr_getconcurrency (void);
52
53 extern void thr_exit (void *);
54
55 extern thread_t thr_self (void);
56
57 extern int thr_main (void);
58
59 extern int thr_kill (thread_t, int);
60
61 extern int thr_suspend (thread_t);
62
63 extern int thr_continue (thread_t);
64
65 extern void thr_yield (void);
66
67 extern int thr_setprio (thread_t, int);
68
69 extern int thr_getprio (thread_t, int *);
70
71 extern int thr_keycreate (thread_key_t *, void(*)(void *));
72
73 extern int thr_keycreate_once (thread_key_t *, void(*)(void *));
74
75 extern int thr_setspecific (thread_key_t, void *);
76
77 extern int thr_getspecific (thread_key_t, void **);
78
79 extern int thr_sigsetmask (int how, const sigset_t *set, sigset_t *oset);
80
81 extern int thr_stksegment (stack_t *stk);
82
83 __END_DECLS
84
85 #endif /* _THREAD_H */