tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

prrwlock.h (2854B)


      1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 /*
      7 ** File:        prrwlock.h
      8 ** Description: API to basic reader-writer lock functions of NSPR.
      9 **
     10 **/
     11 
     12 #ifndef prrwlock_h___
     13 #define prrwlock_h___
     14 
     15 #include "prtypes.h"
     16 
     17 PR_BEGIN_EXTERN_C
     18 
     19 /*
     20 * PRRWLock --
     21 *
     22 *  The reader writer lock, PRRWLock, is an opaque object to the clients
     23 *  of NSPR.  All routines operate on a pointer to this opaque entity.
     24 */
     25 
     26 
     27 typedef struct PRRWLock PRRWLock;
     28 
     29 #define PR_RWLOCK_RANK_NONE 0
     30 
     31 
     32 /***********************************************************************
     33 ** FUNCTION:    PR_NewRWLock
     34 ** DESCRIPTION:
     35 **  Returns a pointer to a newly created reader-writer lock object.
     36 ** INPUTS:      Lock rank
     37 **              Lock name
     38 ** OUTPUTS:     void
     39 ** RETURN:      PRRWLock*
     40 **   If the lock cannot be created because of resource constraints, NULL
     41 **   is returned.
     42 **
     43 ***********************************************************************/
     44 NSPR_API(PRRWLock*) PR_NewRWLock(PRUint32 lock_rank, const char *lock_name);
     45 
     46 /***********************************************************************
     47 ** FUNCTION:    PR_DestroyRWLock
     48 ** DESCRIPTION:
     49 **  Destroys a given RW lock object.
     50 ** INPUTS:      PRRWLock *lock - Lock to be freed.
     51 ** OUTPUTS:     void
     52 ** RETURN:      None
     53 ***********************************************************************/
     54 NSPR_API(void) PR_DestroyRWLock(PRRWLock *lock);
     55 
     56 /***********************************************************************
     57 ** FUNCTION:    PR_RWLock_Rlock
     58 ** DESCRIPTION:
     59 **  Apply a read lock (non-exclusive) on a RWLock
     60 ** INPUTS:      PRRWLock *lock - Lock to be read-locked.
     61 ** OUTPUTS:     void
     62 ** RETURN:      None
     63 ***********************************************************************/
     64 NSPR_API(void) PR_RWLock_Rlock(PRRWLock *lock);
     65 
     66 /***********************************************************************
     67 ** FUNCTION:    PR_RWLock_Wlock
     68 ** DESCRIPTION:
     69 **  Apply a write lock (exclusive) on a RWLock
     70 ** INPUTS:      PRRWLock *lock - Lock to write-locked.
     71 ** OUTPUTS:     void
     72 ** RETURN:      None
     73 ***********************************************************************/
     74 NSPR_API(void) PR_RWLock_Wlock(PRRWLock *lock);
     75 
     76 /***********************************************************************
     77 ** FUNCTION:    PR_RWLock_Unlock
     78 ** DESCRIPTION:
     79 **  Release a RW lock. Unlocking an unlocked lock has undefined results.
     80 ** INPUTS:      PRRWLock *lock - Lock to unlocked.
     81 ** OUTPUTS:     void
     82 ** RETURN:      void
     83 ***********************************************************************/
     84 NSPR_API(void) PR_RWLock_Unlock(PRRWLock *lock);
     85 
     86 PR_END_EXTERN_C
     87 
     88 #endif /* prrwlock_h___ */