Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(821)

Side by Side Diff: nss/lib/util/nssrwlk.h

Issue 2078763002: Delete bundled copy of NSS and replace with README. (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/nss@master
Patch Set: Delete bundled copy of NSS and replace with README. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « nss/lib/util/nsslocks.h ('k') | nss/lib/util/nssrwlk.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
5 /*
6 ** File: nsrwlock.h
7 ** Description: API to basic reader-writer lock functions of NSS.
8 ** These are re-entrant reader writer locks; that is,
9 ** If I hold the write lock, I can ask for it and get it again.
10 ** If I hold the write lock, I can also ask for and get a read lock.
11 ** I can then release the locks in any order (read or write).
12 ** I must release each lock type as many times as I acquired it.
13 ** Otherwise, these are normal reader/writer locks.
14 **
15 ** For deadlock detection, locks should be ranked, and no lock may be aquired
16 ** while I hold a lock of higher rank number.
17 ** If you don't want that feature, always use NSS_RWLOCK_RANK_NONE.
18 ** Lock name is for debugging, and is optional (may be NULL)
19 **/
20
21 #ifndef nssrwlk_h___
22 #define nssrwlk_h___
23
24 #include "utilrename.h"
25 #include "prtypes.h"
26 #include "nssrwlkt.h"
27
28 #define NSS_RWLOCK_RANK_NONE 0
29
30 /* SEC_BEGIN_PROTOS */
31 PR_BEGIN_EXTERN_C
32
33 /***********************************************************************
34 ** FUNCTION: NSSRWLock_New
35 ** DESCRIPTION:
36 ** Returns a pointer to a newly created reader-writer lock object.
37 ** INPUTS: Lock rank
38 ** Lock name
39 ** OUTPUTS: void
40 ** RETURN: NSSRWLock*
41 ** If the lock cannot be created because of resource constraints, NULL
42 ** is returned.
43 **
44 ***********************************************************************/
45 extern NSSRWLock* NSSRWLock_New(PRUint32 lock_rank, const char *lock_name);
46
47 /***********************************************************************
48 ** FUNCTION: NSSRWLock_AtomicCreate
49 ** DESCRIPTION:
50 ** Given the address of a NULL pointer to a NSSRWLock,
51 ** atomically initializes that pointer to a newly created NSSRWLock.
52 ** Returns the value placed into that pointer, or NULL.
53 **
54 ** INPUTS: address of NSRWLock pointer
55 ** Lock rank
56 ** Lock name
57 ** OUTPUTS: NSSRWLock*
58 ** RETURN: NSSRWLock*
59 ** If the lock cannot be created because of resource constraints,
60 ** the pointer will be left NULL.
61 **
62 ***********************************************************************/
63 extern NSSRWLock *
64 nssRWLock_AtomicCreate( NSSRWLock ** prwlock,
65 PRUint32 lock_rank,
66 const char * lock_name);
67
68 /***********************************************************************
69 ** FUNCTION: NSSRWLock_Destroy
70 ** DESCRIPTION:
71 ** Destroys a given RW lock object.
72 ** INPUTS: NSSRWLock *lock - Lock to be freed.
73 ** OUTPUTS: void
74 ** RETURN: None
75 ***********************************************************************/
76 extern void NSSRWLock_Destroy(NSSRWLock *lock);
77
78 /***********************************************************************
79 ** FUNCTION: NSSRWLock_LockRead
80 ** DESCRIPTION:
81 ** Apply a read lock (non-exclusive) on a RWLock
82 ** INPUTS: NSSRWLock *lock - Lock to be read-locked.
83 ** OUTPUTS: void
84 ** RETURN: None
85 ***********************************************************************/
86 extern void NSSRWLock_LockRead(NSSRWLock *lock);
87
88 /***********************************************************************
89 ** FUNCTION: NSSRWLock_LockWrite
90 ** DESCRIPTION:
91 ** Apply a write lock (exclusive) on a RWLock
92 ** INPUTS: NSSRWLock *lock - Lock to write-locked.
93 ** OUTPUTS: void
94 ** RETURN: None
95 ***********************************************************************/
96 extern void NSSRWLock_LockWrite(NSSRWLock *lock);
97
98 /***********************************************************************
99 ** FUNCTION: NSSRWLock_UnlockRead
100 ** DESCRIPTION:
101 ** Release a Read lock. Unlocking an unlocked lock has undefined results.
102 ** INPUTS: NSSRWLock *lock - Lock to unlocked.
103 ** OUTPUTS: void
104 ** RETURN: void
105 ***********************************************************************/
106 extern void NSSRWLock_UnlockRead(NSSRWLock *lock);
107
108 /***********************************************************************
109 ** FUNCTION: NSSRWLock_UnlockWrite
110 ** DESCRIPTION:
111 ** Release a Write lock. Unlocking an unlocked lock has undefined results.
112 ** INPUTS: NSSRWLock *lock - Lock to unlocked.
113 ** OUTPUTS: void
114 ** RETURN: void
115 ***********************************************************************/
116 extern void NSSRWLock_UnlockWrite(NSSRWLock *lock);
117
118 /***********************************************************************
119 ** FUNCTION: NSSRWLock_HaveWriteLock
120 ** DESCRIPTION:
121 ** Tells caller whether the current thread holds the write lock, or not.
122 ** INPUTS: NSSRWLock *lock - Lock to test.
123 ** OUTPUTS: void
124 ** RETURN: PRBool PR_TRUE IFF the current thread holds the write lock.
125 ***********************************************************************/
126
127 extern PRBool NSSRWLock_HaveWriteLock(NSSRWLock *rwlock);
128
129 /* SEC_END_PROTOS */
130 PR_END_EXTERN_C
131
132 #endif /* nsrwlock_h___ */
OLDNEW
« no previous file with comments | « nss/lib/util/nsslocks.h ('k') | nss/lib/util/nssrwlk.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698