00001 /* 00002 Copyright (c) 2001, John Lambert jlambert@jlambert.com 00003 All rights reserved. 00004 00005 Redistribution and use in source and binary forms, with or without modification, are 00006 permitted provided that the following conditions are met: 00007 00008 Redistributions of source code must retain the above copyright notice, this list of 00009 conditions and the following disclaimer. 00010 00011 Redistributions in binary form must reproduce the above copyright notice, this list 00012 of conditions and the following disclaimer in the documentation and/or other 00013 materials provided with the distribution. 00014 00015 Neither the name of the xdProf project nor the names of its contributors may be used 00016 to endorse or promote products derived from this software without specific prior 00017 written permission. 00018 00019 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 00020 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 00021 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 00022 SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00023 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00024 PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 00025 BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00026 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY 00027 WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00028 */ 00029 /* 00030 $Header: /xdprof-dll/monitors.h 3 5/07/01 12:03a Admin $ 00031 */ 00032 #ifndef _MONITORS_H_ 00033 #define _MONITORS_H_ 00034 00035 #if _MSC_VER > 1000 00036 #pragma once 00037 #endif // _MSC_VER > 1000 00038 00039 00040 #include "global.h" 00041 00042 extern JVMPI_RawMonitor output_lock; 00043 extern JVMPI_RawMonitor methods_lock; 00044 extern JVMPI_RawMonitor threads_lock; 00045 00047 void InitializeMonitors(); 00048 00050 void ShutdownMonitors(); 00051 00056 inline void Lock(const JVMPI_RawMonitor & monitor) 00057 { 00058 CALL(RawMonitorEnter)(monitor); 00059 } 00060 00065 inline void Unlock(const JVMPI_RawMonitor & monitor) 00066 { 00067 CALL(RawMonitorExit)(monitor); 00068 } 00069 00070 #endif // _MONITORS_H_