1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2%
3% File:         PXK:PTHREAD.SL
4% Description:  Interface to *ix pthreads
5% Author:
6% Created:
7% Modified:
8% Mode:         Text
9% Package:
10% Status:       Open Source: BSD License
11%
12% (c) Copyright 1983, Hewlett-Packard Company, see the file
13%            HP_disclaimer at the root of the PSL file tree
14%
15% Redistribution and use in source and binary forms, with or without
16% modification, are permitted provided that the following conditions are met:
17%
18%    * Redistributions of source code must retain the relevant copyright
19%      notice, this list of conditions and the following disclaimer.
20%    * Redistributions in binary form must reproduce the above copyright
21%      notice, this list of conditions and the following disclaimer in the
22%      documentation and/or other materials provided with the distribution.
23%
24% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
26% THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
27% PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNERS OR
28% CONTRIBUTORS
29% BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32% INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33% CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34% ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35% POSSIBILITY OF SUCH DAMAGE.
36%
37%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
38
39%#include <features.h>
40%#include <sched.h>
41%#include <time.h>
42
43%#define __need_sigset_t
44%#include <signal.h>
45%#include <bits/pthreadtypes.h>
46%#include <bits/setjmp.h>
47%#include <bits/wordsize.h>
48
49(compiletime (off r2i))
50
51(external-function pthread_create (newthread attr start_routine arg))
52
53(external-function pthread_exit (retval))
54
55(external-function pthread_join (th thread_return))
56
57(external-function pthread_detach (th))
58
59(external-function pthread_self ())
60
61(external-function pthread_equal (thread1 thread2))
62
63(external-function pthread_attr_init (attr))
64
65(external-function pthread_attr_destroy (attr))
66
67(def_ext pthread_attr_getdetachstate (attr detachstate))
68
69(external-function pthread_attr_setdetachstate (attr detachstate))
70
71(external-function pthread_attr_getguardsize (attr guardsize))
72
73(external-function pthread_attr_setguardsize (attr guardsize))
74
75(external-function pthread_attr_getschedparam (attr param))
76
77(external-function pthread_attr_setschedparam (attr param))
78
79(external-function pthread_attr_getschedpolicy (attr policy))
80
81(external-function pthread_attr_setschedpolicy (attr policy))
82
83(external-function pthread_attr_getinheritsched (attr inherit))
84
85(external-function pthread_attr_setinheritsched (attr inherit))
86
87(external-function pthread_attr_getscope (attr scope))
88
89(external-function pthread_attr_setscope (attr scope))
90
91(external-function pthread_attr_getstack (attr stackaddr stacksize))
92
93(external-function pthread_attr_setstack (attr stackaddr stacksize))
94
95(external-function pthread_attr_getstacksize (attr stacksize))
96
97(external-function pthread_attr_setstacksize (attr stacksize))
98
99% Functions for scheduling control.  */
100
101(external-function pthread_setschedparam (target_thread policy param))
102
103(external-function pthread_getschedparam (target_thread policy param))
104
105(external-function pthread_setschedprio (target_thread prio))
106
107(external-function pthread_getconcurrency (void))
108
109(external-function pthread_yield (void))
110
111(external-function pthread_setaffinity_np (th cpusetsize cpuset))
112
113(external-function pthread_getaffinity_np (th cpusetsize cpuset))
114
115(external-function pthread_once (once_control init_routine))
116
117(external-function pthread_setcancelstate (state oldstate))
118
119(external-function pthread_setcanceltype (type oldtype))
120
121(external-function pthread_cancel (th))
122
123(external-function pthread_testcancel (void))
124
125%/* Mutex handling.  */
126
127/* Initialize a mutex.  */
128(external-function pthread_mutex_init (mutex mutexattr))
129
130(external-function pthread_mutex_destroy (mutex))
131
132(external-function pthread_mutex_trylock (mutex))
133
134(external-function pthread_mutex_lock (mutex))
135
136(external-function pthread_mutex_unlock (mutex))
137
138%* Functions for handling mutex attributes.  */
139
140(external-function pthread_mutexattr_init (attr))
141
142(external-function pthread_mutexattr_destroy (attr))
143
144(external-function pthread_mutexattr_getpshared (attr pshared))
145
146(external-function pthread_mutexattr_setpshared (attr pshared))
147
148(external-function pthread_rwlock_unlock (rwlock))
149
150(external-function pthread_rwlockattr_init (attr))
151
152(external-function pthread_rwlockattr_destroy (attr))
153
154(external-function pthread_rwlockattr_getpshared (attr pshared))
155
156(external-function pthread_rwlockattr_setpshared (attr pshared))
157
158(external-function pthread_rwlockattr_getkind_np (attr pref))
159
160(external-function pthread_rwlockattr_setkind_np (attr pref))
161
162(external-function pthread_cond_init (cond t cond_attr))
163
164(external-function pthread_cond_destroy (cond))
165
166(external-function pthread_cond_signal (cond))
167
168(external-function pthread_cond_broadcast (ond))
169
170(external-function pthread_cond_wait (cond mutex))
171
172(external-function pthread_cond_timedwait (cond mutexc abstime))
173
174(external-function pthread_condattr_init (attr))
175
176(external-function pthread_condattr_destroy (attr))
177
178(external-function pthread_condattr_getpshared (attr pshared))
179
180(external-function pthread_condattr_setpshared (attr pshared))
181
182%* Functions for handling thread-specific data.  */
183
184(external-function pthread_key_create (key destr_function))
185
186(external-function pthread_key_delete (key))
187
188(external-function pthread_getspecific (key))
189
190(external-function pthread_setspecific (key pointer))
191
192(external-function pthread_atfork (prepare parent child))
193
194(compiletime (on r2i))
195