mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-05 14:57:30 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
99
security/nss/lib/pk11wrap/pk11list.c
Normal file
99
security/nss/lib/pk11wrap/pk11list.c
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
/*
|
||||
* Locking and queue management primatives
|
||||
*
|
||||
*/
|
||||
|
||||
#include "seccomon.h"
|
||||
#include "nssilock.h"
|
||||
#include "secmod.h"
|
||||
#include "secmodi.h"
|
||||
#include "secmodti.h"
|
||||
#include "nssrwlk.h"
|
||||
|
||||
/*
|
||||
* create a new lock for a Module List
|
||||
*/
|
||||
SECMODListLock *
|
||||
SECMOD_NewListLock()
|
||||
{
|
||||
return NSSRWLock_New(10, "moduleListLock");
|
||||
}
|
||||
|
||||
/*
|
||||
* destroy the lock
|
||||
*/
|
||||
void
|
||||
SECMOD_DestroyListLock(SECMODListLock *lock)
|
||||
{
|
||||
NSSRWLock_Destroy(lock);
|
||||
}
|
||||
|
||||
/*
|
||||
* Lock the List for Read: NOTE: this assumes the reading isn't so common
|
||||
* the writing will be starved.
|
||||
*/
|
||||
void
|
||||
SECMOD_GetReadLock(SECMODListLock *modLock)
|
||||
{
|
||||
NSSRWLock_LockRead(modLock);
|
||||
}
|
||||
|
||||
/*
|
||||
* Release the Read lock
|
||||
*/
|
||||
void
|
||||
SECMOD_ReleaseReadLock(SECMODListLock *modLock)
|
||||
{
|
||||
NSSRWLock_UnlockRead(modLock);
|
||||
}
|
||||
|
||||
/*
|
||||
* lock the list for Write
|
||||
*/
|
||||
void
|
||||
SECMOD_GetWriteLock(SECMODListLock *modLock)
|
||||
{
|
||||
NSSRWLock_LockWrite(modLock);
|
||||
}
|
||||
|
||||
/*
|
||||
* Release the Write Lock: NOTE, this code is pretty inefficient if you have
|
||||
* lots of write collisions.
|
||||
*/
|
||||
void
|
||||
SECMOD_ReleaseWriteLock(SECMODListLock *modLock)
|
||||
{
|
||||
NSSRWLock_UnlockWrite(modLock);
|
||||
}
|
||||
|
||||
/*
|
||||
* must Hold the Write lock
|
||||
*/
|
||||
void
|
||||
SECMOD_RemoveList(SECMODModuleList **parent, SECMODModuleList *child)
|
||||
{
|
||||
*parent = child->next;
|
||||
child->next = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* if lock is not specified, it must already be held
|
||||
*/
|
||||
void
|
||||
SECMOD_AddList(SECMODModuleList *parent, SECMODModuleList *child,
|
||||
SECMODListLock *lock)
|
||||
{
|
||||
if (lock) {
|
||||
SECMOD_GetWriteLock(lock);
|
||||
}
|
||||
|
||||
child->next = parent->next;
|
||||
parent->next = child;
|
||||
|
||||
if (lock) {
|
||||
SECMOD_ReleaseWriteLock(lock);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue