bionic (3) pthread_spin_destroy.3posix.gz

Provided by: manpages-posix-dev_2013a-2_all bug

PROLOG

       This  manual  page  is part of the POSIX Programmer's Manual.  The Linux implementation of this interface
       may differ (consult the corresponding Linux manual page for details of Linux behavior), or the  interface
       may not be implemented on Linux.

NAME

       pthread_spin_destroy, pthread_spin_init — destroy or initialize a spin lock object

SYNOPSIS

       #include <pthread.h>

       int pthread_spin_destroy(pthread_spinlock_t *lock);
       int pthread_spin_init(pthread_spinlock_t *lock, int pshared);

DESCRIPTION

       The  pthread_spin_destroy()  function  shall  destroy  the  spin  lock referenced by lock and release any
       resources used by the lock. The effect of subsequent use of the lock  is  undefined  until  the  lock  is
       reinitialized    by    another   call   to   pthread_spin_init().    The   results   are   undefined   if
       pthread_spin_destroy() is called when a thread holds the lock, or if this  function  is  called  with  an
       uninitialized thread spin lock.

       The pthread_spin_init() function shall allocate any resources required to use the spin lock referenced by
       lock and initialize the lock to an unlocked state.

       If  the  Thread  Process-Shared  Synchronization  option  is  supported  and  the  value  of  pshared  is
       PTHREAD_PROCESS_SHARED,  the  implementation shall permit the spin lock to be operated upon by any thread
       that has access to the memory where the spin lock is allocated, even if it is allocated in memory that is
       shared by multiple processes.

       If  the  Thread  Process-Shared  Synchronization  option  is  supported  and  the  value  of  pshared  is
       PTHREAD_PROCESS_PRIVATE, or if the option is not supported, the spin lock shall only be operated upon  by
       threads  created  within  the  same  process  as the thread that initialized the spin lock. If threads of
       differing processes attempt to operate on such a spin lock, the behavior is undefined.

       The results are undefined if pthread_spin_init() is called specifying an already initialized  spin  lock.
       The results are undefined if a spin lock is used without first being initialized.

       If  the  pthread_spin_init()  function  fails,  the  lock is not initialized and the contents of lock are
       undefined.

       Only the object referenced by lock may be used for performing synchronization.

       The result of referring to copies of that object in calls to pthread_spin_destroy(), pthread_spin_lock(),
       pthread_spin_trylock(), or pthread_spin_unlock() is undefined.

RETURN VALUE

       Upon  successful  completion,  these  functions  shall  return  zero; otherwise, an error number shall be
       returned to indicate the error.

ERRORS

       The pthread_spin_init() function shall fail if:

       EAGAIN The system lacks the necessary resources to initialize another spin lock.

       ENOMEM Insufficient memory exists to initialize the lock.

       These functions shall not return an error code of [EINTR].

       The following sections are informative.

EXAMPLES

       None.

APPLICATION USAGE

       None.

RATIONALE

       If an implementation detects that the value specified by the lock argument to pthread_spin_destroy() does
       not  refer to an initialized spin lock object, it is recommended that the function should fail and report
       an [EINVAL] error.

       If an implementation detects that the value specified by the lock argument to  pthread_spin_destroy()  or
       pthread_spin_init()  refers to a locked spin lock object, or detects that the value specified by the lock
       argument to pthread_spin_init() refers to an already initialized spin lock object, it is recommended that
       the function should fail and report an [EBUSY] error.

FUTURE DIRECTIONS

       None.

SEE ALSO

       pthread_spin_lock(), pthread_spin_unlock()

       The Base Definitions volume of POSIX.1‐2008, <pthread.h>

       Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2013 Edition,
       Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open  Group  Base
       Specifications  Issue 7, Copyright (C) 2013 by the Institute of Electrical and Electronics Engineers, Inc
       and The Open Group.  (This is POSIX.1-2008 with the 2013 Technical Corrigendum 1 applied.) In  the  event
       of  any  discrepancy between this version and the original IEEE and The Open Group Standard, the original
       IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at
       http://www.unix.org/online.html .

       Any  typographical  or formatting errors that appear in this page are most likely to have been introduced
       during  the  conversion  of  the  source  files  to  man  page  format.  To  report  such   errors,   see
       https://www.kernel.org/doc/man-pages/reporting_bugs.html .