83 lines
2.1 KiB
C
83 lines
2.1 KiB
C
|
/*****************************************************************************\
|
||
|
* 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
|