Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*****************************************************************************
* Copyright (c) 1998-2001 Microsoft Corporation, All Rights Reserved
*
* All Rights Reserved
*
* This software is furnished under a license and may be used and copied
* only in accordance with the terms of such license and with the inclusion
* of the above copyright notice. This software or any other copies thereof
* may not be provided or otherwise made available to any other person. No
* title to and ownership of the software is hereby transferred.
*****************************************************************************/
//============================================================================
//
// CCriticalSec.cpp -- Critical Section Wrapper
//
// Copyright (c) 1998-2002 Microsoft Corporation, All Rights Reserved
//
// Revisions: 6/26/98 a-kevhu Created
//
//============================================================================
#include "precomp.h"
#include "CCriticalSec.h"
DWORD BreakOnDbgAndRenterLoop(void) { __try { DebugBreak(); } _except (EXCEPTION_EXECUTE_HANDLER) {}; return EXCEPTION_CONTINUE_EXECUTION; };
BOOL CStaticCritSec::anyFailed_ = FALSE;
CStaticCritSec::CStaticCritSec(): initialized_(false) { InitializeCriticalSectionAndSpinCount(this,0)?(initialized_ = true) :(anyFailed_ = TRUE); } CStaticCritSec::~CStaticCritSec() { if(initialized_) DeleteCriticalSection(this); }
void CStaticCritSec::Enter() { __try { EnterCriticalSection(this); } __except((STATUS_POSSIBLE_DEADLOCK == GetExceptionCode())? BreakOnDbgAndRenterLoop():EXCEPTION_CONTINUE_SEARCH) { } }
void CStaticCritSec::Leave() { LeaveCriticalSection(this); }
BOOL CStaticCritSec::anyFailure() { return anyFailed_; };
void CStaticCritSec::SetFailure() { anyFailed_ = TRUE; };
|