VSF Documented
pthread.h
Go to the documentation of this file.
1#ifndef __VSF_LINUX_PTHREAD_H__
2#define __VSF_LINUX_PTHREAD_H__
3
5#include "vsf.h"
6
7#if VSF_LINUX_CFG_RELATIVE_PATH == ENABLED && VSF_LINUX_USE_SIMPLE_TIME == ENABLED
8# include "./simple_libc/time.h"
9#else
10# include <time.h>
11#endif
12#if VSF_LINUX_CFG_RELATIVE_PATH == ENABLED
13# include "./sched.h"
14#else
15# include <sched.h>
16#endif
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22#if VSF_LINUX_CFG_WRAPPER == ENABLED
23#define pthread_atfork VSF_LINUX_WRAPPER(pthread_atfork)
24#define pthread_self VSF_LINUX_WRAPPER(pthread_self)
25#define pthread_equal VSF_LINUX_WRAPPER(pthread_equal)
26#define pthread_create VSF_LINUX_WRAPPER(pthread_create)
27#define pthread_join VSF_LINUX_WRAPPER(pthread_join)
28#define pthread_detach VSF_LINUX_WRAPPER(pthread_detach)
29#define pthread_exit VSF_LINUX_WRAPPER(pthread_exit)
30#define pthread_cancel VSF_LINUX_WRAPPER(pthread_cancel)
31#define pthread_kill VSF_LINUX_WRAPPER(pthread_kill)
32#define pthread_once VSF_LINUX_WRAPPER(pthread_once)
33#define pthread_testcancel VSF_LINUX_WRAPPER(pthread_testcancel)
34#define pthread_setcancelstate VSF_LINUX_WRAPPER(pthread_setcancelstate)
35#define pthread_setcanceltype VSF_LINUX_WRAPPER(pthread_setcanceltype)
36#define pthread_setschedparam VSF_LINUX_WRAPPER(pthread_setschedparam)
37#define pthread_getschedparam VSF_LINUX_WRAPPER(pthread_getschedparam)
38#define pthread_cleanup_push VSF_LINUX_WRAPPER(pthread_cleanup_push)
39#define pthread_cleanup_pop VSF_LINUX_WRAPPER(pthread_cleanup_pop)
40#define pthread_attr_init VSF_LINUX_WRAPPER(pthread_attr_init)
41#define pthread_attr_destroy VSF_LINUX_WRAPPER(pthread_attr_destroy)
42#define pthread_attr_setstack VSF_LINUX_WRAPPER(pthread_attr_setstack)
43#define pthread_attr_getstack VSF_LINUX_WRAPPER(pthread_attr_getstack)
44#define pthread_attr_setstackaddr VSF_LINUX_WRAPPER(pthread_attr_setstackaddr)
45#define pthread_attr_getstackaddr VSF_LINUX_WRAPPER(pthread_attr_getstackaddr)
46#define pthread_attr_setstacksize VSF_LINUX_WRAPPER(pthread_attr_setstacksize)
47#define pthread_attr_getstacksize VSF_LINUX_WRAPPER(pthread_attr_getstacksize)
48#define pthread_attr_setguardsize VSF_LINUX_WRAPPER(pthread_attr_setguardsize)
49#define pthread_attr_getguardsize VSF_LINUX_WRAPPER(pthread_attr_getguardsize)
50#define pthread_attr_setdetachstate VSF_LINUX_WRAPPER(pthread_attr_setdetachstate)
51#define pthread_attr_getdetachstate VSF_LINUX_WRAPPER(pthread_attr_getdetachstate)
52#define pthread_attr_setinheritsched VSF_LINUX_WRAPPER(pthread_attr_setinheritsched)
53#define pthread_attr_getinheritsched VSF_LINUX_WRAPPER(pthread_attr_getinheritsched)
54#define pthread_attr_setschedparam VSF_LINUX_WRAPPER(pthread_attr_setschedparam)
55#define pthread_attr_getschedparam VSF_LINUX_WRAPPER(pthread_attr_getschedparam)
56#define pthread_attr_setschedpolicy VSF_LINUX_WRAPPER(pthread_attr_setschedpolicy)
57#define pthread_attr_getschedpolicy VSF_LINUX_WRAPPER(pthread_attr_getschedpolicy)
58#define pthread_attr_setscope VSF_LINUX_WRAPPER(pthread_attr_setscope)
59#define pthread_attr_getscope VSF_LINUX_WRAPPER(pthread_attr_getscope)
60
61#define pthread_key_create VSF_LINUX_WRAPPER(pthread_key_create)
62#define pthread_key_delete VSF_LINUX_WRAPPER(pthread_key_delete)
63#define pthread_setspecific VSF_LINUX_WRAPPER(pthread_setspecific)
64#define pthread_getspecific VSF_LINUX_WRAPPER(pthread_getspecific)
65
66#define pthread_mutex_init VSF_LINUX_WRAPPER(pthread_mutex_init)
67#define pthread_mutex_destroy VSF_LINUX_WRAPPER(pthread_mutex_destroy)
68#define pthread_mutex_lock VSF_LINUX_WRAPPER(pthread_mutex_lock)
69#define pthread_mutex_timedlock VSF_LINUX_WRAPPER(pthread_mutex_timedlock)
70#define pthread_mutex_trylock VSF_LINUX_WRAPPER(pthread_mutex_trylock)
71#define pthread_mutex_unlock VSF_LINUX_WRAPPER(pthread_mutex_unlock)
72#define pthread_mutexattr_init VSF_LINUX_WRAPPER(pthread_mutexattr_init)
73#define pthread_mutexattr_destroy VSF_LINUX_WRAPPER(pthread_mutexattr_destroy)
74#define pthread_mutexattr_setpshared VSF_LINUX_WRAPPER(pthread_mutexattr_setpshared)
75#define pthread_mutexattr_getpshared VSF_LINUX_WRAPPER(pthread_mutexattr_getpshared)
76#define pthread_mutexattr_settype VSF_LINUX_WRAPPER(pthread_mutexattr_settype)
77#define pthread_mutexattr_gettype VSF_LINUX_WRAPPER(pthread_mutexattr_gettype)
78
79#define pthread_cond_init VSF_LINUX_WRAPPER(pthread_cond_init)
80#define pthread_cond_destroy VSF_LINUX_WRAPPER(pthread_cond_destroy)
81#define pthread_cond_signal VSF_LINUX_WRAPPER(pthread_cond_signal)
82#define pthread_cond_broadcast VSF_LINUX_WRAPPER(pthread_cond_broadcast)
83#define pthread_cond_wait VSF_LINUX_WRAPPER(pthread_cond_wait)
84#define pthread_cond_timedwait VSF_LINUX_WRAPPER(pthread_cond_timedwait)
85#define pthread_condattr_init VSF_LINUX_WRAPPER(pthread_condattr_init)
86#define pthread_condattr_destroy VSF_LINUX_WRAPPER(pthread_condattr_destroy)
87#define pthread_condattr_setpshared VSF_LINUX_WRAPPER(pthread_condattr_setpshared)
88#define pthread_condattr_getpshared VSF_LINUX_WRAPPER(pthread_condattr_getpshared)
89#define pthread_condattr_setclock VSF_LINUX_WRAPPER(pthread_condattr_setclock)
90#define pthread_condattr_getclock VSF_LINUX_WRAPPER(pthread_condattr_getclock)
91
92#define pthread_rwlock_init VSF_LINUX_WRAPPER(pthread_rwlock_init)
93#define pthread_rwlock_destroy VSF_LINUX_WRAPPER(pthread_rwlock_destroy)
94#define pthread_rwlock_rdlock VSF_LINUX_WRAPPER(pthread_rwlock_rdlock)
95#define pthread_rwlock_tryrdlock VSF_LINUX_WRAPPER(pthread_rwlock_tryrdlock)
96#define pthread_rwlock_timedrdlock VSF_LINUX_WRAPPER(pthread_rwlock_timedrdlock)
97#define pthread_rwlock_wrlock VSF_LINUX_WRAPPER(pthread_rwlock_wrlock)
98#define pthread_rwlock_trywrlock VSF_LINUX_WRAPPER(pthread_rwlock_trywrlock)
99#define pthread_rwlock_timedwrlock VSF_LINUX_WRAPPER(pthread_rwlock_timedwrlock)
100#define pthread_rwlock_unlock VSF_LINUX_WRAPPER(pthread_rwlock_unlock)
101
102#define pthread_barrier_init VSF_LINUX_WRAPPER(pthread_barrier_init)
103#define pthread_barrier_destroy VSF_LINUX_WRAPPER(pthread_barrier_destroy)
104#define pthread_barrier_wait VSF_LINUX_WRAPPER(pthread_barrier_wait)
105#define pthread_barrierattr_init VSF_LINUX_WRAPPER(pthread_barrierattr_init)
106#define pthread_barrierattr_destroy VSF_LINUX_WRAPPER(pthread_barrierattr_destroy)
107#define pthread_barrierattr_getpshared VSF_LINUX_WRAPPER(pthread_barrierattr_getpshared)
108#define pthread_barrierattr_setpshared VSF_LINUX_WRAPPER(pthread_barrierattr_setpshared)
109
110#define pthread_setname_np VSF_LINUX_WRAPPER(pthread_setname_np)
111#define pthread_getname_np VSF_LINUX_WRAPPER(pthread_getname_np)
112#endif
113
114// to use PTHREAD_MUTEX_INITIALIZER, __VSF_EDA_CLASS_INHERIT__ is needed or ooc is disabled
115#if __IS_COMPILER_IAR__
116#define PTHREAD_MUTEX_INITIALIZER { \
117 .use_as__vsf_mutex_t.use_as__vsf_sync_t.max_union.max_value = 1 | VSF_SYNC_AUTO_RST,\
118 .use_as__vsf_mutex_t.use_as__vsf_sync_t.cur_union.bits.cur = 1 | VSF_SYNC_HAS_OWNER,\
119 }
120#define PTHREAD_COND_INITIALIZER { \
121 .max_union.max_value = 1 | VSF_SYNC_AUTO_RST,\
122 }
123#else
124#define PTHREAD_MUTEX_INITIALIZER (pthread_mutex_t) { \
125 .use_as__vsf_mutex_t.use_as__vsf_sync_t.max_union.max_value = 1 | VSF_SYNC_AUTO_RST,\
126 .use_as__vsf_mutex_t.use_as__vsf_sync_t.cur_union.bits.cur = 1 | VSF_SYNC_HAS_OWNER,\
127 }
128#define PTHREAD_COND_INITIALIZER (pthread_cond_t) { \
129 .max_union.max_value = 1 | VSF_SYNC_AUTO_RST,\
130 }
131#endif
132
133
134typedef int pthread_key_t;
135
136enum {
137 // pshared
139#define PTHREAD_PROCESS_SHARED PTHREAD_PROCESS_SHARED
141#define PTHREAD_PROCESS_PRIVATE PTHREAD_PROCESS_PRIVATE
142
144#define PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_JOINABLE
146#define PTHREAD_CREATE_DETACHED PTHREAD_CREATE_DETACHED
147
148 // mutex
153
154 // cond
155};
156typedef struct {
157 int attr;
159typedef struct pthread_mutex_t {
160 implement(vsf_mutex_t)
161 int attr;
164
166typedef struct {
167 int attr;
170
171#define PTHREAD_RWLOCK_INITIALIZER { 0 }
172typedef struct pthread_rwlock_t {
182typedef struct {
183 int attr;
185
186typedef struct {
187 int attr;
189typedef struct {
192 unsigned threshold;
193 unsigned in;
194 unsigned out;
196#define PTHREAD_BARRIER_SERIAL_THREAD (-2)
197
198typedef int pthread_t;
199typedef struct pthread_once_t {
203#if __IS_COMPILER_IAR__
204#define PTHREAD_ONCE_INIT { \
205 .mutex.max_union.max_value = 1 | VSF_SYNC_AUTO_RST,\
206 .mutex.cur_union.cur_value = 1 | VSF_SYNC_HAS_OWNER,\
207 .is_inited = false, \
208 }
209#else
210#define PTHREAD_ONCE_INIT (pthread_once_t) { \
211 .mutex.use_as__vsf_mutex_t.use_as__vsf_sync_t.max_union.max_value = 1 | VSF_SYNC_AUTO_RST,\
212 .mutex.use_as__vsf_mutex_t.use_as__vsf_sync_t.cur_union.cur_value = 1 | VSF_SYNC_HAS_OWNER,\
213 .is_inited = false, \
214 }
215#endif
216typedef struct {
219 struct sched_param schedparam;
221 int scope;
222 size_t guardsize;
224 size_t stacksize;
226
227enum {
230};
231enum {
234};
235
236#ifndef PTHREAD_STACK_MIN
237# define PTHREAD_STACK_MIN 1024
238#endif
239
240#if VSF_LINUX_APPLET_USE_PTHREAD == ENABLED
243
248
261
274
284
302
323
331
335# ifndef __VSF_APPLET__
337# endif
338#endif
339
340#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_PTHREAD_LIB__))\
341 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_PTHREAD == ENABLED
342
343#ifndef VSF_LINUX_APPLET_PTHREAD_VPLT
344# if VSF_LINUX_USE_APPLET == ENABLED
345# define VSF_LINUX_APPLET_PTHREAD_VPLT \
346 ((vsf_linux_pthread_vplt_t *)(VSF_LINUX_APPLET_VPLT->pthread_vplt))
347# else
348# define VSF_LINUX_APPLET_PTHREAD_VPLT \
349 ((vsf_linux_pthread_vplt_t *)vsf_vplt((void *)0))
350# endif
351#endif
352
353#define VSF_LINUX_APPLET_PTHREAD_ENTRY(__NAME) \
354 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_PTHREAD_VPLT, __NAME)
355#define VSF_LINUX_APPLET_PTHREAD_IMP(...) \
356 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_PTHREAD_VPLT, __VA_ARGS__)
357
358VSF_LINUX_APPLET_PTHREAD_IMP(pthread_key_create, int, pthread_key_t *key, void (*destructor)(void*)) {
360 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_key_create)(key, destructor);
361}
362VSF_LINUX_APPLET_PTHREAD_IMP(pthread_key_delete, int, pthread_key_t key) {
364 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_key_delete)(key);
365}
366VSF_LINUX_APPLET_PTHREAD_IMP(pthread_setspecific, int, pthread_key_t key, const void *value) {
368 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_setspecific)(key, value);
369}
370VSF_LINUX_APPLET_PTHREAD_IMP(pthread_getspecific, void *, pthread_key_t key) {
372 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_getspecific)(key);
373}
374VSF_LINUX_APPLET_PTHREAD_IMP(pthread_mutex_init, int, pthread_mutex_t *mutex, const pthread_mutexattr_t *mattr) {
376 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_mutex_init)(mutex, mattr);
377}
378VSF_LINUX_APPLET_PTHREAD_IMP(pthread_mutex_destroy, int, pthread_mutex_t *mutex) {
380 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_mutex_destroy)(mutex);
381}
382VSF_LINUX_APPLET_PTHREAD_IMP(pthread_mutex_lock, int, pthread_mutex_t *mutex) {
384 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_mutex_lock)(mutex);
385}
386VSF_LINUX_APPLET_PTHREAD_IMP(pthread_mutex_timedlock, int, pthread_mutex_t *mutex, const struct timespec *abstime) {
388 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_mutex_timedlock)(mutex, abstime);
389}
390VSF_LINUX_APPLET_PTHREAD_IMP(pthread_mutex_trylock, int, pthread_mutex_t *mutex) {
392 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_mutex_trylock)(mutex);
393}
394VSF_LINUX_APPLET_PTHREAD_IMP(pthread_mutex_unlock, int, pthread_mutex_t *mutex) {
396 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_mutex_unlock)(mutex);
397}
398VSF_LINUX_APPLET_PTHREAD_IMP(pthread_mutexattr_init, int, pthread_mutexattr_t *mattr) {
400 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_mutexattr_init)(mattr);
401}
402VSF_LINUX_APPLET_PTHREAD_IMP(pthread_mutexattr_destroy, int, pthread_mutexattr_t *mattr) {
404 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_mutexattr_destroy)(mattr);
405}
406VSF_LINUX_APPLET_PTHREAD_IMP(pthread_mutexattr_setpshared, int, pthread_mutexattr_t *mattr, int pshared) {
408 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_mutexattr_setpshared)(mattr, pshared);
409}
410VSF_LINUX_APPLET_PTHREAD_IMP(pthread_mutexattr_getpshared, int, pthread_mutexattr_t *mattr, int *pshared) {
412 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_mutexattr_getpshared)(mattr, pshared);
413}
414VSF_LINUX_APPLET_PTHREAD_IMP(pthread_mutexattr_settype, int, pthread_mutexattr_t *mattr , int type) {
416 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_mutexattr_settype)(mattr, type);
417}
418VSF_LINUX_APPLET_PTHREAD_IMP(pthread_mutexattr_gettype, int, pthread_mutexattr_t *mattr , int *type) {
420 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_mutexattr_gettype)(mattr, type);
421}
422VSF_LINUX_APPLET_PTHREAD_IMP(pthread_cond_init, int, pthread_cond_t *cond, const pthread_condattr_t *cattr) {
424 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_cond_init)(cond, cattr);
425}
426VSF_LINUX_APPLET_PTHREAD_IMP(pthread_cond_destroy, int, pthread_cond_t *cond) {
428 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_cond_destroy)(cond);
429}
430VSF_LINUX_APPLET_PTHREAD_IMP(pthread_cond_signal, int, pthread_cond_t *cond) {
432 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_cond_signal)(cond);
433}
434VSF_LINUX_APPLET_PTHREAD_IMP(pthread_cond_broadcast, int, pthread_cond_t *cond) {
436 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_cond_broadcast)(cond);
437}
438VSF_LINUX_APPLET_PTHREAD_IMP(pthread_cond_wait, int, pthread_cond_t *cond, pthread_mutex_t *mutex) {
440 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_cond_wait)(cond, mutex);
441}
442VSF_LINUX_APPLET_PTHREAD_IMP(pthread_cond_timedwait, int, pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime) {
444 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_cond_timedwait)(cond, mutex, abstime);
445}
446VSF_LINUX_APPLET_PTHREAD_IMP(pthread_condattr_init, int, pthread_condattr_t *cattr) {
448 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_condattr_init)(cattr);
449}
450VSF_LINUX_APPLET_PTHREAD_IMP(pthread_condattr_destroy, int, pthread_condattr_t *cattr) {
452 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_condattr_destroy)(cattr);
453}
454VSF_LINUX_APPLET_PTHREAD_IMP(pthread_condattr_setpshared, int, pthread_condattr_t *cattr, int pshared) {
456 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_condattr_setpshared)(cattr, pshared);
457}
458VSF_LINUX_APPLET_PTHREAD_IMP(pthread_condattr_getpshared, int, pthread_condattr_t *cattr, int *pshared) {
460 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_condattr_getpshared)(cattr, pshared);
461}
462VSF_LINUX_APPLET_PTHREAD_IMP(pthread_condattr_getclock, int, const pthread_condattr_t *cattr, clockid_t *clockid) {
464 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_condattr_getclock)(cattr, clockid);
465}
466VSF_LINUX_APPLET_PTHREAD_IMP(pthread_condattr_setclock, int, pthread_condattr_t *cattr, clockid_t clockid) {
468 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_condattr_setclock)(cattr, clockid);
469}
470VSF_LINUX_APPLET_PTHREAD_IMP(pthread_rwlock_init, int, pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr) {
472 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_rwlock_init)(rwlock, attr);
473}
474VSF_LINUX_APPLET_PTHREAD_IMP(pthread_rwlock_destroy, int, pthread_rwlock_t *rwlock) {
476 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_rwlock_destroy)(rwlock);
477}
478VSF_LINUX_APPLET_PTHREAD_IMP(pthread_rwlock_rdlock, int, pthread_rwlock_t *rwlock) {
480 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_rwlock_rdlock)(rwlock);
481}
482VSF_LINUX_APPLET_PTHREAD_IMP(pthread_rwlock_tryrdlock, int, pthread_rwlock_t *rwlock) {
484 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_rwlock_tryrdlock)(rwlock);
485}
486VSF_LINUX_APPLET_PTHREAD_IMP(pthread_rwlock_timedrdlock, int, pthread_rwlock_t *rwlock, const struct timespec *abstime) {
488 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_rwlock_timedrdlock)(rwlock, abstime);
489}
490VSF_LINUX_APPLET_PTHREAD_IMP(pthread_rwlock_wrlock, int, pthread_rwlock_t *rwlock) {
492 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_rwlock_wrlock)(rwlock);
493}
494VSF_LINUX_APPLET_PTHREAD_IMP(pthread_rwlock_trywrlock, int, pthread_rwlock_t *rwlock) {
496 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_rwlock_trywrlock)(rwlock);
497}
498VSF_LINUX_APPLET_PTHREAD_IMP(pthread_rwlock_timedwrlock, int, pthread_rwlock_t *rwlock, const struct timespec *abstime) {
500 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_rwlock_timedwrlock)(rwlock, abstime);
501}
502VSF_LINUX_APPLET_PTHREAD_IMP(pthread_rwlock_unlock, int, pthread_rwlock_t *rwlock) {
504 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_rwlock_unlock)(rwlock);
505}
506VSF_LINUX_APPLET_PTHREAD_IMP(pthread_atfork, int, void (*prepare)(void), void (*parent)(void), void (*child)(void)) {
508 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_atfork)(prepare, parent, child);
509}
510VSF_LINUX_APPLET_PTHREAD_IMP(pthread_self, pthread_t, void) {
512 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_self)();
513}
514VSF_LINUX_APPLET_PTHREAD_IMP(pthread_equal, int, pthread_t t1, pthread_t t2) {
516 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_equal)(t1, t2);
517}
518VSF_LINUX_APPLET_PTHREAD_IMP(pthread_create, int, pthread_t *tidp, const pthread_attr_t *attr, void * (*start_rtn)(void *), void *arg) {
520 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_create)(tidp, attr, start_rtn, arg);
521}
522VSF_LINUX_APPLET_PTHREAD_IMP(pthread_join, int, pthread_t tid, void **retval) {
524 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_join)(tid, retval);
525}
526VSF_LINUX_APPLET_PTHREAD_IMP(pthread_detach, int, pthread_t thread) {
528 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_detach)(thread);
529}
530VSF_LINUX_APPLET_PTHREAD_IMP(pthread_exit, void, void *retval) {
532 VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_exit)(retval);
533}
534VSF_LINUX_APPLET_PTHREAD_IMP(pthread_cancel, int, pthread_t thread) {
536 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_cancel)(thread);
537}
538VSF_LINUX_APPLET_PTHREAD_IMP(pthread_kill, int, pthread_t thread, int sig) {
540 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_kill)(thread, sig);
541}
542VSF_LINUX_APPLET_PTHREAD_IMP(pthread_once, int, pthread_once_t *once_control, void (*init_routine)(void)) {
544 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_once)(once_control, init_routine);
545}
546VSF_LINUX_APPLET_PTHREAD_IMP(pthread_testcancel, void, void) {
548 VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_testcancel)();
549}
550VSF_LINUX_APPLET_PTHREAD_IMP(pthread_setcancelstate, int, int state, int *oldstate) {
552 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_setcancelstate)(state, oldstate);
553}
554VSF_LINUX_APPLET_PTHREAD_IMP(pthread_setcanceltype, int, int type, int *oldtype) {
556 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_setcanceltype)(type, oldtype);
557}
558VSF_LINUX_APPLET_PTHREAD_IMP(pthread_setschedparam, int, pthread_t thread, int policy, const struct sched_param *param) {
560 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_setschedparam)(thread, policy, param);
561}
562VSF_LINUX_APPLET_PTHREAD_IMP(pthread_getschedparam, int, pthread_t thread, int *policy, struct sched_param *param) {
564 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_getschedparam)(thread, policy, param);
565}
566VSF_LINUX_APPLET_PTHREAD_IMP(pthread_cleanup_push, void, void (*routine)(void *), void *arg) {
568 VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_cleanup_push)(routine, arg);
569}
570VSF_LINUX_APPLET_PTHREAD_IMP(pthread_cleanup_pop, void, int execute) {
572 VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_cleanup_pop)(execute);
573}
574VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_init, int, pthread_attr_t *attr) {
576 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_init)(attr);
577}
578VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_destroy, int, pthread_attr_t *attr) {
580 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_destroy)(attr);
581}
582VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_setstack, int, pthread_attr_t *attr, void *stackaddr, size_t stacksize) {
584 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_setstack)(attr, stackaddr, stacksize);
585}
586VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_getstack, int, const pthread_attr_t *attr, void **stackaddr, size_t *stacksize) {
588 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_getstack)(attr, stackaddr, stacksize);
589}
590VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_setstackaddr, int, pthread_attr_t *attr, void *stackaddr) {
592 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_setstackaddr)(attr, stackaddr);
593}
594VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_getstackaddr, int, const pthread_attr_t *attr, void **stackaddr) {
596 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_getstackaddr)(attr, stackaddr);
597}
598VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_setstacksize, int, pthread_attr_t *attr, size_t stacksize) {
600 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_setstacksize)(attr, stacksize);
601}
602VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_getstacksize, int, const pthread_attr_t *attr, size_t *stacksize) {
604 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_getstacksize)(attr, stacksize);
605}
606VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_setguardsize, int, pthread_attr_t *attr, size_t guardsize) {
608 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_setguardsize)(attr, guardsize);
609}
610VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_getguardsize, int, const pthread_attr_t *attr, size_t *guardsize) {
612 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_getguardsize)(attr, guardsize);
613}
614VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_setdetachstate, int, pthread_attr_t *attr, int detachstate) {
616 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_setdetachstate)(attr, detachstate);
617}
618VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_getdetachstate, int, const pthread_attr_t *attr, int *detachstate) {
620 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_getdetachstate)(attr, detachstate);
621}
622VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_setinheritsched, int, pthread_attr_t *attr, int inheritsched) {
624 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_setinheritsched)(attr, inheritsched);
625}
626VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_getinheritsched, int, const pthread_attr_t *attr, int *inheritsched) {
628 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_getinheritsched)(attr, inheritsched);
629}
630VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_setschedparam, int, pthread_attr_t *attr, const struct sched_param *param) {
632 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_setschedparam)(attr, param);
633}
634VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_getschedparam, int, pthread_attr_t *attr, struct sched_param *param) {
636 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_getschedparam)(attr, param);
637}
638VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_setschedpolicy, int, pthread_attr_t *attr, int policy) {
640 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_setschedpolicy)(attr, policy);
641}
642VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_getschedpolicy, int, const pthread_attr_t *attr, int *policy) {
644 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_getschedpolicy)(attr, policy);
645}
646VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_setscope, int, pthread_attr_t *attr, int contentionscope) {
648 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_setscope)(attr, contentionscope);
649}
650VSF_LINUX_APPLET_PTHREAD_IMP(pthread_attr_getscope, int, const pthread_attr_t *attr, int *contentionscope) {
652 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_attr_getscope)(attr, contentionscope);
653}
654VSF_LINUX_APPLET_PTHREAD_IMP(pthread_barrier_init, int, pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count) {
656 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_barrier_init)(barrier, attr, count);
657}
658VSF_LINUX_APPLET_PTHREAD_IMP(pthread_barrier_destroy, int, pthread_barrier_t *barrier) {
660 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_barrier_destroy)(barrier);
661}
662VSF_LINUX_APPLET_PTHREAD_IMP(pthread_barrier_wait, int, pthread_barrier_t *barrier) {
664 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_barrier_wait)(barrier);
665}
666VSF_LINUX_APPLET_PTHREAD_IMP(pthread_barrierattr_init, int, pthread_barrierattr_t *attr) {
668 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_barrierattr_init)(attr);
669}
670VSF_LINUX_APPLET_PTHREAD_IMP(pthread_barrierattr_destroy, int, pthread_barrierattr_t *attr) {
672 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_barrierattr_destroy)(attr);
673}
674VSF_LINUX_APPLET_PTHREAD_IMP(pthread_barrierattr_getpshared, int, const pthread_barrierattr_t *attr, int *pshared) {
676 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_barrierattr_getpshared)(attr, pshared);
677}
678VSF_LINUX_APPLET_PTHREAD_IMP(pthread_barrierattr_setpshared, int, pthread_barrierattr_t *attr, int pshared) {
680 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_barrierattr_setpshared)(attr, pshared);
681}
682VSF_LINUX_APPLET_PTHREAD_IMP(pthread_setname_np, int, pthread_t thread, const char *name) {
684 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_setname_np)(thread, name);
685}
686VSF_LINUX_APPLET_PTHREAD_IMP(pthread_getname_np, int, pthread_t thread, char *name, size_t size) {
688 return VSF_LINUX_APPLET_PTHREAD_ENTRY(pthread_getname_np)(thread, name, size);
689}
690
691#else // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_PTHREAD
692
693#if VSF_LINUX_CFG_TLS_NUM > 0
694int pthread_key_create(pthread_key_t *key, void (*destructor)(void*));
696int pthread_setspecific(pthread_key_t key, const void *value);
698#endif
699
703int pthread_mutex_timedlock(pthread_mutex_t *mutex, const struct timespec *abstime);
709int pthread_mutexattr_getpshared(pthread_mutexattr_t *mattr, int *pshared);
712
719 const struct timespec *abstime);
722int pthread_condattr_setpshared(pthread_condattr_t *cattr, int pshared);
723int pthread_condattr_getpshared(pthread_condattr_t *cattr, int *pshared);
724int pthread_condattr_getclock(const pthread_condattr_t *cattr, clockid_t *clockid);
726
731int pthread_rwlock_timedrdlock(pthread_rwlock_t *rwlock, const struct timespec *abstime);
734int pthread_rwlock_timedwrlock(pthread_rwlock_t *rwlock, const struct timespec *abstime);
736
737int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void));
740int pthread_create(pthread_t *tidp, const pthread_attr_t *attr, void * (*start_rtn)(void *), void *arg);
741int pthread_join(pthread_t tid, void **retval);
742int pthread_detach(pthread_t thread);
743void pthread_exit(void *retval);
744int pthread_cancel(pthread_t thread);
745int pthread_kill(pthread_t thread, int sig);
746int pthread_once(pthread_once_t *once_control, void (*init_routine)(void));
747void pthread_testcancel(void);
748int pthread_setcancelstate(int state, int *oldstate);
749int pthread_setcanceltype(int type, int *oldtype);
750int pthread_setschedparam(pthread_t thread, int policy, const struct sched_param *param);
751int pthread_getschedparam(pthread_t thread, int *policy, struct sched_param *param);
752void pthread_cleanup_push(void (*routine)(void *), void *arg);
753void pthread_cleanup_pop(int execute);
754
757int pthread_attr_setstack(pthread_attr_t *attr, void *stackaddr, size_t stacksize);
758int pthread_attr_getstack(const pthread_attr_t *attr, void **stackaddr, size_t *stacksize);
759int pthread_attr_setstackaddr(pthread_attr_t *attr, void *stackaddr);
760int pthread_attr_getstackaddr(const pthread_attr_t *attr, void **stackaddr);
761int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);
762int pthread_attr_getstacksize(const pthread_attr_t *attr, size_t *stacksize);
763int pthread_attr_setguardsize(pthread_attr_t *attr, size_t guardsize);
764int pthread_attr_getguardsize(const pthread_attr_t *attr, size_t *guardsize);
765int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
766int pthread_attr_getdetachstate(const pthread_attr_t *attr, int *detachstate);
767int pthread_attr_setinheritsched(pthread_attr_t *attr, int inheritsched);
768int pthread_attr_getinheritsched(const pthread_attr_t *attr, int *inheritsched);
772int pthread_attr_getschedpolicy(const pthread_attr_t *attr, int *policy);
773int pthread_attr_setscope(pthread_attr_t *attr, int contentionscope);
774int pthread_attr_getscope(const pthread_attr_t *attr, int *contentionscope);
775
776int pthread_barrier_init(pthread_barrier_t *barrier, const pthread_barrierattr_t *attr, unsigned int count);
781int pthread_barrierattr_getpshared(const pthread_barrierattr_t *battr, int *pshared);
783
784int pthread_setname_np(pthread_t thread, const char *name);
785int pthread_getname_np(pthread_t thread, char *name, size_t size);
786
787#endif // __VSF_APPLET__ && VSF_LINUX_APPLET_USE_PTHREAD
788
789#ifdef __cplusplus
790}
791#endif
792
793#endif
Definition vsf_eda.h:895
Definition vsf_eda.h:867
clockid_t
Definition types.h:146
#define pthread_condattr_destroy
Definition pthread.h:86
#define pthread_join
Definition pthread.h:27
#define pthread_attr_setstack
Definition pthread.h:42
#define PTHREAD_PROCESS_SHARED
Definition pthread.h:139
#define pthread_mutexattr_getpshared
Definition pthread.h:75
#define pthread_condattr_setpshared
Definition pthread.h:87
#define pthread_rwlock_rdlock
Definition pthread.h:94
#define pthread_barrier_init
Definition pthread.h:102
#define pthread_rwlock_init
Definition pthread.h:92
#define pthread_atfork
Definition pthread.h:23
#define pthread_mutexattr_destroy
Definition pthread.h:73
#define pthread_getschedparam
Definition pthread.h:37
#define pthread_attr_getguardsize
Definition pthread.h:49
#define pthread_attr_getstack
Definition pthread.h:43
#define pthread_kill
Definition pthread.h:31
#define pthread_rwlock_wrlock
Definition pthread.h:97
#define PTHREAD_CREATE_DETACHED
Definition pthread.h:146
int pthread_key_t
Definition pthread.h:134
#define pthread_cond_broadcast
Definition pthread.h:82
int pthread_t
Definition pthread.h:198
#define pthread_attr_getstackaddr
Definition pthread.h:45
#define pthread_create
Definition pthread.h:26
#define pthread_condattr_getpshared
Definition pthread.h:88
#define PTHREAD_PROCESS_PRIVATE
Definition pthread.h:141
#define pthread_mutex_trylock
Definition pthread.h:70
#define pthread_attr_setinheritsched
Definition pthread.h:52
#define pthread_condattr_getclock
Definition pthread.h:90
#define pthread_rwlock_timedwrlock
Definition pthread.h:99
#define pthread_mutexattr_gettype
Definition pthread.h:77
#define pthread_attr_init
Definition pthread.h:40
#define pthread_setname_np
Definition pthread.h:110
#define pthread_attr_setscope
Definition pthread.h:58
#define pthread_mutex_lock
Definition pthread.h:68
#define pthread_mutexattr_setpshared
Definition pthread.h:74
__VSF_VPLT_DECORATOR__ vsf_linux_pthread_vplt_t vsf_linux_pthread_vplt
Definition vsf_linux_glibc_pthread.c:1157
#define pthread_rwlock_trywrlock
Definition pthread.h:98
#define pthread_getspecific
Definition pthread.h:64
#define pthread_barrier_destroy
Definition pthread.h:103
#define pthread_attr_destroy
Definition pthread.h:41
#define pthread_setcancelstate
Definition pthread.h:34
#define pthread_cleanup_push
Definition pthread.h:38
#define pthread_attr_setschedpolicy
Definition pthread.h:56
@ PTHREAD_MUTEX_RECURSIVE
Definition pthread.h:150
@ PTHREAD_MUTEX_ERRORCHECK
Definition pthread.h:149
@ PTHREAD_MUTEX_NORMAL
Definition pthread.h:151
@ PTHREAD_MUTEX_DEFAULT
Definition pthread.h:152
#define pthread_mutex_timedlock
Definition pthread.h:69
#define pthread_cleanup_pop
Definition pthread.h:39
#define pthread_setschedparam
Definition pthread.h:36
#define pthread_attr_getdetachstate
Definition pthread.h:51
#define pthread_attr_getstacksize
Definition pthread.h:47
#define pthread_mutexattr_settype
Definition pthread.h:76
#define pthread_barrierattr_destroy
Definition pthread.h:106
#define pthread_getname_np
Definition pthread.h:111
#define pthread_attr_setstackaddr
Definition pthread.h:44
#define pthread_detach
Definition pthread.h:28
@ PTHREAD_CANCEL_ENABLE
Definition pthread.h:228
@ PTHREAD_CANCEL_DISABLE
Definition pthread.h:229
#define pthread_condattr_setclock
Definition pthread.h:89
#define pthread_mutex_unlock
Definition pthread.h:71
#define pthread_barrierattr_getpshared
Definition pthread.h:107
#define pthread_barrierattr_init
Definition pthread.h:105
#define pthread_attr_getschedparam
Definition pthread.h:55
#define pthread_attr_setstacksize
Definition pthread.h:46
#define pthread_barrierattr_setpshared
Definition pthread.h:108
#define pthread_mutex_destroy
Definition pthread.h:67
#define pthread_setcanceltype
Definition pthread.h:35
#define pthread_rwlock_tryrdlock
Definition pthread.h:95
#define pthread_self
Definition pthread.h:24
#define pthread_cond_destroy
Definition pthread.h:80
#define pthread_rwlock_unlock
Definition pthread.h:100
#define pthread_cond_signal
Definition pthread.h:81
#define pthread_once
Definition pthread.h:32
#define pthread_key_create
Definition pthread.h:61
#define pthread_attr_getschedpolicy
Definition pthread.h:57
#define pthread_equal
Definition pthread.h:25
#define pthread_mutex_init
Definition pthread.h:66
#define pthread_key_delete
Definition pthread.h:62
#define pthread_attr_getinheritsched
Definition pthread.h:53
#define pthread_setspecific
Definition pthread.h:63
#define pthread_attr_setdetachstate
Definition pthread.h:50
#define pthread_cond_init
Definition pthread.h:79
#define pthread_rwlock_destroy
Definition pthread.h:93
#define pthread_testcancel
Definition pthread.h:33
#define pthread_cond_timedwait
Definition pthread.h:84
#define pthread_cond_wait
Definition pthread.h:83
#define pthread_condattr_init
Definition pthread.h:85
#define pthread_exit
Definition pthread.h:29
#define pthread_attr_setguardsize
Definition pthread.h:48
#define pthread_attr_getscope
Definition pthread.h:59
#define pthread_rwlock_timedrdlock
Definition pthread.h:96
#define pthread_attr_setschedparam
Definition pthread.h:54
#define pthread_cancel
Definition pthread.h:30
#define pthread_mutexattr_init
Definition pthread.h:72
#define PTHREAD_CREATE_JOINABLE
Definition pthread.h:144
@ PTHREAD_CANCEL_DEFERRED
Definition pthread.h:232
@ PTHREAD_CANCEL_ASYNCHRONOUS
Definition pthread.h:233
#define pthread_barrier_wait
Definition pthread.h:104
unsigned short uint16_t
Definition stdint.h:7
Definition mutex.h:10
Definition pthread.h:216
void * stackaddr
Definition pthread.h:223
size_t stacksize
Definition pthread.h:224
size_t guardsize
Definition pthread.h:222
int scope
Definition pthread.h:221
int schedpolicy
Definition pthread.h:218
int inheritsched
Definition pthread.h:220
int detachstate
Definition pthread.h:217
Definition pthread.h:189
pthread_mutex_t mutex
Definition pthread.h:190
unsigned threshold
Definition pthread.h:192
pthread_cond_t cond
Definition pthread.h:191
unsigned in
Definition pthread.h:193
unsigned out
Definition pthread.h:194
Definition pthread.h:186
int attr
Definition pthread.h:187
Definition pthread.h:166
int attr
Definition pthread.h:167
clockid_t clockid
Definition pthread.h:168
Definition pthread.h:159
int recursive_cnt
Definition pthread.h:162
vsf_mutex_t int attr
Definition pthread.h:161
Definition pthread.h:156
int attr
Definition pthread.h:157
Definition pthread.h:199
bool is_inited
Definition pthread.h:201
pthread_mutex_t mutex
Definition pthread.h:200
Definition pthread.h:172
vsf_sync_t wrsync
Definition pthread.h:180
uint16_t wrpend
Definition pthread.h:176
vsf_dlist_t rdlist
Definition pthread.h:177
vsf_dlist_t wrlist
Definition pthread.h:178
uint16_t rdref
Definition pthread.h:173
uint16_t rdpend
Definition pthread.h:175
uint16_t wrref
Definition pthread.h:174
vsf_sync_t rdsync
Definition pthread.h:179
Definition pthread.h:182
int attr
Definition pthread.h:183
Definition sched.h:33
Definition time.h:67
Definition vsf_list.h:883
Definition pthread.h:241
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_getguardsize)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_getstackaddr)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_cond_timedwait)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_cleanup_push)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_barrier_destroy)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_rwlock_wrlock)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_detach)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_destroy)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_setscope)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_mutex_trylock)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_mutex_lock)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_condattr_getclock)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_cond_broadcast)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_mutex_timedlock)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_rwlock_tryrdlock)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_condattr_destroy)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_barrier_wait)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_init)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_rwlock_rdlock)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_mutexattr_init)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_condattr_getpshared)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_rwlock_init)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_key_delete)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_setspecific)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_getschedparam)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_setschedpolicy)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_create)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_mutexattr_setpshared)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_rwlock_trywrlock)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_rwlock_unlock)
vsf_vplt_info_t info
Definition pthread.h:242
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_setdetachstate)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_getschedparam)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_getname_np)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_barrierattr_setpshared)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_mutexattr_gettype)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_once)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_getspecific)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_getstack)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_mutexattr_getpshared)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_atfork)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_getdetachstate)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_exit)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_setguardsize)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_setstackaddr)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_cond_wait)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_cond_destroy)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_getscope)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_rwlock_timedwrlock)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_join)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_setcanceltype)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_mutexattr_destroy)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_cond_init)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_equal)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_getinheritsched)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_getschedpolicy)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_kill)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_setschedparam)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_mutexattr_settype)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_testcancel)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_condattr_init)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_mutex_init)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_barrierattr_destroy)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_mutex_destroy)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_self)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_getstacksize)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_setschedparam)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_rwlock_destroy)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_setname_np)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_mutex_unlock)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_setstack)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_cleanup_pop)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_cancel)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_condattr_setclock)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_cond_signal)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_setcancelstate)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_condattr_setpshared)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_key_create)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_barrier_init)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_rwlock_timedrdlock)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_barrierattr_getpshared)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_setinheritsched)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_barrierattr_init)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pthread_attr_setstacksize)
Definition vsf_cfg.h:95
vk_av_control_value_t value
Definition vsf_audio.h:171
vk_av_control_type_t type
Definition vsf_audio.h:170
#define __VSF_VPLT_DECORATOR__
Definition vsf_cfg.h:93
#define VSF_APPLET_VPLT_ENTRY_FUNC_TRACE()
Definition vsf_cfg.h:165
uint32_t size
Definition vsf_memfs.h:50
uint8_t state
Definition vsf_msg_tree.h:247
int sig
Definition vsf_thread.h:421
Generated from commit: vsfteam/vsf@e0b5993