+KeSetEvent()
authorshort <>
Wed, 6 Nov 2002 13:59:08 +0000 (13:59 +0000)
committershort <>
Wed, 6 Nov 2002 13:59:08 +0000 (13:59 +0000)
src/libcaptive/ke/event.c

index a3175e1..545509a 100644 (file)
 
 #include "reactos/ddk/kefuncs.h"       /* self */
 #include <glib/gmessages.h>
+#include "reactos/ddk/exfuncs.h"       /* for InterlockedExchange() */
 
 
 /**
  * KeInitializeEvent:
  * @Event: Event to initialize.
+ * %NULL value is forbidden.
  * @Type: %NotificationEvent or %SynchronizationEvent.
- * @State: Initial state.
+ * @State: Initial signal state.
  *
  * Initalizes a kernel event. Currently libcaptive doesn't use multithreading
  * and thus this function is a NOP now.
@@ -39,3 +41,25 @@ VOID KeInitializeEvent(PKEVENT Event,EVENT_TYPE Type,BOOLEAN State)
 
        /* TODO:thread */
 }
+
+
+/**
+ * KeSetEvent:
+ * @Event: Event to set its signal state on.
+ * %NULL value is forbidden.
+ * @Increment: Thread priority increase during wait; ignored by libcaptive.
+ * @Wait: Do not release locks, KeWait() is required afterwards; ignored by libcaptive.
+ *
+ * Sets the signal state of @Event. Currently libcaptive doesn't use multithreading
+ * and thus this function will just set the @Event's internal state and it returns
+ * the previous value.
+ *
+ * Returns: Previous signal state value of @Event.
+ */
+LONG KeSetEvent(PKEVENT Event,KPRIORITY Increment,BOOLEAN Wait)
+{
+       g_return_val_if_fail(Event!=NULL,0);
+
+       /* TODO:thread */
+       return InterlockedExchange(&(Event->Header.SignalState),1);
+}