nsprpub/pr/include/prrwlock.h

Wed, 31 Dec 2014 06:55:46 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:55:46 +0100
changeset 1
ca08bd8f51b2
permissions
-rw-r--r--

Added tag TORBROWSER_REPLICA for changeset 6474c204b198

     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/. */
     6 /*
     7 ** File:		prrwlock.h
     8 ** Description:	API to basic reader-writer lock functions of NSPR.
     9 **
    10 **/
    12 #ifndef prrwlock_h___
    13 #define prrwlock_h___
    15 #include "prtypes.h"
    17 PR_BEGIN_EXTERN_C
    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  */
    27 typedef struct PRRWLock PRRWLock;
    29 #define	PR_RWLOCK_RANK_NONE	0
    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);
    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);
    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);
    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);
    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);
    86 PR_END_EXTERN_C
    88 #endif /* prrwlock_h___ */

mercurial