本文整理汇总了C++中PZ_Unlock函数的典型用法代码示例。如果您正苦于以下问题:C++ PZ_Unlock函数的具体用法?C++ PZ_Unlock怎么用?C++ PZ_Unlock使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PZ_Unlock函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: terminateWorkerThreads
void
terminateWorkerThreads(void)
{
int i;
VLOG(("httpserv: server_thread: waiting on stopping"));
PZ_Lock(qLock);
PZ_NotifyAllCondVar(jobQNotEmptyCv);
PZ_Unlock(qLock);
/* Wait for worker threads to terminate. */
for (i = 0; i < maxThreads; ++i) {
perThread *slot = threads + i;
if (slot->prThread) {
PR_JoinThread(slot->prThread);
}
}
/* The worker threads empty the jobQ before they terminate. */
PZ_Lock(qLock);
PORT_Assert(threadCount == 0);
PORT_Assert(PR_CLIST_IS_EMPTY(&jobQ));
PZ_Unlock(qLock);
DESTROY_CONDVAR(jobQNotEmptyCv);
DESTROY_CONDVAR(freeListNotEmptyCv);
DESTROY_CONDVAR(threadCountChangeCv);
PR_DestroyLock(lastLoadedCrlLock);
DESTROY_LOCK(qLock);
PR_Free(jobTable);
PR_Free(threads);
}
开发者ID:MichaelKohler,项目名称:gecko-dev,代码行数:33,代码来源:httpserv.c
示例2: port_ArenaRelease
static void
port_ArenaRelease(PLArenaPool *arena, void *mark, PRBool zero)
{
PORTArenaPool *pool = (PORTArenaPool *)arena;
if (ARENAPOOL_MAGIC == pool->magic ) {
PZ_Lock(pool->lock);
#ifdef THREADMARK
{
threadmark_mark **pw, *tm;
if (PR_GetCurrentThread() != pool->marking_thread ) {
PZ_Unlock(pool->lock);
PORT_SetError(SEC_ERROR_NO_MEMORY);
PORT_Assert(0);
return /* no error indication available */ ;
}
pw = &pool->first_mark;
while( *pw && (mark != (*pw)->mark) ) {
pw = &(*pw)->next;
}
if (! *pw ) {
/* bad mark */
PZ_Unlock(pool->lock);
PORT_SetError(SEC_ERROR_NO_MEMORY);
PORT_Assert(0);
return /* no error indication available */ ;
}
tm = *pw;
*pw = (threadmark_mark *)NULL;
if (zero) {
port_ArenaZeroAfterMark(arena, mark);
}
PL_ARENA_RELEASE(arena, mark);
if (! pool->first_mark ) {
pool->marking_thread = (PRThread *)NULL;
}
}
#else /* THREADMARK */
if (zero) {
port_ArenaZeroAfterMark(arena, mark);
}
PL_ARENA_RELEASE(arena, mark);
#endif /* THREADMARK */
PZ_Unlock(pool->lock);
} else {
if (zero) {
port_ArenaZeroAfterMark(arena, mark);
}
PL_ARENA_RELEASE(arena, mark);
}
}
开发者ID:dimitrianoudi,项目名称:Jaxer,代码行数:56,代码来源:secport.c
示例3: PORT_ArenaMark
void *
PORT_ArenaMark(PLArenaPool *arena)
{
void * result;
PORTArenaPool *pool = (PORTArenaPool *)arena;
if (ARENAPOOL_MAGIC == pool->magic ) {
PZ_Lock(pool->lock);
#ifdef THREADMARK
{
threadmark_mark *tm, **pw;
PRThread * currentThread = PR_GetCurrentThread();
if (! pool->marking_thread ) {
/* First mark */
pool->marking_thread = currentThread;
} else if (currentThread != pool->marking_thread ) {
PZ_Unlock(pool->lock);
PORT_SetError(SEC_ERROR_NO_MEMORY);
PORT_Assert(0);
return NULL;
}
result = PL_ARENA_MARK(arena);
PL_ARENA_ALLOCATE(tm, arena, sizeof(threadmark_mark));
if (!tm) {
PZ_Unlock(pool->lock);
PORT_SetError(SEC_ERROR_NO_MEMORY);
return NULL;
}
tm->mark = result;
tm->next = (threadmark_mark *)NULL;
pw = &pool->first_mark;
while( *pw ) {
pw = &(*pw)->next;
}
*pw = tm;
}
#else /* THREADMARK */
result = PL_ARENA_MARK(arena);
#endif /* THREADMARK */
PZ_Unlock(pool->lock);
} else {
/* a "pure" NSPR arena */
result = PL_ARENA_MARK(arena);
}
return result;
}
开发者ID:dimitrianoudi,项目名称:Jaxer,代码行数:51,代码来源:secport.c
示例4: nssTrustDomain_UnlockCertCache
NSS_IMPLEMENT void
nssTrustDomain_UnlockCertCache (
NSSTrustDomain *td
)
{
PZ_Unlock(td->cache->lock);
}
开发者ID:Akheon23,项目名称:chromecast-mirrored-source.external,代码行数:7,代码来源:tdcache.c
示例5: nssSlot_ExitMonitor
void
nssSlot_ExitMonitor(NSSSlot *slot)
{
if (slot->lock) {
PZ_Unlock(slot->lock);
}
}
开发者ID:SeanLiangYoung,项目名称:nocnnic,代码行数:7,代码来源:devslot.c
示例6: nssSession_ExitMonitor
NSS_IMPLEMENT PRStatus
nssSession_ExitMonitor (
nssSession *s
)
{
return (s->lock) ? PZ_Unlock(s->lock) : PR_SUCCESS;
}
开发者ID:SeanLiangYoung,项目名称:nocnnic,代码行数:7,代码来源:devslot.c
示例7: PORT_FreeArena
/*
* If zero is true, zeroize the arena memory before freeing it.
*/
void
PORT_FreeArena(PLArenaPool *arena, PRBool zero)
{
PORTArenaPool *pool = (PORTArenaPool *)arena;
PRLock *lock = (PRLock *)0;
size_t len = sizeof *arena;
if (!pool)
return;
if (ARENAPOOL_MAGIC == pool->magic) {
len = sizeof *pool;
lock = pool->lock;
PZ_Lock(lock);
}
if (zero) {
PL_ClearArenaPool(arena, 0);
}
(void)PR_CallOnce(&setupUseFreeListOnce, &SetupUseFreeList);
if (useFreeList) {
PL_FreeArenaPool(arena);
} else {
PL_FinishArenaPool(arena);
}
PORT_ZFree(arena, len);
if (lock) {
PZ_Unlock(lock);
PZ_DestroyLock(lock);
}
}
开发者ID:MichaelKohler,项目名称:gecko-dev,代码行数:32,代码来源:secport.c
示例8: PZ_Lock
/*
* nssHash_Add
*
*/
NSS_IMPLEMENT PRStatus
nssHash_Add
(
nssHash *hash,
const void *key,
const void *value
)
{
PRStatus error = PR_FAILURE;
PLHashEntry *he;
PZ_Lock(hash->mutex);
he = PL_HashTableAdd(hash->plHashTable, key, (void *)value);
if( (PLHashEntry *)NULL == he ) {
nss_SetError(NSS_ERROR_NO_MEMORY);
} else if (he->value != value) {
nss_SetError(NSS_ERROR_HASH_COLLISION);
} else {
hash->count++;
error = PR_SUCCESS;
}
(void)PZ_Unlock(hash->mutex);
return error;
}
开发者ID:Akin-Net,项目名称:mozilla-central,代码行数:31,代码来源:hash.c
示例9: jobLoop
int
jobLoop(PRFileDesc *a, PRFileDesc *b, int c)
{
PRCList *myLink = 0;
JOB *myJob;
PZ_Lock(qLock);
do {
myLink = 0;
while (PR_CLIST_IS_EMPTY(&jobQ) && !stopping) {
PZ_WaitCondVar(jobQNotEmptyCv, PR_INTERVAL_NO_TIMEOUT);
}
if (!PR_CLIST_IS_EMPTY(&jobQ)) {
myLink = PR_LIST_HEAD(&jobQ);
PR_REMOVE_AND_INIT_LINK(myLink);
}
PZ_Unlock(qLock);
myJob = (JOB *)myLink;
/* myJob will be null when stopping is true and jobQ is empty */
if (!myJob)
break;
handle_connection(myJob->tcp_sock, myJob->model_sock,
myJob->requestCert);
PZ_Lock(qLock);
PR_APPEND_LINK(myLink, &freeJobs);
PZ_NotifyCondVar(freeListNotEmptyCv);
} while (PR_TRUE);
return 0;
}
开发者ID:MichaelKohler,项目名称:gecko-dev,代码行数:29,代码来源:httpserv.c
示例10: PORT_FreeArena
/*
* If zero is true, zeroize the arena memory before freeing it.
*/
void
PORT_FreeArena(PLArenaPool *arena, PRBool zero)
{
PORTArenaPool *pool = (PORTArenaPool *)arena;
PRLock * lock = (PRLock *)0;
size_t len = sizeof *arena;
static PRBool checkedEnv = PR_FALSE;
static PRBool doFreeArenaPool = PR_FALSE;
if (!pool)
return;
if (ARENAPOOL_MAGIC == pool->magic ) {
len = sizeof *pool;
lock = pool->lock;
PZ_Lock(lock);
}
if (!checkedEnv) {
/* no need for thread protection here */
doFreeArenaPool = (PR_GetEnv("NSS_DISABLE_ARENA_FREE_LIST") == NULL);
checkedEnv = PR_TRUE;
}
if (zero) {
PL_ClearArenaPool(arena, 0);
}
if (doFreeArenaPool) {
PL_FreeArenaPool(arena);
} else {
PL_FinishArenaPool(arena);
}
PORT_ZFree(arena, len);
if (lock) {
PZ_Unlock(lock);
PZ_DestroyLock(lock);
}
}
开发者ID:venkatarajasekhar,项目名称:Qt,代码行数:38,代码来源:secport.c
示例11: SECMOD_SlotDestroyModule
/* we can only get here if we've destroyed the module, or some one has
* erroneously freed a slot that wasn't referenced. */
void
SECMOD_SlotDestroyModule(SECMODModule *module, PRBool fromSlot)
{
PRBool willfree = PR_FALSE;
if (fromSlot) {
PORT_Assert(module->refCount == 0);
PZ_Lock(module->refLock);
if (module->slotCount-- == 1) {
willfree = PR_TRUE;
}
PORT_Assert(willfree || (module->slotCount > 0));
PZ_Unlock(module->refLock);
if (!willfree) return;
}
if (module == pendingModule) {
pendingModule = NULL;
}
if (module->loaded) {
SECMOD_UnloadModule(module);
}
PZ_DestroyLock(module->refLock);
PORT_FreeArena(module->arena,PR_FALSE);
secmod_PrivateModuleCount--;
}
开发者ID:MekliCZ,项目名称:positron,代码行数:28,代码来源:pk11util.c
示例12: SECMOD_ReferenceModule
/*
* make a new reference to a module so It doesn't go away on us
*/
SECMODModule *
SECMOD_ReferenceModule(SECMODModule *module)
{
PZ_Lock(module->refLock);
PORT_Assert(module->refCount > 0);
module->refCount++;
PZ_Unlock(module->refLock);
return module;
}
开发者ID:MekliCZ,项目名称:positron,代码行数:13,代码来源:pk11util.c
示例13: PK11_ExitContextMonitor
void
PK11_ExitContextMonitor(PK11Context *cx) {
/* if we own the session and our slot is ThreadSafe, only monitor
* the Context */
if ((cx->ownSession) && (cx->slot->isThreadSafe)) {
/* Should this use monitors instead? */
PZ_Unlock(cx->sessionLock);
} else {
PK11_ExitSlotMonitor(cx->slot);
}
}
开发者ID:rhencke,项目名称:mozilla-cvs-history,代码行数:11,代码来源:pk11cxt.c
示例14: nssCertificateStore_DumpStoreInfo
NSS_IMPLEMENT void
nssCertificateStore_DumpStoreInfo (
nssCertificateStore *store,
void (* cert_dump_iter)(const void *, void *, void *),
void *arg
)
{
PZ_Lock(store->lock);
nssHash_Iterate(store->issuer_and_serial, cert_dump_iter, arg);
PZ_Unlock(store->lock);
}
开发者ID:dimitrianoudi,项目名称:Jaxer,代码行数:11,代码来源:pkistore.c
示例15: PORT_ArenaUnmark
void
PORT_ArenaUnmark(PLArenaPool *arena, void *mark)
{
#ifdef THREADMARK
PORTArenaPool *pool = (PORTArenaPool *)arena;
if (ARENAPOOL_MAGIC == pool->magic ) {
threadmark_mark **pw, *tm;
PZ_Lock(pool->lock);
if (PR_GetCurrentThread() != pool->marking_thread ) {
PZ_Unlock(pool->lock);
PORT_SetError(SEC_ERROR_NO_MEMORY);
PORT_Assert(0);
return /* no error indication available */ ;
}
pw = &pool->first_mark;
while( ((threadmark_mark *)NULL != *pw) && (mark != (*pw)->mark) ) {
pw = &(*pw)->next;
}
if ((threadmark_mark *)NULL == *pw ) {
/* bad mark */
PZ_Unlock(pool->lock);
PORT_SetError(SEC_ERROR_NO_MEMORY);
PORT_Assert(0);
return /* no error indication available */ ;
}
tm = *pw;
*pw = (threadmark_mark *)NULL;
if (! pool->first_mark ) {
pool->marking_thread = (PRThread *)NULL;
}
PZ_Unlock(pool->lock);
}
#endif /* THREADMARK */
}
开发者ID:dimitrianoudi,项目名称:Jaxer,代码行数:41,代码来源:secport.c
示例16: PORT_ArenaAlloc
void *
PORT_ArenaAlloc(PLArenaPool *arena, size_t size)
{
void *p = NULL;
PORTArenaPool *pool = (PORTArenaPool *)arena;
if (size <= 0) {
size = 1;
}
if (size > MAX_SIZE) {
/* you lose. */
} else
/* Is it one of ours? Assume so and check the magic */
if (ARENAPOOL_MAGIC == pool->magic ) {
PZ_Lock(pool->lock);
#ifdef THREADMARK
/* Most likely one of ours. Is there a thread id? */
if (pool->marking_thread &&
pool->marking_thread != PR_GetCurrentThread() ) {
/* Another thread holds a mark in this arena */
PZ_Unlock(pool->lock);
PORT_SetError(SEC_ERROR_NO_MEMORY);
PORT_Assert(0);
return NULL;
} /* tid != null */
#endif /* THREADMARK */
PL_ARENA_ALLOCATE(p, arena, size);
PZ_Unlock(pool->lock);
} else {
PL_ARENA_ALLOCATE(p, arena, size);
}
if (!p) {
++port_allocFailures;
PORT_SetError(SEC_ERROR_NO_MEMORY);
}
return(p);
}
开发者ID:dimitrianoudi,项目名称:Jaxer,代码行数:41,代码来源:secport.c
示例17: sftkdb_decrypt_stub
/*
* stub files for legacy db's to be able to encrypt and decrypt
* various keys and attributes.
*/
static SECStatus
sftkdb_decrypt_stub(SDB *sdb, SECItem *cipherText, SECItem **plainText)
{
SFTKDBHandle *handle = sdb->app_private;
SECStatus rv;
SECItem *oldKey = NULL;
if (handle == NULL) {
return SECFailure;
}
/* if we aren't th handle, try the other handle */
oldKey = handle->oldKey;
if (handle->type != SFTK_KEYDB_TYPE) {
handle = handle->peerDB;
}
/* not a key handle */
if (handle == NULL || handle->passwordLock == NULL) {
return SECFailure;
}
PZ_Lock(handle->passwordLock);
if (handle->passwordKey.data == NULL) {
PZ_Unlock(handle->passwordLock);
/* PORT_SetError */
return SECFailure;
}
#if defined(PKCS11_DB_DATA_KEY_USE_KEYSTORE) || defined(PKCS11_DB_DATA_KEY_USE_KEYCHAIN)
rv = sftkdb_DecryptAttributeByDbDataKey(
cipherText, plainText);
#else
rv = sftkdb_DecryptAttribute( oldKey ? oldKey : &handle->passwordKey,
cipherText, plainText);
#endif
PZ_Unlock(handle->passwordLock);
return rv;
}
开发者ID:stoneskill,项目名称:mix-n2,代码行数:45,代码来源:lgglue.c
示例18: nssCertificateStore_Unlock
NSS_IMPLEMENT void
nssCertificateStore_Unlock (
nssCertificateStore *store, nssCertificateStoreTrace* in,
nssCertificateStoreTrace* out
)
{
#ifdef DEBUG
PORT_Assert(in);
PORT_Assert(out);
out->store = store;
out->lock = store->lock;
out->unlocked = PR_TRUE;
PORT_Assert(in->store == out->store);
PORT_Assert(in->lock == out->lock);
PORT_Assert(in->locked);
PZ_Unlock(out->lock);
#else
PZ_Unlock(store->lock);
#endif
}
开发者ID:dimitrianoudi,项目名称:Jaxer,代码行数:22,代码来源:pkistore.c
示例19: thread_wrapper
void
thread_wrapper(void *arg)
{
perThread *slot = (perThread *)arg;
slot->rv = (*slot->startFunc)(slot->a, slot->b, slot->c);
/* notify the thread exit handler. */
PZ_Lock(qLock);
slot->state = rs_zombie;
--threadCount;
PZ_NotifyAllCondVar(threadCountChangeCv);
PZ_Unlock(qLock);
}
开发者ID:MichaelKohler,项目名称:gecko-dev,代码行数:14,代码来源:httpserv.c
示例20: PORT_FreeArena
/*
* If zero is true, zeroize the arena memory before freeing it.
*/
void
PORT_FreeArena(PLArenaPool *arena, PRBool zero)
{
PORTArenaPool *pool = (PORTArenaPool *)arena;
PRLock * lock = (PRLock *)0;
size_t len = sizeof *arena;
extern const PRVersionDescription * libVersionPoint(void);
static const PRVersionDescription * pvd;
static PRBool doFreeArenaPool = PR_FALSE;
if (ARENAPOOL_MAGIC == pool->magic ) {
len = sizeof *pool;
lock = pool->lock;
PZ_Lock(lock);
}
if (!pvd) {
/* Each of NSPR's DLLs has a function libVersionPoint().
** We could do a lot of extra work to be sure we're calling the
** one in the DLL that holds PR_FreeArenaPool, but instead we
** rely on the fact that ALL NSPR DLLs in the same directory
** must be from the same release, and we call which ever one we get.
*/
/* no need for thread protection here */
pvd = libVersionPoint();
if ((pvd->vMajor > 4) ||
(pvd->vMajor == 4 && pvd->vMinor > 1) ||
(pvd->vMajor == 4 && pvd->vMinor == 1 && pvd->vPatch >= 1)) {
const char *ev = PR_GetEnv("NSS_DISABLE_ARENA_FREE_LIST");
if (!ev) doFreeArenaPool = PR_TRUE;
}
}
if (zero) {
PLArena *a;
for (a = arena->first.next; a; a = a->next) {
PR_ASSERT(a->base <= a->avail && a->avail <= a->limit);
memset((void *)a->base, 0, a->avail - a->base);
}
}
if (doFreeArenaPool) {
PL_FreeArenaPool(arena);
} else {
PL_FinishArenaPool(arena);
}
PORT_ZFree(arena, len);
if (lock) {
PZ_Unlock(lock);
PZ_DestroyLock(lock);
}
}
开发者ID:dimitrianoudi,项目名称:Jaxer,代码行数:52,代码来源:secport.c
注:本文中的PZ_Unlock函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论