This commit was generated by cvs2svn to compensate for changes in r30,
[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
15 #define NDEBUG
16 #include <internal/debug.h>
17
18 /* FUNCTIONS ****************************************************************/
19
20 VOID KeClearEvent(PKEVENT Event)
21 {
22 Event->Header.SignalState=FALSE;
23 }
24
25 VOID KeInitializeEvent(PKEVENT Event, EVENT_TYPE Type, BOOLEAN State)
26 {
27 KeInitializeDispatcherHeader(&(Event->Header),Type,
28 sizeof(Event)/sizeof(ULONG),State);
29 InitializeListHead(&(Event->Header.WaitListHead));
30 }
31
32 LONG KeReadStateEvent(PKEVENT Event)
33 {
34 return(Event->Header.SignalState);
35 }
36
37 LONG KeResetEvent(PKEVENT Event)
38 {
39 return(InterlockedExchange(&(Event->Header.SignalState),0));
40 }
41
42 LONG KeSetEvent(PKEVENT Event, KPRIORITY Increment, BOOLEAN Wait)
43 {
44 int ret;
45
46 DPRINT("KeSetEvent(Event %x, Wait %x)\n",Event,Wait);
47 KeAcquireDispatcherDatabaseLock(Wait);
48 // ret = InterlockedExchange(&(Event->Header.SignalState),1);
49 Event->Header.SignalState=1;
50 KeDispatcherObjectWake((DISPATCHER_HEADER *)Event);
51 KeReleaseDispatcherDatabaseLock(Wait);
52 }