LCOV - code coverage report
Current view: top level - nsprpub/pr/include - prolock.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 4 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 4 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
       2             : /* This Source Code Form is subject to the terms of the Mozilla Public
       3             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       4             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       5             : 
       6             : #ifndef prolock_h___
       7             : #define prolock_h___
       8             : 
       9             : #include "prtypes.h"
      10             : 
      11             : PR_BEGIN_EXTERN_C
      12             : 
      13             : /*
      14             : ** A locking mechanism, built on the existing PRLock definition,
      15             : ** is provided that will permit applications to define a Lock
      16             : ** Hierarchy (or Lock Ordering) schema. An application designed
      17             : ** using the Ordered Lock functions will terminate with a
      18             : ** diagnostic message when a lock inversion condition is
      19             : ** detected. 
      20             : ** 
      21             : ** The lock ordering detection is compile-time enabled only. In
      22             : ** optimized builds of NSPR, the Ordered Lock functions map
      23             : ** directly to PRLock functions, providing no lock order
      24             : ** detection.
      25             : ** 
      26             : ** The Ordered Lock Facility is compiled in when DEBUG is defined at
      27             : ** compile-time. Ordered Lock can be forced on in optimized builds by
      28             : ** defining FORCE_NSPR_ORDERED_LOCK at compile-time. Both the
      29             : ** application using Ordered Lock and NSPR must be compiled with the
      30             : ** facility enabled to achieve the desired results.
      31             : ** 
      32             : ** Application designers should use the macro interfaces to the Ordered
      33             : ** Lock facility to ensure that it is compiled out in optimized builds.
      34             : **
      35             : ** Application designers are responsible for defining their own
      36             : ** lock hierarchy. 
      37             : **
      38             : ** Ordered Lock is thread-safe and SMP safe.
      39             : **
      40             : ** See Also: prlock.h
      41             : **
      42             : ** /lth. 10-Jun-1998.
      43             : **
      44             : */
      45             : 
      46             : /*
      47             : ** Opaque type for ordered lock.
      48             : ** ... Don't even think of looking in here.
      49             : **
      50             : */
      51             : 
      52             : #if defined(DEBUG) || defined(FORCE_NSPR_ORDERED_LOCKS)
      53             : typedef void * PROrderedLock;
      54             : #else
      55             : /*
      56             : ** Map PROrderedLock and methods onto PRLock when ordered locking
      57             : ** is not compiled in.
      58             : **  
      59             : */
      60             : #include "prlock.h"
      61             : 
      62             : typedef PRLock PROrderedLock;
      63             : #endif
      64             : 
      65             : /* -----------------------------------------------------------------------
      66             : ** FUNCTION: PR_CreateOrderedLock() -- Create an Ordered Lock
      67             : ** 
      68             : ** DESCRIPTION: PR_CreateOrderedLock() creates an ordered lock.
      69             : ** 
      70             : ** INPUTS:
      71             : **  order: user defined order of this lock.
      72             : **  name: name of the lock. For debugging purposes.
      73             : ** 
      74             : ** OUTPUTS: returned
      75             : ** 
      76             : ** RETURNS: PR_OrderedLock pointer
      77             : ** 
      78             : ** RESTRICTIONS:
      79             : ** 
      80             : */
      81             : #if defined(DEBUG) || defined(FORCE_NSPR_ORDERED_LOCKS)
      82             : #define PR_CREATE_ORDERED_LOCK(order,name)\
      83             :     PR_CreateOrderedLock((order),(name))
      84             : #else
      85             : #define PR_CREATE_ORDERED_LOCK(order) PR_NewLock()
      86             : #endif
      87             : 
      88             : NSPR_API(PROrderedLock *) 
      89           0 :     PR_CreateOrderedLock( 
      90             :         PRInt32 order,
      91             :         const char *name
      92             : );
      93             : 
      94             : /* -----------------------------------------------------------------------
      95             : ** FUNCTION: PR_DestroyOrderedLock() -- Destroy an Ordered Lock
      96             : ** 
      97             : ** DESCRIPTION: PR_DestroyOrderedLock() destroys the ordered lock
      98             : ** referenced by lock.
      99             : ** 
     100             : ** INPUTS: lock: pointer to a PROrderedLock
     101             : ** 
     102             : ** OUTPUTS: the lock is destroyed
     103             : ** 
     104             : ** RETURNS: void
     105             : ** 
     106             : ** RESTRICTIONS:
     107             : ** 
     108             : */
     109             : #if defined(DEBUG) || defined(FORCE_NSPR_ORDERED_LOCKS)
     110             : #define PR_DESTROY_ORDERED_LOCK(lock) PR_DestroyOrderedLock((lock))
     111             : #else
     112             : #define PR_DESTROY_ORDERED_LOCK(lock) PR_DestroyLock((lock))
     113             : #endif
     114             : 
     115             : NSPR_API(void) 
     116           0 :     PR_DestroyOrderedLock( 
     117             :         PROrderedLock *lock 
     118             : );
     119             : 
     120             : /* -----------------------------------------------------------------------
     121             : ** FUNCTION: PR_LockOrderedLock() -- Lock an ordered lock
     122             : ** 
     123             : ** DESCRIPTION: PR_LockOrderedLock() locks the ordered lock
     124             : ** referenced by lock. If the order of lock is less than or equal
     125             : ** to the order of the highest lock held by the locking thread,
     126             : ** the function asserts.
     127             : ** 
     128             : ** INPUTS: lock: a pointer to a PROrderedLock
     129             : ** 
     130             : ** OUTPUTS: The lock is held or the function asserts.
     131             : ** 
     132             : ** RETURNS: void
     133             : ** 
     134             : ** RESTRICTIONS:
     135             : ** 
     136             : */
     137             : #if defined(DEBUG) || defined(FORCE_NSPR_ORDERED_LOCKS)
     138             : #define PR_LOCK_ORDERED_LOCK(lock) PR_LockOrderedLock((lock))
     139             : #else
     140             : #define PR_LOCK_ORDERED_LOCK(lock) PR_Lock((lock))
     141             : #endif
     142             : 
     143             : NSPR_API(void) 
     144           0 :     PR_LockOrderedLock( 
     145             :         PROrderedLock *lock 
     146             : );
     147             : 
     148             : /* -----------------------------------------------------------------------
     149             : ** FUNCTION: PR_UnlockOrderedLock() -- unlock and Ordered Lock
     150             : ** 
     151             : ** DESCRIPTION: PR_UnlockOrderedLock() unlocks the lock referenced
     152             : ** by lock.
     153             : ** 
     154             : ** INPUTS: lock: a pointer to a PROrderedLock
     155             : ** 
     156             : ** OUTPUTS: the lock is unlocked
     157             : ** 
     158             : ** RETURNS:
     159             : **  PR_SUCCESS
     160             : **  PR_FAILURE
     161             : ** 
     162             : ** RESTRICTIONS:
     163             : ** 
     164             : */
     165             : #if defined(DEBUG) || defined(FORCE_NSPR_ORDERED_LOCKS)
     166             : #define PR_UNLOCK_ORDERED_LOCK(lock) PR_UnlockOrderedLock((lock))
     167             : #else
     168             : #define PR_UNLOCK_ORDERED_LOCK(lock) PR_Unlock((lock))
     169             : #endif
     170             : 
     171             : NSPR_API(PRStatus) 
     172           0 :     PR_UnlockOrderedLock( 
     173             :         PROrderedLock *lock 
     174             : );
     175             : 
     176             : PR_END_EXTERN_C
     177             : 
     178             : #endif /* prolock_h___ */

Generated by: LCOV version 1.13