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.
 
 
 
 
 
 

103 lines
2.7 KiB

/*++
Copyright(c) 1999-2000 Microsoft Corporation
Module Name:
brdgtimr.h
Abstract:
Ethernet MAC level bridge.
Timer implementation header
Author:
Mark Aiken
Environment:
Kernel mode driver
Revision History:
November 2000 - Original version
--*/
// ===========================================================================
//
// DECLARATIONS
//
// ===========================================================================
// Bridge timer function definition
typedef VOID (*PBRIDGE_TIMER_FUNC)(PVOID);
typedef struct _BRIDGE_TIMER
{
NDIS_TIMER Timer; // The actual timer
NDIS_EVENT Event; // Only used during final shutdown, and even then,
// only if normal cancellation of the timer fails.
// Lock protects bShuttingDown, bRunning, bCanceled, bRecurring and bInterval.
NDIS_SPIN_LOCK Lock;
BOOLEAN bShuttingDown; // TRUE if the timer is being shut down for good
BOOLEAN bRunning; // Whether the timer is currently running
BOOLEAN bCancelPending; // Whether the timer is being canceled
BOOLEAN bRecurring; // Whether the timer is recurrant
UINT Interval; // Timer interval (for use if bRecurring == TRUE)
// These fields do not change once the timer is initialized
PBRIDGE_TIMER_FUNC pFunc; // The timer function
PVOID data; // Data to pass to pFunc
} BRIDGE_TIMER, *PBRIDGE_TIMER;
// ===========================================================================
//
// PROTOTYPES
//
// ===========================================================================
VOID
BrdgInitializeTimer(
IN PBRIDGE_TIMER pTimer,
IN PBRIDGE_TIMER_FUNC pFunc,
IN PVOID data
);
VOID
BrdgSetTimer(
IN PBRIDGE_TIMER pTimer,
IN UINT interval,
IN BOOLEAN bRecurring
);
VOID
BrdgShutdownTimer(
IN PBRIDGE_TIMER pTimer
);
VOID
BrdgCancelTimer(
IN PBRIDGE_TIMER pTimer
);
// ===========================================================================
//
// INLINES
//
// ===========================================================================
//
// Returns whether a timer is currently running
//
__forceinline
BOOLEAN
BrdgTimerIsRunning(
IN PBRIDGE_TIMER pTimer
)
{
return pTimer->bRunning;
}