Fix Centurion name.
[0ad.git] / libraries / source / spidermonkey / include-win32-release / nspr / prrwlock.h
blob2822444b3cc667846af4caab50a73900d31aca9d
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
20 * PRRWLock --
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.
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.
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___ */