mirror of https://github.com/tongzx/nt5src
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.
82 lines
2.1 KiB
82 lines
2.1 KiB
/*****************************************************************************\
|
|
* 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
|