Newer
Older
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
</pre>
<p>
<b>Description:</b>
The <code>pthread_getschedparam()</code> functions will get the
scheduling policy and parameters of threads.
For <code>SCHED_FIFO</code> and <code>SCHED_RR</code>, the only
required member of the <code>sched_param</code> structure is the
priority <code>sched_priority</code>.
</p>
<p>
The <code>pthread_getschedparam()</code> function will retrieve the
scheduling policy and scheduling parameters for the thread whose thread
ID is given by <code>thread</code> and will store those values in
<code>policy</code> and <code>param</code>, respectively.
The priority value returned from <code>pthread_getschedparam()</code>
will be the value specified by the most recent <code>pthread_setschedparam()</code>,
<code>pthread_setschedprio()</code>, or <code>pthread_create()</code> call
affecting the target thread.
It will not reflect any temporary adjustments to its priority (such as might
result of any priority inheritance, for example).
</p>
<p>
The policy parameter may have the value <code>SCHED_FIFO</code> or <code>SCHED_RR</code>
(<code>SCHED_OTHER</code> and <code>SCHED_SPORADIC</code>, in particular, are not supported).
The <code>SCHED_FIFO</code> and <code>SCHED_RR<code> policies will have a single
scheduling parameter, <code>sched_priority</code>.
</p>
<p>
<b>Input Parameters:</b>
</p>
<ul>
<li>
<code>thread</code>.
The ID of thread whose scheduling parameters will be queried.
</li>
<li>
<code>policy</code>.
The location to store the thread's scheduling policy.
</li>
<li>
<code>param</code>.
The location to store the thread's priority.
</li>
</ul>
<p>
<b>Returned Values:</b>
0 (<code>OK</code>) if successful.
Otherwise, the error code <code>ESRCH</code> if the value specified by
<code>thread</code> does not refer to an existing thread.
</p>
<p>
<b>Assumptions/Limitations:</b>
</p>
<p>
<b>POSIX Compatibility:</b>
Comparable to the POSIX interface of the same name.
</p>
<H3><a name="pthreadsetschedparam">2.9.21 pthread_setschedparam</a></H3>
#include <pthread.h>
int pthread_setschedparam(pthread_t thread, int policy,
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
const struct sched_param *param);
</pre>
<p>
<b>Description:</b>
The <code>pthread_setschedparam()</code> functions will set the scheduling policy
and parameters of threads.
For <code>SCHED_FIFO</code> and <code>SCHED_RR</code>, the only required member
of the <code>sched_param</code> structure is the priority <code>sched_priority</code>.
</p>
</p>
The <code>pthread_setschedparam()</code> function will set the scheduling policy
and associated scheduling parameters for the thread whose thread ID is given by
<code>thread</code> to the policy and associated parameters provided in
<code>policy</code> and <code>param</code>, respectively.
</p>
<p>
The policy parameter may have the value <code>SCHED_FIFO</code> or <code>SCHED_RR</code>.
(<code>SCHED_OTHER</code> and <code>SCHED_SPORADIC</code>, in particular, are not supported).
The <code>SCHED_FIFO</code> and <code>SCHED_RR</code> policies will have a single
scheduling parameter, <code>sched_priority</code>.
</p>
<p>
If the <code>pthread_setschedparam()</code> function fails, the scheduling
parameters will not be changed for the target thread.
</p>
<p>
<b>Input Parameters:</b>
</p>
<ul>
<li>
<code>thread</code>.
The ID of thread whose scheduling parameters will be modified.
</li>
<li>
<code>policy</code>.
The new scheduling policy of the thread.
Either <code>SCHED_FIFO</code> or <code>SCHED_RR<code>.
<code>SCHED_OTHER<code> and <code>SCHED_SPORADIC<code> are not supported.
</li>
<li>
<code>param</code>.
The location to store the thread's priority.
</li>
</ul>
<p>
<b>Returned Values:</b>
</p>
<p>
If successful, the <I>pthread_setschedparam()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
</p>
<ul>
<li>
<code>EINVAL</code>.
The value specified by <code>policy</code> or one of the scheduling parameters
associated with the scheduling policy <code>policy</code> is invalid.
</li>
<li>
<code>ENOTSUP</code>.
An attempt was made to set the policy or scheduling parameters to an unsupported
value (<code>SCHED_OTHER</code> and <code>SCHED_SPORADIC</code> in particular are
not supported)
</li>
<li>
<code>EPERM</code>.
The caller does not have the appropriate permission to set either the scheduling
parameters or the scheduling policy of the specified thread.
Or, the implementation does not allow the application to modify one of the
parameters to the value specified.
</li>
<li>
<code>ESRCH</code>.
The value specified by thread does not refer to a existing thread.
</li>
</ul>
<p>
<b>Assumptions/Limitations:</b>
</p>
<p>
<b>POSIX Compatibility:</b>
Comparable to the POSIX interface of the same name.
</p>
<H3><a name="pthreadkeycreate">2.9.22 pthread_key_create</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_key_create( pthread_key_t *key, void (*destructor)(void*) )
This function creates a thread-specific data key visible
to all threads in the system. Although the same key value
may be used by different threads, the values bound to
the key by <I>pthread_setspecific()</I> are maintained on a
per-thread basis and persist for the life of the calling
thread.
Upon key creation, the value <I>NULL</I> will be associated with
the the new key in all active threads. Upon thread
creation, the value <I>NULL</I> will be associated with all
defined keys in the new thread.
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><I>key</I> is a pointer to the key to create.
<li><I>destructor</I> is an optional destructor() function that may
be associated with each key that is invoked when a
thread exits. However, this argument is ignored in
the current implementation.
If successful, the <I>pthread_key_create()</I> function will
store the newly created key value at *<I>key</I> and return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><I>EAGAIN</I>. The system lacked sufficient resources
to create another thread-specific data key, or the
system-imposed limit on the total number of keys
per task {<I>PTHREAD_KEYS_MAX</I>} has been exceeded
<li><I>ENONMEM</I> Insufficient memory exists to create the key.
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<ul>
<li>The present implementation ignores the destructor argument.
</ul>
<H3><a name="pthreadsetspecific">2.9.23 pthread_setspecific</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_setspecific( pthread_key_t key, void *value )
The <I>pthread_setspecific()</I> function associates a thread-
specific value with a key obtained via a previous call
to <I>pthread_key_create()</I>. Different threads may bind
different values to the same key. These values are
typically pointers to blocks of dynamically allocated
memory that have been reserved for use by the calling
thread.
The effect of calling <I>pthread_setspecific()</I> with a key value
not obtained from <I>pthread_key_create()</I> or after a key has been
deleted with <I>pthread_key_delete()</I> is undefined.
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><I>key</I>. The data key to set the binding for.
<li><I>value</I>. The value to bind to the key.
</ul>
<p>
<b>Returned Values:</b>
<p>
If successful, <I>pthread_setspecific()</I> will return zero (<I>OK</I>).
Otherwise, an error number will be returned:
<p>
<ul>
<li><I>ENOMEM</I>. Insufficient memory exists to associate the value
<li><I>EINVAL</I>. The key value is invalid.
</ul>
<p>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<ul>
<li>pthread_setspecific() may be called from a thread-specific data
<H3><a name="pthreadgetspecific">2.9.24 pthread_getspecific</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
void *pthread_getspecific( pthread_key_t key )
The <I>pthread_getspecific()</I> function returns the value
currently bound to the specified key on behalf of the
calling thread.
The effect of calling <I>pthread_getspecific()</I> with a key value
not obtained from <I>pthread_key_create()</I> or after a key has been
deleted with <I>pthread_key_delete()</I> is undefined.
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><I>key</I>. The data key to get the binding for.
</ul>
<p>
<b>Returned Values:</b>
<p>
The function <I>pthread_getspecific()</I> returns the thread-
specific data associated with the given key. If no
thread specific data is associated with the key, then
the value <I>NULL</I> is returned.
<p>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<ul>
<li>pthread_getspecific() may be called from a thread-specific data
<H3><a name="pthreadkeydelete">2.9.25 pthread_key_delete</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_key_delete( pthread_key_t key )
This POSIX function should delete a thread-specific data
key previously returned by <I>pthread_key_create()</I>. However,
this function does nothing in the present implementation.
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><I>key</I>. The key to delete
</ul>
<p>
<b>Returned Values:</b>
<p>
<ul>
<li>Always returns <I>EINVAL</I>.
</ul>
<p>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadmutexattrinit">2.9.26 pthread_mutexattr_init</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_mutexattr_init(pthread_mutexattr_t *attr);
<p>
<b>Description:</b>
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><code>To be provided</code>.</li>
</ul>
<p>
<b>Returned Values:</b>
<p>
If successful, the <I>pthread_mutexattr_init()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><code>To be provided</code>. </li>
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadmutexattrdestroy">2.9.27 pthread_mutexattr_destroy</a></H3>
<p>
<b>Function Protoype:</b>
<p>
#include <pthread.h>
int pthread_mutexattr_destroy(pthread_mutexattr_t *attr);
<p>
<b>Description:</b>
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><code>To be provided</code>.</li>
</ul>
<p>
<b>Returned Values:</b>
<p>
If successful, the <I>pthread_mutexattr_destroy()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><code>To be provided</code>. </li>
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadmutexattrgetpshared">2.9.28 pthread_mutexattr_getpshared</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_mutexattr_getpshared(pthread_mutexattr_t *attr,
int *pshared);
<p>
<b>Description:</b>
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><code>To be provided</code>.</li>
</ul>
<p>
<b>Returned Values:</b>
<p>
If successful, the <I>pthread_mutexattr_getpshared()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><code>To be provided</code>. </li>
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadmutexattrsetpshared">2.9.29 pthread_mutexattr_setpshared</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_mutexattr_setpshared(pthread_mutexattr_t *attr,
int pshared);
<p>
<b>Description:</b>
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><code>To be provided</code>.</li>
</ul>
<p>
<b>Returned Values:</b>
<p>
If successful, the <I>pthread_mutexattr_setpshared()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><code>To be provided</code>. </li>
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadmutexinit">2.9.30 pthread_mutex_init</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_mutex_init(pthread_mutex_t *mutex,
pthread_mutexattr_t *attr);
<p>
<b>Description:</b>
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><code>To be provided</code>.</li>
</ul>
<p>
<b>Returned Values:</b>
<p>
If successful, the <I>pthread_mutex_init()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><code>To be provided</code>. </li>
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadmutexdestrory">2.9.31 pthread_mutex_destroy</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_mutex_destroy(pthread_mutex_t *mutex);
<p>
<b>Description:</b>
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><code>To be provided</code>.</li>
</ul>
<p>
<b>Returned Values:</b>
<p>
If successful, the <I>pthread_mutex_destroy()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><code>To be provided</code>. </li>
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadmutexlock">2.9.32 pthread_mutex_lock</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_mutex_lock(pthread_mutex_t *mutex);
<p>
<b>Description:</b>
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><code>To be provided</code>.</li>
</ul>
<p>
<b>Returned Values:</b>
<p>
If successful, the <I>pthread_mutex_lock()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><code>To be provided</code>. </li>
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadmutextrylock">2.9.33 pthread_mutex_trylock</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_mutex_trylock(pthread_mutex_t *mutex);
<p>
<b>Description:</b>
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><code>To be provided</code>.</li>
</ul>
<p>
<b>Returned Values:</b>
<p>
If successful, the <I>pthread_mutex_trylock()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><code>To be provided</code>. </li>
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadmutexunlock">2.9.34 pthread_mutex_unlock</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_mutex_unlock(pthread_mutex_t *mutex);
<p>
<b>Description:</b>
<p>
<b>Input Parameters:</b>
<p>
<ul>
If successful, the <I>pthread_mutex_unlock()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><code>To be provided</code>. </li>
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadconaddrinit">2.9.35 pthread_condattr_init</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_condattr_init(pthread_condattr_t *attr);
<p>
<b>Description:</b>
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><code>To be provided</code>.</li>
</ul>
<p>
<b>Returned Values:</b>
<p>
If successful, the <I>pthread_condattr_init()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><code>To be provided</code>. </li>
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadocndattrdestroy">2.9.36 pthread_condattr_destroy</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_condattr_destroy(pthread_condattr_t *attr);
<p>
<b>Description:</b>
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><code>To be provided</code>.</li>
</ul>
<p>
<b>Returned Values:</b>
<p>
If successful, the <I>pthread_condattr_destroy()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><code>To be provided</code>. </li>
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadcondinit">2.9.37 pthread_cond_init</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *attr);
<p>
<b>Description:</b>
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><code>To be provided</code>.</li>
</ul>
<p>
<b>Returned Values:</b>
<p>
If successful, the <I>pthread_cond_init()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><code>To be provided</code>. </li>
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadconddestroy">2.9.38 pthread_cond_destroy</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_cond_destroy(pthread_cond_t *cond);
<p>
<b>Description:</b>
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><code>To be provided</code>.</li>
</ul>
<p>
<b>Returned Values:</b>
<p>
If successful, the <I>pthread_cond_destroy()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><code>To be provided</code>. </li>
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadcondbroadcast">2.9.39 pthread_cond_broadcast</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_cond_broadcast(pthread_cond_t *cond);
<p>
<b>Description:</b>
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><code>To be provided</code>.</li>
</ul>
<p>
<b>Returned Values:</b>
<p>
If successful, the <I>pthread_cond_broadcast()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><code>To be provided</code>. </li>
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadcondsignal">2.9.40 pthread_cond_signal</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_cond_signal(pthread_cond_t *dond);
<p>
<b>Description:</b>
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><code>To be provided</code>.</li>
</ul>
<p>
<b>Returned Values:</b>
<p>
If successful, the <I>pthread_cond_signal()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><code>To be provided</code>. </li>
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadcondwait">2.9.41 pthread_cond_wait</a></H3>
<p>
<b>Function Prototype:</b>
<p>
#include <pthread.h>
int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);
<p>
<b>Description:</b>
<p>
<b>Input Parameters:</b>
<p>
<ul>
<li><code>To be provided</code>.</li>
</ul>
<p>
If successful, the <I>pthread_cond_wait()</I> function will return
zero (<I>OK</I>). Otherwise, an error number will be
returned to indicate the error:
<p>
<ul>
<li><code>To be provided</code>. </li>
</ul>
<b>Assumptions/Limitations:</b>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX
<H3><a name="pthreadcondtimedwait">2.9.42 pthread_cond_timedwait</a></H3>
<p>
<b>Function Prototype:</b>
</p>
<pre>
#include <pthread.h>
int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex,
const struct timespec *abstime);
</pre>
<p>
<b>Description:</b>
</p>
<p>
<b>Input Parameters:</b>
</p>
<p>
<ul>
</ul>
<p>
<b>Returned Values:</b>
</p>
<p>
If successful, the <code>pthread_cond_timedwait()</code> function will return
zero (<code>OK</code>). Otherwise, an error number will be
returned to indicate the error:
</p>
<ul>
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
</ul>
<p>
<b>Assumptions/Limitations:</b>
</p>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX interface of the same name.
</p>
<h3><a name="pthreadbarrierattrinit">2.9.43 pthread_barrierattr_init</a></h3>
<p>
<b>Function Prototype:</b>
</p>
<pre>
#include <pthread.h>
int pthread_barrierattr_init(FAR pthread_barrierattr_t *attr);
</pre>
<p>
<b>Description:</b>
The <code>pthread_barrierattr_init()</code> function will initialize a barrier
attribute object <code>attr</code> with the default value for all of the attributes
defined by the implementation.
</p>
<p>
<b>Input Parameters:</b>
</p>
<ul>
<li>
<code>attr</code>. Barrier attributes to be initialized.
</li>
</ul>
<p>
<b>Returned Values:</b>
0 (<code>OK</code>) on success or <code>EINVAL</code> if <code>attr</code> is invalid.
</p>
<p>
<b>Assumptions/Limitations:</b>
</p>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX interface of the same name.
</p>
<h3><a name="pthreadbarrierattrdestroy">2.9.44 pthread_barrierattr_destroy</a></h3>
<p>
<b>Function Prototype:</b>
</p>
<pre>
#include <pthread.h>
int pthread_barrierattr_destroy(FAR pthread_barrierattr_t *attr);
</pre>
<p>
<b>Description:</b>
The <code>pthread_barrierattr_destroy()</code> function will destroy a barrier attributes object.
A destroyed attributes object can be reinitialized using <code>pthread_barrierattr_init()</code>;
the results of otherwise referencing the object after it has been destroyed are undefined.
</p>
<p>
<b>Input Parameters:</b>
</p>
<ul>
<li>
<code>attr</code>. Barrier attributes to be destroyed.
</li>
</ul>
<p>
<b>Returned Values:</b> 0 (OK) on success or EINVAL if attr is invalid.
</p>
<p>
<b>Assumptions/Limitations:</b>
</p>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX interface of the same name.
</p>
<h3><a name="pthreadbarrierattrsetpshared">2.9.45 pthread_barrierattr_setpshared</a></h3>
<p>
<b>Function Prototype:</b>
</p>
<pre>
#include <pthread.h>
int pthread_barrierattr_setpshared(FAR pthread_barrierattr_t *attr, int pshared);
</pre>
<p>
<b>Description:</b>
The process-shared attribute is set to <code>PTHREAD_PROCESS_SHARED</code> to permit
a barrier to be operated upon by any thread that has access to the memory where the
barrier is allocated.
If the process-shared attribute is <code>PTHREAD_PROCESS_PRIVATE</code>, the barrier can
only be operated upon by threads created within the same process as the thread that
initialized the barrier.
If threads of different processes attempt to operate on such a barrier, the behavior is undefined.
The default value of the attribute is <code>PTHREAD_PROCESS_PRIVATE</code>.
</p>
<p>
<b>Input Parameters:</b>
</p>
<ul>
<li><code>attr</code>. Barrier attributes to be modified.</li>
<li><code>pshared</code>. The new value of the pshared attribute.</li>
</ul>
<p>
<b>Returned Values:</b> 0 (<code>OK</code>) on success or <code>EINVAL</code> if either
<code>attr</code> is invalid or <code>pshared</code> is not one of
<code>PTHREAD_PROCESS_SHARED</code> or <code>PTHREAD_PROCESS_PRIVATE</code>.
</p>
<p>
<b>Assumptions/Limitations:</b>
</p>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX interface of the same name.
</p>
<h3><a name="pthreadbarrierattrgetpshared">2.9.46 pthread_barrierattr_getpshared</a></h3>
<p>
<b>Function Prototype:</b>
</p>
<pre>
#include <pthread.h>
int pthread_barrierattr_getpshared(FAR const pthread_barrierattr_t *attr, FAR int *pshared);
</pre>
<p>
<b>Description:</b>
The <code>pthread_barrierattr_getpshared()</code> function will obtain the value of the
process-shared attribute from the attributes object referenced by <code>attr</code>.
</p>
<p>
<b>Input Parameters:</b>
</p>
<p>
<ul>
<li><code>attr</code>. Barrier attributes to be queried.</li>
<li><code>pshared</code>. The location to stored the current value of the pshared attribute.</li>
</ul>
<p>
<b>Returned Values:</b> 0 (<code>OK</code>) on success or <code>EINVAL</code> if
either <code>attr</code> or <code>pshared</code> is invalid.
</p>
<p>
<b>Assumptions/Limitations:</b>
</p>
<p>
<b>POSIX Compatibility:</b> Comparable to the POSIX interface of the same name.
</p>
<h3><a name="pthreadbarrierinit">2.9.47 pthread_barrier_init</a></h3>