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>
16 #include <internal/debug.h>
18 /* FUNCTIONS ****************************************************************/
20 VOID
KeClearEvent(PKEVENT Event
)
22 Event
->Header
.SignalState
=FALSE
;
25 VOID
KeInitializeEvent(PKEVENT Event
, EVENT_TYPE Type
, BOOLEAN State
)
27 KeInitializeDispatcherHeader(&(Event
->Header
),Type
,
28 sizeof(Event
)/sizeof(ULONG
),State
);
29 InitializeListHead(&(Event
->Header
.WaitListHead
));
32 LONG
KeReadStateEvent(PKEVENT Event
)
34 return(Event
->Header
.SignalState
);
37 LONG
KeResetEvent(PKEVENT Event
)
39 return(InterlockedExchange(&(Event
->Header
.SignalState
),0));
42 LONG
KeSetEvent(PKEVENT Event
, KPRIORITY Increment
, BOOLEAN Wait
)
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
);