+++ /dev/null
-/*
- * PROJECT: ReactOS TDI driver
- * LICENSE: GPL - See COPYING in the top level directory
- * FILE: drivers/network/tdi/cte/timer.c
- * PURPOSE: CTE timer support
- * PROGRAMMERS: Oleg Baikalow (obaikalow@gmail.com)
- */
-
-/* INCLUDES *****************************************************************/
-
-#include "precomp.h"
-
-/* FIXME: Move to a common header! */
-struct _CTE_DELAYED_EVENT;
-typedef void (*CTE_WORKER_ROUTINE)(struct _CTE_DELAYED_EVENT *, void *Context);
-
-typedef struct _CTE_TIMER
-{
- BOOLEAN Queued;
- KSPIN_LOCK Lock;
- CTE_WORKER_ROUTINE Callback;
- PVOID Context;
- KDPC Dpc;
- KTIMER Timer;
-} CTE_TIMER, *PCTE_TIMER;
-
-LONG CteTimeIncrement;
-
-/* FUNCTIONS *****************************************************************/
-
-VOID
-NTAPI
-InternalDpcRoutine(PKDPC Dpc,
- PVOID Context,
- PVOID SystemArgument1,
- PVOID SystemArgument2)
-{
- PCTE_TIMER Timer = (PCTE_TIMER)Context;
-
- /* Call our registered callback */
- Timer->Callback((struct _CTE_DELAYED_EVENT *)Timer, Timer->Context);
-}
-
-/*
- * @implemented
- */
-VOID
-NTAPI
-CTEInitTimer(PCTE_TIMER Timer)
-{
- /* Zero all fields */
- RtlZeroMemory(Timer, sizeof(CTE_TIMER));
-
- /* Create a DPC and a timer */
- KeInitializeDpc(&Timer->Dpc, InternalDpcRoutine, Timer);
- KeInitializeTimer(&Timer->Timer);
-}
-
-/*
- * @implemented
- */
-BOOLEAN
-NTAPI
-CTEStartTimer(PCTE_TIMER Timer,
- ULONG DueTimeShort,
- CTE_WORKER_ROUTINE Callback,
- PVOID Context)
-{
- LARGE_INTEGER DueTime;
-
- /* Make sure a callback was provided */
- ASSERT(Callback);
-
- /* We need to convert due time, because DueTimeShort is in ms,
- but NT timer expects 100s of ns, negative one */
- DueTime.QuadPart = -Int32x32To64(DueTimeShort, 10000);
-
- /* Set other timer members */
- Timer->Callback = Callback;
- Timer->Context = Context;
-
- /* Set the timer */
- KeSetTimer(&Timer->Timer, DueTime, &Timer->Dpc);
-
- return TRUE;
-}
-
-
-/*
- * @implemented
- */
-ULONG
-NTAPI
-CTESystemUpTime(VOID)
-{
- LARGE_INTEGER Ticks;
-
- /* Get the tick count */
- KeQueryTickCount(&Ticks);
-
- /* Convert to 100s of ns and then to ms*/
- Ticks.QuadPart = (Ticks.QuadPart * CteTimeIncrement) / 10000ULL;
-
- return Ticks.LowPart;
-}
-
-/*
- * @implemented
- */
-BOOLEAN
-NTAPI
-CTEInitialize(VOID)
-{
- /* Just return success */
- return TRUE;
-}
-
-/* EOF */