1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/nsprpub/pr/include/prrwlock.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,88 @@ 1.4 +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 +/* 1.10 +** File: prrwlock.h 1.11 +** Description: API to basic reader-writer lock functions of NSPR. 1.12 +** 1.13 +**/ 1.14 + 1.15 +#ifndef prrwlock_h___ 1.16 +#define prrwlock_h___ 1.17 + 1.18 +#include "prtypes.h" 1.19 + 1.20 +PR_BEGIN_EXTERN_C 1.21 + 1.22 +/* 1.23 + * PRRWLock -- 1.24 + * 1.25 + * The reader writer lock, PRRWLock, is an opaque object to the clients 1.26 + * of NSPR. All routines operate on a pointer to this opaque entity. 1.27 + */ 1.28 + 1.29 + 1.30 +typedef struct PRRWLock PRRWLock; 1.31 + 1.32 +#define PR_RWLOCK_RANK_NONE 0 1.33 + 1.34 + 1.35 +/*********************************************************************** 1.36 +** FUNCTION: PR_NewRWLock 1.37 +** DESCRIPTION: 1.38 +** Returns a pointer to a newly created reader-writer lock object. 1.39 +** INPUTS: Lock rank 1.40 +** Lock name 1.41 +** OUTPUTS: void 1.42 +** RETURN: PRRWLock* 1.43 +** If the lock cannot be created because of resource constraints, NULL 1.44 +** is returned. 1.45 +** 1.46 +***********************************************************************/ 1.47 +NSPR_API(PRRWLock*) PR_NewRWLock(PRUint32 lock_rank, const char *lock_name); 1.48 + 1.49 +/*********************************************************************** 1.50 +** FUNCTION: PR_DestroyRWLock 1.51 +** DESCRIPTION: 1.52 +** Destroys a given RW lock object. 1.53 +** INPUTS: PRRWLock *lock - Lock to be freed. 1.54 +** OUTPUTS: void 1.55 +** RETURN: None 1.56 +***********************************************************************/ 1.57 +NSPR_API(void) PR_DestroyRWLock(PRRWLock *lock); 1.58 + 1.59 +/*********************************************************************** 1.60 +** FUNCTION: PR_RWLock_Rlock 1.61 +** DESCRIPTION: 1.62 +** Apply a read lock (non-exclusive) on a RWLock 1.63 +** INPUTS: PRRWLock *lock - Lock to be read-locked. 1.64 +** OUTPUTS: void 1.65 +** RETURN: None 1.66 +***********************************************************************/ 1.67 +NSPR_API(void) PR_RWLock_Rlock(PRRWLock *lock); 1.68 + 1.69 +/*********************************************************************** 1.70 +** FUNCTION: PR_RWLock_Wlock 1.71 +** DESCRIPTION: 1.72 +** Apply a write lock (exclusive) on a RWLock 1.73 +** INPUTS: PRRWLock *lock - Lock to write-locked. 1.74 +** OUTPUTS: void 1.75 +** RETURN: None 1.76 +***********************************************************************/ 1.77 +NSPR_API(void) PR_RWLock_Wlock(PRRWLock *lock); 1.78 + 1.79 +/*********************************************************************** 1.80 +** FUNCTION: PR_RWLock_Unlock 1.81 +** DESCRIPTION: 1.82 +** Release a RW lock. Unlocking an unlocked lock has undefined results. 1.83 +** INPUTS: PRRWLock *lock - Lock to unlocked. 1.84 +** OUTPUTS: void 1.85 +** RETURN: void 1.86 +***********************************************************************/ 1.87 +NSPR_API(void) PR_RWLock_Unlock(PRRWLock *lock); 1.88 + 1.89 +PR_END_EXTERN_C 1.90 + 1.91 +#endif /* prrwlock_h___ */