|
|
1.1 ! root 1: /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ ! 2: /* ! 3: * The contents of this file are subject to the Mozilla Public ! 4: * License Version 1.1 (the "License"); you may not use this file ! 5: * except in compliance with the License. You may obtain a copy of ! 6: * the License at http://www.mozilla.org/MPL/ ! 7: * ! 8: * Software distributed under the License is distributed on an "AS ! 9: * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or ! 10: * implied. See the License for the specific language governing ! 11: * rights and limitations under the License. ! 12: * ! 13: * The Original Code is the Netscape Portable Runtime (NSPR). ! 14: * ! 15: * The Initial Developer of the Original Code is Netscape ! 16: * Communications Corporation. Portions created by Netscape are ! 17: * Copyright (C) 1998-2000 Netscape Communications Corporation. All ! 18: * Rights Reserved. ! 19: * ! 20: * Contributor(s): ! 21: * ! 22: * Alternatively, the contents of this file may be used under the ! 23: * terms of the GNU General Public License Version 2 or later (the ! 24: * "GPL"), in which case the provisions of the GPL are applicable ! 25: * instead of those above. If you wish to allow use of your ! 26: * version of this file only under the terms of the GPL and not to ! 27: * allow others to use your version of this file under the MPL, ! 28: * indicate your decision by deleting the provisions above and ! 29: * replace them with the notice and other provisions required by ! 30: * the GPL. If you do not delete the provisions above, a recipient ! 31: * may use your version of this file under either the MPL or the ! 32: * GPL. ! 33: */ ! 34: ! 35: /* ! 36: ** File: prrwlock.h ! 37: ** Description: API to basic reader-writer lock functions of NSPR. ! 38: ** ! 39: **/ ! 40: ! 41: #ifndef prrwlock_h___ ! 42: #define prrwlock_h___ ! 43: ! 44: #include "prtypes.h" ! 45: ! 46: PR_BEGIN_EXTERN_C ! 47: ! 48: /* ! 49: * PRRWLock -- ! 50: * ! 51: * The reader writer lock, PRRWLock, is an opaque object to the clients ! 52: * of NSPR. All routines operate on a pointer to this opaque entity. ! 53: */ ! 54: ! 55: ! 56: typedef struct PRRWLock PRRWLock; ! 57: ! 58: #define PR_RWLOCK_RANK_NONE 0 ! 59: ! 60: ! 61: /*********************************************************************** ! 62: ** FUNCTION: PR_NewRWLock ! 63: ** DESCRIPTION: ! 64: ** Returns a pointer to a newly created reader-writer lock object. ! 65: ** INPUTS: Lock rank ! 66: ** Lock name ! 67: ** OUTPUTS: void ! 68: ** RETURN: PRRWLock* ! 69: ** If the lock cannot be created because of resource constraints, NULL ! 70: ** is returned. ! 71: ** ! 72: ***********************************************************************/ ! 73: NSPR_API(PRRWLock*) PR_NewRWLock(PRUint32 lock_rank, const char *lock_name); ! 74: ! 75: /*********************************************************************** ! 76: ** FUNCTION: PR_DestroyRWLock ! 77: ** DESCRIPTION: ! 78: ** Destroys a given RW lock object. ! 79: ** INPUTS: PRRWLock *lock - Lock to be freed. ! 80: ** OUTPUTS: void ! 81: ** RETURN: None ! 82: ***********************************************************************/ ! 83: NSPR_API(void) PR_DestroyRWLock(PRRWLock *lock); ! 84: ! 85: /*********************************************************************** ! 86: ** FUNCTION: PR_RWLock_Rlock ! 87: ** DESCRIPTION: ! 88: ** Apply a read lock (non-exclusive) on a RWLock ! 89: ** INPUTS: PRRWLock *lock - Lock to be read-locked. ! 90: ** OUTPUTS: void ! 91: ** RETURN: None ! 92: ***********************************************************************/ ! 93: NSPR_API(void) PR_RWLock_Rlock(PRRWLock *lock); ! 94: ! 95: /*********************************************************************** ! 96: ** FUNCTION: PR_RWLock_Wlock ! 97: ** DESCRIPTION: ! 98: ** Apply a write lock (exclusive) on a RWLock ! 99: ** INPUTS: PRRWLock *lock - Lock to write-locked. ! 100: ** OUTPUTS: void ! 101: ** RETURN: None ! 102: ***********************************************************************/ ! 103: NSPR_API(void) PR_RWLock_Wlock(PRRWLock *lock); ! 104: ! 105: /*********************************************************************** ! 106: ** FUNCTION: PR_RWLock_Unlock ! 107: ** DESCRIPTION: ! 108: ** Release a RW lock. Unlocking an unlocked lock has undefined results. ! 109: ** INPUTS: PRRWLock *lock - Lock to unlocked. ! 110: ** OUTPUTS: void ! 111: ** RETURN: void ! 112: ***********************************************************************/ ! 113: NSPR_API(void) PR_RWLock_Unlock(PRRWLock *lock); ! 114: ! 115: PR_END_EXTERN_C ! 116: ! 117: #endif /* prrwlock_h___ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.