|
|
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: prlock.h ! 37: ** Description: API to basic locking functions of NSPR. ! 38: ** ! 39: ** ! 40: ** NSPR provides basic locking mechanisms for thread synchronization. Locks ! 41: ** are lightweight resource contention controls that prevent multiple threads ! 42: ** from accessing something (code/data) simultaneously. ! 43: **/ ! 44: ! 45: #ifndef prlock_h___ ! 46: #define prlock_h___ ! 47: ! 48: #include "prtypes.h" ! 49: ! 50: PR_BEGIN_EXTERN_C ! 51: ! 52: /**********************************************************************/ ! 53: /************************* TYPES AND CONSTANTS ************************/ ! 54: /**********************************************************************/ ! 55: ! 56: /* ! 57: * PRLock -- ! 58: * ! 59: * NSPR represents the lock as an opaque entity to the client of the ! 60: * API. All routines operate on a pointer to this opaque entity. ! 61: */ ! 62: ! 63: typedef struct PRLock PRLock; ! 64: ! 65: /**********************************************************************/ ! 66: /****************************** FUNCTIONS *****************************/ ! 67: /**********************************************************************/ ! 68: ! 69: /*********************************************************************** ! 70: ** FUNCTION: PR_NewLock ! 71: ** DESCRIPTION: ! 72: ** Returns a pointer to a newly created opaque lock object. ! 73: ** INPUTS: void ! 74: ** OUTPUTS: void ! 75: ** RETURN: PRLock* ! 76: ** If the lock can not be created because of resource constraints, NULL ! 77: ** is returned. ! 78: ** ! 79: ***********************************************************************/ ! 80: NSPR_API(PRLock*) PR_NewLock(void); ! 81: ! 82: /*********************************************************************** ! 83: ** FUNCTION: PR_DestroyLock ! 84: ** DESCRIPTION: ! 85: ** Destroys a given opaque lock object. ! 86: ** INPUTS: PRLock *lock ! 87: ** Lock to be freed. ! 88: ** OUTPUTS: void ! 89: ** RETURN: None ! 90: ***********************************************************************/ ! 91: NSPR_API(void) PR_DestroyLock(PRLock *lock); ! 92: ! 93: /*********************************************************************** ! 94: ** FUNCTION: PR_Lock ! 95: ** DESCRIPTION: ! 96: ** Lock a lock. ! 97: ** INPUTS: PRLock *lock ! 98: ** Lock to locked. ! 99: ** OUTPUTS: void ! 100: ** RETURN: None ! 101: ***********************************************************************/ ! 102: NSPR_API(void) PR_Lock(PRLock *lock); ! 103: ! 104: /*********************************************************************** ! 105: ** FUNCTION: PR_Unlock ! 106: ** DESCRIPTION: ! 107: ** Unlock a lock. Unlocking an unlocked lock has undefined results. ! 108: ** INPUTS: PRLock *lock ! 109: ** Lock to unlocked. ! 110: ** OUTPUTS: void ! 111: ** RETURN: PR_STATUS ! 112: ** Returns PR_FAILURE if the caller does not own the lock. ! 113: ***********************************************************************/ ! 114: NSPR_API(PRStatus) PR_Unlock(PRLock *lock); ! 115: ! 116: PR_END_EXTERN_C ! 117: ! 118: #endif /* prlock_h___ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.