pthread_mutexattr_init,         pthread_mutexattr_destroy,
       pthread_mutexattr_setkind_np, pthread_mutexattr_getkind_np
       - mutex creation attributes


SYNOPSIS

       #include <pthread.h>

       int pthread_mutexattr_init(pthread_mutexattr_t *attr);

       int pthread_mutexattr_destroy(pthread_mutexattr_t *attr);

       int       pthread_mutexattr_setkind_np(pthread_mutexattr_t
       *attr, int kind);

       int pthread_mutexattr_getkind_np(const pthread_mutexattr_t
       *attr, int *kind);


DESCRIPTION

       Mutex  attributes can be specified at mutex creation time,
       by passing a mutex attribute object as second argument  to
       pthread_mutex_init(3).   Passing  NULL  is  equivalent  to
       passing a mutex attribute object with all  attributes  set
       to their default values.

       pthread_mutexattr_init  initializes  the  mutex  attribute
       object attr and fills  it  with  default  values  for  the
       attributes.

       pthread_mutexattr_destroy   destroys   a  mutex  attribute
       object, which must not be reused until  it  is  reinitial­
       ized.   pthread_mutexattr_destroy does nothing in the Lin­
       uxThreads implementation.

       LinuxThreads supports only one mutex attribute: the  mutex
       kind,  which  is either PTHREAD_MUTEX_FAST_NP for ``fast''
       mutexes,  PTHREAD_MUTEX_RECURSIVE_NP   for   ``recursive''
       mutexes, or PTHREAD_MUTEX_ERRORCHECK_NP for ``error check­
       ing'' mutexes.  As the NP suffix indicates, this is a non-
       portable extension to the POSIX standard and should not be
       employed in portable programs.

       The  mutex  kind  determines  what  happens  if  a  thread
       attempts   to   lock   a   mutex   it  already  owns  with
       pthread_mutex_lock(3).  If the mutex is  of  the  ``fast''
       kind,  pthread_mutex_lock(3)  simply  suspends the calling
       thread forever.  If the mutex is of the ``error checking''
       kind,  pthread_mutex_lock(3)  returns immediately with the
       error code EDEADLK.  If the mutex is of the  ``recursive''
       kind,  the  call  to pthread_mutex_lock(3) returns immedi­
       ately with a success return code. The number of times  the
       thread  owning  the mutex has locked it is recorded in the

       the  same  number of times before the mutex returns to the
       unlocked state.

       The   default   mutex   kind   is   ``fast'',   that   is,
       PTHREAD_MUTEX_FAST_NP.

       pthread_mutexattr_setkind_np sets the mutex kind attribute
       in attr to the value specified by kind.

       pthread_mutexattr_getkind_np retrieves the  current  value
       of  the  mutex kind attribute in attr and stores it in the
       location pointed to by kind.


RETURN VALUE

       pthread_mutexattr_init,   pthread_mutexattr_destroy    and
       pthread_mutexattr_getkind_np always return 0.

       pthread_mutexattr_setkind_np  returns  0  on success and a
       non-zero error code on error.


ERRORS

       On error, pthread_mutexattr_setkind_np returns the follow­
       ing error code:

       EINVAL kind    is    neither   PTHREAD_MUTEX_FAST_NP   nor
              PTHREAD_MUTEX_RECURSIVE_NP                      nor
              PTHREAD_MUTEX_ERRORCHECK_NP


AUTHOR

       Xavier Leroy <Xavier.Leroy@inria.fr>


SEE ALSO

       pthread_mutex_init(3),              pthread_mutex_lock(3),
       pthread_mutex_unlock(3).


Man(1) output converted with man2html