00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
#ifndef PTHREAD_NT_H_INCLUDED
00027
#define PTHREAD_NT_H_INCLUDED
00028
00029
#include <errno.h>
00030
00031
#ifndef ETIMEDOUT
00032
00033 #define ETIMEDOUT 60
00034
#endif
00035
00036
#undef PthreadDraftVersion
00037 #define PthreadDraftVersion 10
00038
00039 #define NoNanoSleep
00040
00041 #define PthreadSupportThreadPriority
00042
00043
#ifdef __cplusplus
00044
extern "C" {
00045
#endif
00046
00047
#ifndef _TIMERS_T_
00048
#define _TIMERS_T_
00049 typedef struct timespec {
00050 unsigned long tv_sec;
00051 long tv_nsec;
00052 }
timespec_t;
00053
#endif
00054
00055 typedef char*
__pthreadLongString_t;
00056 typedef void*
__pthreadLongAddr_t;
00057 typedef __pthreadLongAddr_t*
__pthreadLongAddr_p;
00058 typedef long __pthreadLongInt_t;
00059 typedef unsigned long __pthreadLongUint_t;
00060 typedef __pthreadLongAddr_p __pthreadTsd_t;
00061
00062 typedef struct __pthread_mutex_t {
00063 unsigned int lock;
00064 unsigned int valid;
00065 __pthreadLongString_t name;
00066 unsigned int arg;
00067 unsigned int depth;
00068 unsigned long sequence;
00069 unsigned long owner;
00070 __pthreadLongAddr_t block;
00071 }
pthread_mutex_t;
00072
00073 typedef struct __pthread_mutexattr_t {
00074 long valid;
00075 __pthreadLongUint_t reserved[15];
00076 }
pthread_mutexattr_t;
00077
00078 typedef struct __pthread_cond_t {
00079 unsigned int state;
00080 unsigned int valid;
00081 __pthreadLongString_t name;
00082 unsigned int arg;
00083 unsigned long sequence;
00084 __pthreadLongAddr_t block;
00085 }
pthread_cond_t ;
00086
00087 typedef struct __pthread_condattr_t {
00088 long valid;
00089 __pthreadLongUint_t reserved[13];
00090 }
pthread_condattr_t ;
00091
00092 typedef struct __pthread_transp_t {
00093 __pthreadLongAddr_t reserved1;
00094 __pthreadLongAddr_t reserved2;
00095 unsigned short size;
00096 unsigned char reserved3[2];
00097 __pthreadLongAddr_t reserved4;
00098 __pthreadLongUint_t sequence;
00099 __pthreadLongUint_t reserved5[2];
00100 __pthreadLongAddr_t per_kt_area;
00101 __pthreadLongAddr_t stack_base;
00102 __pthreadLongAddr_t stack_reserve;
00103 __pthreadLongAddr_t stack_yellow;
00104 __pthreadLongAddr_t stack_guard;
00105 __pthreadLongUint_t stack_size;
00106 __pthreadTsd_t tsd_values;
00107 unsigned long tsd_count;
00108 __pthreadLongAddr_t reserved6;
00109 __pthreadLongAddr_t reserved7;
00110 unsigned int thread_flags;
00111 }
pthread_transp_t, *
pthread_transp_p;
00112
00113 typedef pthread_transp_p pthread_t;
00114
00115 typedef struct __pthread_attr_t {
00116 long valid;
00117 __pthreadLongString_t name;
00118 __pthreadLongUint_t arg;
00119 __pthreadLongUint_t reserved[19];
00120 }
pthread_attr_t ;
00121
00122 typedef unsigned int pthread_key_t;
00123
00124 typedef struct sched_param {
00125 int sched_priority;
00126 }
sched_param_t;
00127
00128
00129
00130
int pthread_create(pthread_t *thread,
const pthread_attr_t *attr,
00131
void *(*start_routine)(
void*),
void *arg);
00132
int pthread_detach(pthread_t thread);
00133
int pthread_join(pthread_t thread,
void **value_ptr);
00134
void pthread_exit(
void *value_ptr);
00135
int pthread_attr_init(
pthread_attr_t *attr);
00136
int pthread_attr_destroy(
pthread_attr_t *attr);
00137
int pthread_attr_setstacksize(
pthread_attr_t *attr, size_t stacksize);
00138
int pthread_attr_getstacksize(
const pthread_attr_t *attr,
00139 size_t *stacksize);
00140
int pthread_cond_init(
pthread_cond_t *cond,
00141
const pthread_condattr_t *attr);
00142
int pthread_cond_destroy(
pthread_cond_t *cond);
00143
int pthread_cond_wait(
pthread_cond_t *cond,
pthread_mutex_t *mutex);
00144
int pthread_cond_timedwait(
pthread_cond_t *cond,
00145
pthread_mutex_t *mutex,
00146
const struct timespec *abstime);
00147
int pthread_cond_signal(
pthread_cond_t *cond);
00148
int pthread_cond_broadcast(
pthread_cond_t *cond);
00149
int pthread_key_create(pthread_key_t *key,
void (*destructor)(
void*));
00150
int pthread_key_delete(pthread_key_t key);
00151
int pthread_mutex_destroy(
pthread_mutex_t *mutex);
00152
int pthread_mutex_init(
pthread_mutex_t *mutex,
00153
const pthread_mutexattr_t *attr);
00154
int pthread_mutex_lock(
pthread_mutex_t *mutex);
00155
int pthread_mutex_trylock(
pthread_mutex_t *mutex);
00156
int pthread_mutex_unlock(
pthread_mutex_t *mutex);
00157
pthread_t pthread_self();
00158
int pthread_setspecific(pthread_key_t key,
const void *value);
00159
void *
pthread_getspecific(pthread_key_t key);
00160
int pthread_getschedparam(pthread_t thread,
int *policy,
00161
struct sched_param *param);
00162
int pthread_setschedparam(pthread_t thread,
int policy,
00163
const struct sched_param *param);
00164
int pthread_attr_setschedparam(
pthread_attr_t *attr,
00165
const struct sched_param *param);
00166
int pthread_attr_getschedparam(
const pthread_attr_t *attr,
00167
struct sched_param *param);
00168
00169
int pthread_delay_np(
const struct timespec *interval);
00170
int pthread_get_expiration_np(
const struct timespec *delta,
00171
struct timespec *abstime);
00172
00173 # define SCHED_FIFO 1
00174 # define SCHED_RR 2
00175 # define SCHED_OTHER 3
00176
00177
int sched_yield();
00178
int sched_get_priority_max(
int policy);
00179
int sched_get_priority_min(
int policy);
00180
00181
00182
#ifdef __cplusplus
00183
}
00184
#endif
00185
00186
#endif // PTHREAD_NT_H_INCLUDED