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

Side by Side Diff: nss/lib/libpkix/pkix_pl_nss/system/pkix_pl_mutex.c

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
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 * pkix_pl_mutex.c
6 *
7 * Mutual Exclusion (Lock) Object Functions
8 *
9 */
10
11 #include "pkix_pl_mutex.h"
12
13 /* --Private-Functions-------------------------------------------- */
14
15 /*
16 * FUNCTION: pkix_pl_Mutex_Destroy
17 * (see comments for PKIX_PL_DestructorCallback in pkix_pl_system.h)
18 */
19 static PKIX_Error *
20 pkix_pl_Mutex_Destroy(
21 PKIX_PL_Object *object,
22 void *plContext)
23 {
24 PKIX_PL_Mutex *mutex = NULL;
25
26 PKIX_ENTER(MUTEX, "pkix_pl_Mutex_Destroy");
27 PKIX_NULLCHECK_ONE(object);
28
29 /* Sanity check: Test that "object" is a mutex */
30 PKIX_CHECK(pkix_CheckType(object, PKIX_MUTEX_TYPE, plContext),
31 PKIX_OBJECTNOTMUTEX);
32
33 mutex = (PKIX_PL_Mutex*) object;
34
35 PKIX_MUTEX_DEBUG("\tCalling PR_DestroyLock).\n");
36 PR_DestroyLock(mutex->lock);
37 mutex->lock = NULL;
38
39 cleanup:
40
41 PKIX_RETURN(MUTEX);
42 }
43
44 /*
45 * FUNCTION: pkix_pl_Mutex_RegisterSelf
46 * DESCRIPTION:
47 * Registers PKIX_MUTEX_TYPE and its related functions with systemClasses[]
48 * THREAD SAFETY:
49 * Not Thread Safe - for performance and complexity reasons
50 *
51 * Since this function is only called by PKIX_PL_Initialize, which should
52 * only be called once, it is acceptable that this function is not
53 * thread-safe.
54 */
55 PKIX_Error *
56 pkix_pl_Mutex_RegisterSelf(
57 /* ARGSUSED */ void *plContext)
58 {
59
60 extern pkix_ClassTable_Entry systemClasses[PKIX_NUMTYPES];
61 pkix_ClassTable_Entry entry;
62
63 PKIX_ENTER(MUTEX, "pkix_pl_Mutex_RegisterSelf");
64
65 entry.description = "Mutex";
66 entry.objCounter = 0;
67 entry.typeObjectSize = sizeof(PKIX_PL_Mutex);
68 entry.destructor = pkix_pl_Mutex_Destroy;
69 entry.equalsFunction = NULL;
70 entry.hashcodeFunction = NULL;
71 entry.toStringFunction = NULL;
72 entry.comparator = NULL;
73 entry.duplicateFunction = NULL;
74
75 systemClasses[PKIX_MUTEX_TYPE] = entry;
76
77 PKIX_RETURN(MUTEX);
78 }
79
80 /* --Public-Functions--------------------------------------------- */
81
82 /*
83 * FUNCTION: PKIX_PL_Mutex_Create (see comments in pkix_pl_system.h)
84 */
85 PKIX_Error *
86 PKIX_PL_Mutex_Create(
87 PKIX_PL_Mutex **pNewLock,
88 void *plContext)
89 {
90 PKIX_PL_Mutex *mutex = NULL;
91
92 PKIX_ENTER(MUTEX, "PKIX_PL_Mutex_Create");
93 PKIX_NULLCHECK_ONE(pNewLock);
94
95 PKIX_CHECK(PKIX_PL_Object_Alloc
96 (PKIX_MUTEX_TYPE,
97 sizeof (PKIX_PL_Mutex),
98 (PKIX_PL_Object **)&mutex,
99 plContext),
100 PKIX_COULDNOTCREATELOCKOBJECT);
101
102 PKIX_MUTEX_DEBUG("\tCalling PR_NewLock).\n");
103 mutex->lock = PR_NewLock();
104
105 /* If an error occurred in NSPR, report it here */
106 if (mutex->lock == NULL) {
107 PKIX_DECREF(mutex);
108 PKIX_ERROR_ALLOC_ERROR();
109 }
110
111 *pNewLock = mutex;
112
113 cleanup:
114
115 PKIX_RETURN(MUTEX);
116 }
117
118 /*
119 * FUNCTION: PKIX_PL_Mutex_Lock (see comments in pkix_pl_system.h)
120 */
121 PKIX_Error *
122 PKIX_PL_Mutex_Lock(
123 PKIX_PL_Mutex *mutex,
124 void *plContext)
125 {
126 PKIX_ENTER(MUTEX, "PKIX_PL_Mutex_Lock");
127 PKIX_NULLCHECK_ONE(mutex);
128
129 PKIX_MUTEX_DEBUG("\tCalling PR_Lock).\n");
130 PR_Lock(mutex->lock);
131
132 PKIX_MUTEX_DEBUG_ARG("(Thread %u just acquired the lock)\n",
133 (PKIX_UInt32)PR_GetCurrentThread());
134
135 PKIX_RETURN(MUTEX);
136 }
137
138 /*
139 * FUNCTION: PKIX_PL_Mutex_Unlock (see comments in pkix_pl_system.h)
140 */
141 PKIX_Error *
142 PKIX_PL_Mutex_Unlock(
143 PKIX_PL_Mutex *mutex,
144 void *plContext)
145 {
146 PRStatus result;
147
148 PKIX_ENTER(MUTEX, "PKIX_PL_Mutex_Unlock");
149 PKIX_NULLCHECK_ONE(mutex);
150
151 PKIX_MUTEX_DEBUG("\tCalling PR_Unlock).\n");
152 result = PR_Unlock(mutex->lock);
153
154 PKIX_MUTEX_DEBUG_ARG("(Thread %u just released the lock)\n",
155 (PKIX_UInt32)PR_GetCurrentThread());
156
157 if (result == PR_FAILURE) {
158 PKIX_ERROR_FATAL(PKIX_ERRORUNLOCKINGMUTEX);
159 }
160
161 cleanup:
162 PKIX_RETURN(MUTEX);
163 }
OLDNEW
« no previous file with comments | « nss/lib/libpkix/pkix_pl_nss/system/pkix_pl_mutex.h ('k') | nss/lib/libpkix/pkix_pl_nss/system/pkix_pl_object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698