update for HEAD-2003091401
[reactos.git] / drivers / net / ndis / ndis / time.c
1 /*
2  * COPYRIGHT:   See COPYING in the top level directory
3  * PROJECT:     ReactOS NDIS library
4  * FILE:        ndis/time.c
5  * PURPOSE:     Time related routines
6  * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
7  * REVISIONS:
8  *   CSH 01/08-2000 Created
9  */
10 #include <ndissys.h>
11
12
13 VOID STDCALL
14 MiniportTimerDpc(
15     PKDPC Dpc,
16     PVOID DeferredContext,
17     PVOID SystemArgument1,
18     PVOID SystemArgument2)
19 {
20     PNDIS_MINIPORT_TIMER Timer;
21
22     Timer = (PNDIS_MINIPORT_TIMER)DeferredContext;
23
24     Timer->MiniportTimerFunction (NULL, Timer->MiniportTimerContext, NULL, NULL);
25 }
26
27
28 /*
29  * @implemented
30  */
31 VOID
32 EXPORT
33 NdisCancelTimer(
34     IN  PNDIS_TIMER Timer,
35     OUT PBOOLEAN    TimerCancelled)
36 {
37     *TimerCancelled = KeCancelTimer (&Timer->Timer);
38 }
39
40
41 /*
42  * @implemented
43  */
44 VOID
45 EXPORT
46 NdisGetCurrentSystemTime (
47     IN  OUT PLARGE_INTEGER   pSystemTime)
48 {
49     KeQuerySystemTime (pSystemTime);
50 }
51
52
53 /*
54  * @implemented
55  */
56 VOID
57 EXPORT
58 NdisInitializeTimer(
59     IN OUT  PNDIS_TIMER             Timer,
60     IN      PNDIS_TIMER_FUNCTION    TimerFunction,
61     IN      PVOID                   FunctionContext)
62 {
63     KeInitializeTimer (&Timer->Timer);
64
65     KeInitializeDpc (&Timer->Dpc, (PKDEFERRED_ROUTINE)TimerFunction, FunctionContext);
66 }
67
68
69 /*
70  * @implemented
71  */
72 VOID
73 EXPORT
74 NdisMCancelTimer(
75     IN  PNDIS_MINIPORT_TIMER    Timer,
76     OUT PBOOLEAN                TimerCancelled)
77 {
78     *TimerCancelled = KeCancelTimer (&Timer->Timer);
79 }
80
81
82 /*
83  * @implemented
84  */
85 VOID
86 EXPORT
87 NdisMInitializeTimer(
88     IN OUT  PNDIS_MINIPORT_TIMER    Timer,
89     IN      NDIS_HANDLE             MiniportAdapterHandle,
90     IN      PNDIS_TIMER_FUNCTION    TimerFunction,
91     IN      PVOID                   FunctionContext)
92 {
93     KeInitializeTimer (&Timer->Timer);
94
95     KeInitializeDpc (&Timer->Dpc, MiniportTimerDpc, (PVOID) Timer);
96
97     Timer->MiniportTimerFunction = TimerFunction;
98     Timer->MiniportTimerContext = FunctionContext;
99     Timer->Miniport = MiniportAdapterHandle;
100 }
101
102
103 /*
104  * @implemented
105  */
106 VOID
107 EXPORT
108 NdisMSetPeriodicTimer(
109     IN  PNDIS_MINIPORT_TIMER    Timer,
110     IN  UINT                    MillisecondsPeriod)
111 {
112     LARGE_INTEGER Timeout;
113
114     Timeout.QuadPart = MillisecondsPeriod * -10000;
115
116     KeSetTimerEx (&Timer->Timer, Timeout, MillisecondsPeriod, &Timer->Dpc);
117 }
118
119
120 /*
121  * @implemented
122  */
123 VOID
124 EXPORT
125 NdisMSetTimer(
126     IN  PNDIS_MINIPORT_TIMER    Timer,
127     IN  UINT                    MillisecondsToDelay)
128 {
129     LARGE_INTEGER Timeout;
130
131     Timeout.QuadPart = MillisecondsToDelay * -10000;
132
133     KeSetTimer (&Timer->Timer, Timeout, &Timer->Dpc);
134 }
135
136
137 /*
138  * @implemented
139  */
140 VOID
141 EXPORT
142 NdisSetTimer(
143     IN  PNDIS_TIMER Timer,
144     IN  UINT        MillisecondsToDelay)
145 {
146     LARGE_INTEGER Timeout;
147
148     Timeout.QuadPart = MillisecondsToDelay * -10000;
149
150     KeSetTimer (&Timer->Timer, Timeout, &Timer->Dpc);
151 }
152
153 /* EOF */