pthread.h revision 1.1.2.1 1 1.1.2.1 nathanw
2 1.1.2.1 nathanw /* Copyright */
3 1.1.2.1 nathanw
4 1.1.2.1 nathanw #ifndef _LIB_PTHREAD_H
5 1.1.2.1 nathanw #define _LIB_PTHREAD_H
6 1.1.2.1 nathanw
7 1.1.2.1 nathanw #include "sched.h"
8 1.1.2.1 nathanw #include <sys/time.h> /* For timespec */
9 1.1.2.1 nathanw
10 1.1.2.1 nathanw struct pthread_st;
11 1.1.2.1 nathanw struct pthread_attr_st;
12 1.1.2.1 nathanw struct pthread_mutex_st;
13 1.1.2.1 nathanw struct pthread_mutexattr_st;
14 1.1.2.1 nathanw struct pthread_cond_st;
15 1.1.2.1 nathanw struct pthread_condattr_st;
16 1.1.2.1 nathanw
17 1.1.2.1 nathanw typedef struct pthread_st *pthread_t;
18 1.1.2.1 nathanw typedef struct pthread_attr_st *pthread_attr_t;
19 1.1.2.1 nathanw typedef struct pthread_mutex_st *pthread_mutex_t;
20 1.1.2.1 nathanw typedef struct pthread_mutexattr_st *pthread_mutexattr_t;
21 1.1.2.1 nathanw typedef struct pthread_cond_st *pthread_cond_t;
22 1.1.2.1 nathanw typedef struct pthread_condattr_st *pthread_condattr_t;
23 1.1.2.1 nathanw
24 1.1.2.1 nathanw int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
25 1.1.2.1 nathanw void *(*startfunc)(void *), void *arg);
26 1.1.2.1 nathanw void pthread_exit(void *retval);
27 1.1.2.1 nathanw int pthread_join(pthread_t thread, void **valptr);
28 1.1.2.1 nathanw int pthread_equal(pthread_t t1, pthread_t t2);
29 1.1.2.1 nathanw pthread_t pthread_self(void);
30 1.1.2.1 nathanw int pthread_detach(pthread_t thread);
31 1.1.2.1 nathanw
32 1.1.2.1 nathanw int pthread_kill(pthread_t thread, int sig);
33 1.1.2.1 nathanw int pthread_sigmask(int how, const sigset_t *set, sigset_t *oset);
34 1.1.2.1 nathanw
35 1.1.2.1 nathanw int pthread_attr_destroy(pthread_attr_t *attr);
36 1.1.2.1 nathanw int pthread_attr_getdetachstate(pthread_attr_t *attr, int *detachstate);
37 1.1.2.1 nathanw int pthread_attr_init(pthread_attr_t *attr);
38 1.1.2.1 nathanw int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
39 1.1.2.1 nathanw int pthread_attr_setschedparam(pthread_attr_t *attr,
40 1.1.2.1 nathanw const struct sched_param *param);
41 1.1.2.1 nathanw int pthread_attr_getschedparam(pthread_attr_t *attr,
42 1.1.2.1 nathanw struct sched_param *param);
43 1.1.2.1 nathanw
44 1.1.2.1 nathanw int pthread_mutex_init(pthread_mutex_t *mutex,
45 1.1.2.1 nathanw const pthread_mutexattr_t *attr);
46 1.1.2.1 nathanw int pthread_mutex_destroy(pthread_mutex_t *mutex);
47 1.1.2.1 nathanw int pthread_mutex_lock(pthread_mutex_t *mutex);
48 1.1.2.1 nathanw int pthread_mutex_trylock(pthread_mutex_t *mutex);
49 1.1.2.1 nathanw int pthread_mutex_unlock(pthread_mutex_t *mutex);
50 1.1.2.1 nathanw
51 1.1.2.1 nathanw int pthread_cond_init(pthread_cond_t *cond,
52 1.1.2.1 nathanw const pthread_condattr_t *attr);
53 1.1.2.1 nathanw int pthread_cond_destroy(pthread_cond_t *cond);
54 1.1.2.1 nathanw int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);
55 1.1.2.1 nathanw int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex,
56 1.1.2.1 nathanw const struct timespec *abstime);
57 1.1.2.1 nathanw int pthread_cond_signal(pthread_cond_t *cond);
58 1.1.2.1 nathanw int pthread_cond_broadacst(pthread_cond_t *cond);
59 1.1.2.1 nathanw int pthread_condattr_init(pthread_condattr_t *attr);
60 1.1.2.1 nathanw int pthread_condattr_destroy(pthread_condattr_t *attr);
61 1.1.2.1 nathanw int pthread_condattr_getpshared(const pthread_condattr_t *attr,
62 1.1.2.1 nathanw int *pshared);
63 1.1.2.1 nathanw int pthread_condattr_setpshared(pthread_condattr_t *attr, int pshared);
64 1.1.2.1 nathanw
65 1.1.2.1 nathanw #define PTHREAD_MUTEX_INITIALIZER xxxxx
66 1.1.2.1 nathanw #define PTHREAD_COND_INITIALIZER xxxxx
67 1.1.2.1 nathanw
68 1.1.2.1 nathanw #define PTHREAD_CREATE_JOINABLE 0
69 1.1.2.1 nathanw #define PTHREAD_CREATE_DETACHED 1
70 1.1.2.1 nathanw
71 1.1.2.1 nathanw #define PTHREAD_PROCESS_PRIVATE 0
72 1.1.2.1 nathanw #define PTHREAD_PROCESS_SHARED 1
73 1.1.2.1 nathanw
74 1.1.2.1 nathanw #define _POSIX_THREADS
75 1.1.2.1 nathanw
76 1.1.2.1 nathanw /* XXX not actually implemented but required to exist */
77 1.1.2.1 nathanw #define PTHREAD_DESTRUCTOR_ITERATIONS 4 /* Min. required */
78 1.1.2.1 nathanw #define PTHREAD_KEYS_MAX 128 /* Min. required */
79 1.1.2.1 nathanw #define PTHREAD_STACK_MIN 4096 /* XXX Pulled out of my butt */
80 1.1.2.1 nathanw #define PTHREAD_THREADS_MAX 64 /* Min. required */
81 1.1.2.1 nathanw
82 1.1.2.1 nathanw
83 1.1.2.1 nathanw #endif /* _LIB_PTHREAD_H */
84