Source code of Windows XP (NT5)
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.
|
|
/*****************************************************************************\
* MODULE: sem.h * * Header file for the semaphore/crit-sect handling. * * * Copyright (C) 1996-1997 Microsoft Corporation * Copyright (C) 1996-1997 Hewlett Packard * * History: * 24-Aug-1997 HWP-Guys Created. * \*****************************************************************************/ #ifndef _INETPPSEM_H
#define _INETPPSEM_H
#ifdef DEBUG
/*****************************************************************************\
* _sem_dbg_EnterCrit * \*****************************************************************************/ _inline VOID _sem_dbg_EnterCrit(VOID) { EnterCriticalSection(&g_csMonitorSection);
g_dwCritOwner = GetCurrentThreadId(); }
/*****************************************************************************\
* _sem_dbg_LeaveCrit * \*****************************************************************************/ _inline VOID _sem_dbg_LeaveCrit(VOID) { g_dwCritOwner = 0;
LeaveCriticalSection(&g_csMonitorSection); }
/*****************************************************************************\
* _sem_dbg_CheckCrit * \*****************************************************************************/ _inline VOID _sem_dbg_CheckCrit(VOID) { DWORD dwCurrent = GetCurrentThreadId();
DBG_ASSERT((dwCurrent == g_dwCritOwner), (TEXT("Assert: _sem_dbg_CheckCrit: Thread(%d), Owner(%d)"), dwCurrent, g_dwCritOwner)); }
#define semEnterCrit() _sem_dbg_EnterCrit()
#define semLeaveCrit() _sem_dbg_LeaveCrit()
#define semCheckCrit() _sem_dbg_CheckCrit()
#else
#define semEnterCrit() EnterCriticalSection(&g_csMonitorSection)
#define semLeaveCrit() LeaveCriticalSection(&g_csMonitorSection)
#define semCheckCrit() {}
#endif
#define semInitCrit() InitializeCriticalSection(&g_csMonitorSection)
#define semFreeCrit() DeleteCriticalSection(&g_csMonitorSection)
_inline VOID semSafeLeaveCrit(PCINETMONPORT pIniPort) { pIniPort->IncRef (); semLeaveCrit(); }
_inline VOID semSafeEnterCrit(PCINETMONPORT pIniPort) {
pIniPort->DecRef (); semEnterCrit(); }
#endif
|