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)
11 /* INCLUDES *****************************************************************/
13 #include <ddk/ntddk.h>
14 #include <internal/ke.h>
17 #include <internal/debug.h>
19 /* FUNCTIONS ****************************************************************/
21 VOID
KeClearEvent(PKEVENT Event
)
23 Event
->Header
.SignalState
=FALSE
;
26 VOID
KeInitializeEvent(PKEVENT Event
, EVENT_TYPE Type
, BOOLEAN State
)
28 KeInitializeDispatcherHeader(&(Event
->Header
),Type
,
29 sizeof(Event
)/sizeof(ULONG
),State
);
30 InitializeListHead(&(Event
->Header
.WaitListHead
));
33 LONG
KeReadStateEvent(PKEVENT Event
)
35 return(Event
->Header
.SignalState
);
38 LONG
KeResetEvent(PKEVENT Event
)
40 return(InterlockedExchange(&(Event
->Header
.SignalState
),0));
43 LONG
KeSetEvent(PKEVENT Event
, KPRIORITY Increment
, BOOLEAN Wait
)
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
);