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