Xenomai  3.1
pthread.h
1 /*
2  * Copyright (C) 2005 Philippe Gerum <rpm@xenomai.org>.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
17  */
18 #pragma GCC system_header
19 #include_next <pthread.h>
20 
21 #ifndef _COBALT_PTHREAD_H
22 #define _COBALT_PTHREAD_H
23 
24 #include <boilerplate/libc.h>
25 #include <cobalt/wrappers.h>
26 #include <cobalt/uapi/thread.h>
27 
28 typedef struct pthread_attr_ex {
29  pthread_attr_t std;
30  struct {
31  int personality;
32  int sched_policy;
33  struct sched_param_ex sched_param;
34  } nonstd;
35 } pthread_attr_ex_t;
36 
37 #ifdef __cplusplus
38 extern "C" {
39 #endif
40 
41 COBALT_DECL(int, pthread_attr_init(pthread_attr_t *attr));
42 
43 COBALT_DECL(int, pthread_create(pthread_t *ptid_r,
44  const pthread_attr_t *attr,
45  void *(*start) (void *),
46  void *arg));
47 
48 COBALT_DECL(int, pthread_getschedparam(pthread_t thread,
49  int *policy,
50  struct sched_param *param));
51 
52 COBALT_DECL(int, pthread_setschedparam(pthread_t thread,
53  int policy,
54  const struct sched_param *param));
55 
56 COBALT_DECL(int, pthread_setschedprio(pthread_t thread, int prio));
57 
58 COBALT_DECL(int, pthread_mutex_init(pthread_mutex_t *mutex,
59  const pthread_mutexattr_t *attr));
60 
61 COBALT_DECL(int, pthread_mutex_destroy(pthread_mutex_t *mutex));
62 
63 COBALT_DECL(int, pthread_mutex_lock(pthread_mutex_t *mutex));
64 
65 COBALT_DECL(int, pthread_mutex_timedlock(pthread_mutex_t *mutex,
66  const struct timespec *to));
67 
68 COBALT_DECL(int, pthread_mutex_trylock(pthread_mutex_t *mutex));
69 
70 COBALT_DECL(int, pthread_mutex_unlock(pthread_mutex_t *mutex));
71 
72 COBALT_DECL(int, pthread_mutex_setprioceiling(pthread_mutex_t *__restrict mutex,
73  int prioceiling,
74  int *__restrict old_ceiling));
75 
76 COBALT_DECL(int, pthread_mutex_getprioceiling(pthread_mutex_t *__restrict mutex,
77  int *__restrict old_ceiling));
78 
79 COBALT_DECL(int, pthread_cond_init (pthread_cond_t *cond,
80  const pthread_condattr_t *attr));
81 
82 COBALT_DECL(int, pthread_cond_destroy(pthread_cond_t *cond));
83 
84 COBALT_DECL(int, pthread_cond_wait(pthread_cond_t *cond,
85  pthread_mutex_t *mutex));
86 
87 COBALT_DECL(int, pthread_cond_timedwait(pthread_cond_t *cond,
88  pthread_mutex_t *mutex,
89  const struct timespec *abstime));
90 
91 COBALT_DECL(int, pthread_cond_signal(pthread_cond_t *cond));
92 
93 COBALT_DECL(int, pthread_cond_broadcast(pthread_cond_t *cond));
94 
95 COBALT_DECL(int, pthread_kill(pthread_t ptid, int sig));
96 
97 COBALT_DECL(int, pthread_join(pthread_t ptid, void **retval));
98 
99 #ifndef pthread_yield
100 /*
101  * linuxthreads wraps pthread_yield() to sched_yield() via a
102  * preprocessor macro, which confuses the compiler with
103  * COBALT_DECL(). Since Cobalt also routes pthread_yield() to its own
104  * sched_yield() implementation internally, we can live with this
105  * wrapping.
106  */
107 COBALT_DECL(int, pthread_yield(void));
108 #endif
109 
110 int pthread_setmode_np(int clrmask, int setmask,
111  int *mask_r);
112 
113 COBALT_DECL(int, pthread_setname_np(pthread_t thread, const char *name));
114 
115 int pthread_create_ex(pthread_t *ptid_r,
116  const pthread_attr_ex_t *attr_ex,
117  void *(*start)(void *),
118  void *arg);
119 
120 int pthread_getschedparam_ex(pthread_t ptid,
121  int *pol,
122  struct sched_param_ex *par);
123 
124 int pthread_setschedparam_ex(pthread_t ptid,
125  int pol,
126  const struct sched_param_ex *par);
127 
128 int pthread_attr_init_ex(pthread_attr_ex_t *attr_ex);
129 
130 int pthread_attr_destroy_ex(pthread_attr_ex_t *attr_ex);
131 
132 int pthread_attr_setschedpolicy_ex(pthread_attr_ex_t *attr_ex,
133  int policy);
134 
135 int pthread_attr_getschedpolicy_ex(const pthread_attr_ex_t *attr_ex,
136  int *policy);
137 
138 int pthread_attr_setschedparam_ex(pthread_attr_ex_t *attr_ex,
139  const struct sched_param_ex *param_ex);
140 
141 int pthread_attr_getschedparam_ex(const pthread_attr_ex_t *attr_ex,
142  struct sched_param_ex *param_ex);
143 
144 int pthread_attr_getinheritsched_ex(const pthread_attr_ex_t *attr_ex,
145  int *inheritsched);
146 
147 int pthread_attr_setinheritsched_ex(pthread_attr_ex_t *attr_ex,
148  int inheritsched);
149 
150 int pthread_attr_getdetachstate_ex(const pthread_attr_ex_t *attr_ex,
151  int *detachstate);
152 
153 int pthread_attr_setdetachstate_ex(pthread_attr_ex_t *attr_ex,
154  int detachstate);
155 
156 int pthread_attr_setdetachstate_ex(pthread_attr_ex_t *attr_ex,
157  int detachstate);
158 
159 int pthread_attr_getstacksize_ex(const pthread_attr_ex_t *attr_ex,
160  size_t *stacksize);
161 
162 int pthread_attr_setstacksize_ex(pthread_attr_ex_t *attr_ex,
163  size_t stacksize);
164 
165 int pthread_attr_getscope_ex(const pthread_attr_ex_t *attr_ex,
166  int *scope);
167 
168 int pthread_attr_setscope_ex(pthread_attr_ex_t *attr_ex,
169  int scope);
170 
171 int pthread_attr_getpersonality_ex(const pthread_attr_ex_t *attr_ex,
172  int *personality);
173 
174 int pthread_attr_setpersonality_ex(pthread_attr_ex_t *attr_ex,
175  int personality);
176 #ifdef __cplusplus
177 }
178 #endif
179 
180 #endif /* !_COBALT_PTHREAD_H */
int pthread_getschedparam(pthread_t thread, int *__restrict__ policy, struct sched_param *__restrict__ param)
Get the scheduling policy and parameters of the specified thread.
Definition: thread.c:738
int pthread_mutex_lock(pthread_mutex_t *mutex)
Lock a mutex.
Definition: mutex.c:320
int pthread_cond_signal(pthread_cond_t *cond)
Signal a condition variable.
Definition: cond.c:445
int pthread_mutex_trylock(pthread_mutex_t *mutex)
Attempt to lock a mutex.
Definition: mutex.c:531
int pthread_mutex_getprioceiling(pthread_mutex_t *__restrict mutex, int *__restrict old_ceiling)
Get a mutex&#39;s priority ceiling.
Definition: mutex.c:772
int pthread_setschedparam_ex(pthread_t ptid, int pol, const struct sched_param_ex *par)
Set extended scheduling policy of thread
Definition: thread.c:612
int pthread_setmode_np(int clrmask, int setmask, int *mask_r)
Set the mode of the current thread.
Definition: thread.c:383
int pthread_cond_broadcast(pthread_cond_t *cond)
Broadcast a condition variable.
Definition: cond.c:501
int pthread_mutex_unlock(pthread_mutex_t *mutex)
Unlock a mutex.
Definition: mutex.c:628
int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)
Wait on a condition variable.
Definition: cond.c:280
int pthread_getschedparam_ex(pthread_t thread, int *__restrict__ policy_r, struct sched_param_ex *__restrict__ param_ex)
Get extended scheduling policy of thread
Definition: thread.c:779
int pthread_cond_destroy(pthread_cond_t *cond)
Destroy a condition variable
Definition: cond.c:201
int pthread_setname_np(pthread_t thread, const char *name)
Set a thread name.
Definition: thread.c:408
int pthread_kill(pthread_t ptid, int sig)
Send a signal to a thread.
Definition: thread.c:437
int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime)
Wait a bounded time on a condition variable.
Definition: cond.c:371
int pthread_setschedparam(pthread_t thread, int policy, const struct sched_param *param)
Set the scheduling policy and parameters of the specified thread.
Definition: thread.c:548
int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr)
Initialize a condition variable
Definition: cond.c:120
int pthread_yield(void)
Yield the processor.
Definition: thread.c:811
int pthread_mutex_destroy(pthread_mutex_t *mutex)
Destroy a mutex.
Definition: mutex.c:272
int pthread_mutex_timedlock(pthread_mutex_t *mutex, const struct timespec *to)
Attempt, during a bounded time, to lock a mutex.
Definition: mutex.c:431
int pthread_create(pthread_t *ptid_r, const pthread_attr_t *attr, void *(*start)(void *), void *arg)
Create a new thread
Definition: thread.c:277
int pthread_mutex_setprioceiling(pthread_mutex_t *__restrict mutex, int prioceiling, int *__restrict old_ceiling)
Set a mutex&#39;s priority ceiling.
Definition: mutex.c:720
int pthread_join(pthread_t ptid, void **retval)
Wait for termination of a specified thread.
Definition: thread.c:486
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr)
Initialize a mutex.
Definition: mutex.c:118