This commit was generated by cvs2svn to compensate for changes in r52,
[reactos.git] / reactos / ntoskrnl / ke / event.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: ntoskrnl/ke/event.c
5 * PURPOSE: Implements events
6 * PROGRAMMER: David Welch (welch@mcmail.com)
7 * UPDATE HISTORY:
8 * Created 22/05/98
9 */
10
11 /* INCLUDES *****************************************************************/
12
13 #include <ddk/ntddk.h>
14 #include <internal/ke.h>
15
16 #define NDEBUG
17 #include <internal/debug.h>
18
19 /* FUNCTIONS ****************************************************************/
20
21 VOID KeClearEvent(PKEVENT Event)
22 {
23 Event->Header.SignalState=FALSE;
24 }
25
26 VOID KeInitializeEvent(PKEVENT Event, EVENT_TYPE Type, BOOLEAN State)
27 {
28 KeInitializeDispatcherHeader(&(Event->Header),Type,
29 sizeof(Event)/sizeof(ULONG),State);
30 InitializeListHead(&(Event->Header.WaitListHead));
31 }
32
33 LONG KeReadStateEvent(PKEVENT Event)
34 {
35 return(Event->Header.SignalState);
36 }
37
38 LONG KeResetEvent(PKEVENT Event)
39 {
40 return(InterlockedExchange(&(Event->Header.SignalState),0));
41 }
42
43 LONG KeSetEvent(PKEVENT Event, KPRIORITY Increment, BOOLEAN Wait)
44 {
45 int ret;
46
47 DPRINT("KeSetEvent(Event %x, Wait %x)\n",Event,Wait);
48 KeAcquireDispatcherDatabaseLock(Wait);
49 // ret = InterlockedExchange(&(Event->Header.SignalState),1);
50 Event->Header.SignalState=1;
51 KeDispatcherObjectWake((DISPATCHER_HEADER *)Event);
52 KeReleaseDispatcherDatabaseLock(Wait);
53 }