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

Side by Side Diff: net/third_party/nss/ssl/sslmutex.h

Issue 1882433002: Removing NSS files and USE_OPENSSL flag (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 years, 8 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 | « net/third_party/nss/ssl/sslinit.c ('k') | net/third_party/nss/ssl/sslmutex.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 #ifndef __SSLMUTEX_H_
5 #define __SSLMUTEX_H_ 1
6
7 /* What SSL really wants is portable process-shared unnamed mutexes in
8 * shared memory, that have the property that if the process that holds
9 * them dies, they are released automatically, and that (unlike fcntl
10 * record locking) lock to the thread, not to the process.
11 * NSPR doesn't provide that.
12 * Windows has mutexes that meet that description, but they're not portable.
13 * POSIX mutexes are not automatically released when the holder dies,
14 * and other processes/threads cannot release the mutex on behalf of the
15 * dead holder.
16 * POSIX semaphores can be used to accomplish this on systems that implement
17 * process-shared unnamed POSIX semaphores, because a watchdog thread can
18 * discover and release semaphores that were held by a dead process.
19 * On systems that do not support process-shared POSIX unnamed semaphores,
20 * they can be emulated using pipes.
21 * The performance cost of doing that is not yet measured.
22 *
23 * So, this API looks a lot like POSIX pthread mutexes.
24 */
25
26 #include "prtypes.h"
27 #include "prlock.h"
28
29 #if defined(NETBSD)
30 #include <sys/param.h> /* for __NetBSD_Version__ */
31 #endif
32
33 #if defined(WIN32)
34
35 #include <wtypes.h>
36
37 typedef struct {
38 PRBool isMultiProcess;
39 #ifdef WINNT
40 /* on WINNT we need both the PRLock and the Win32 mutex for fibers */
41 struct {
42 #else
43 union {
44 #endif
45 PRLock *sslLock;
46 HANDLE sslMutx;
47 } u;
48 } sslMutex;
49
50 typedef int sslPID;
51
52 #elif defined(LINUX) || defined(AIX) || defined(BEOS) || defined(BSDI) || (defin ed(NETBSD) && __NetBSD_Version__ < 500000000) || defined(OPENBSD)
53
54 #include <sys/types.h>
55 #include "prtypes.h"
56
57 typedef struct {
58 PRBool isMultiProcess;
59 union {
60 PRLock *sslLock;
61 struct {
62 int mPipes[3];
63 PRInt32 nWaiters;
64 } pipeStr;
65 } u;
66 } sslMutex;
67 typedef pid_t sslPID;
68
69 /* other types of unix, except OS X */
70 #elif defined(XP_UNIX) && !defined(DARWIN)
71
72 #include <sys/types.h> /* for pid_t */
73 #include <semaphore.h> /* for sem_t, and sem_* functions */
74
75 typedef struct {
76 PRBool isMultiProcess;
77 union {
78 PRLock *sslLock;
79 sem_t sem;
80 } u;
81 } sslMutex;
82
83 typedef pid_t sslPID;
84
85 #else /* no support for cross-process locking */
86
87 /* what platform is this ?? */
88
89 typedef struct {
90 PRBool isMultiProcess;
91 union {
92 PRLock *sslLock;
93 /* include cross-process locking mechanism here */
94 } u;
95 } sslMutex;
96
97 #ifdef DARWIN
98 typedef pid_t sslPID;
99 #else
100 typedef int sslPID;
101 #endif
102
103 #endif
104
105 #include "seccomon.h"
106
107 SEC_BEGIN_PROTOS
108
109 extern SECStatus sslMutex_Init(sslMutex *sem, int shared);
110
111 /* If processLocal is set to true, then just free resources which are *only* ass ociated
112 * with the current process. Leave any shared resources (including the state of
113 * shared memory) intact. */
114 extern SECStatus sslMutex_Destroy(sslMutex *sem, PRBool processLocal);
115
116 extern SECStatus sslMutex_Unlock(sslMutex *sem);
117
118 extern SECStatus sslMutex_Lock(sslMutex *sem);
119
120 #ifdef WINNT
121
122 extern SECStatus sslMutex_2LevelInit(sslMutex *sem);
123
124 #endif
125
126 SEC_END_PROTOS
127
128 #endif
OLDNEW
« no previous file with comments | « net/third_party/nss/ssl/sslinit.c ('k') | net/third_party/nss/ssl/sslmutex.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698