Index: /trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h
===================================================================
--- /trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h	(revision 19867)
+++ /trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h	(revision 19868)
@@ -232,5 +232,5 @@
  * @{
  */
-#define SUP_IOCTL_QUERY_FUNCS(cFuncs)                   SUP_CTL_CODE_BIG(2) 
+#define SUP_IOCTL_QUERY_FUNCS(cFuncs)                   SUP_CTL_CODE_BIG(2)
 #define SUP_IOCTL_QUERY_FUNCS_SIZE(cFuncs)              RT_UOFFSETOF(SUPQUERYFUNCS, u.Out.aFunctions[(cFuncs)])
 #define SUP_IOCTL_QUERY_FUNCS_SIZE_IN                   sizeof(SUPREQHDR)
@@ -1028,4 +1028,81 @@
 
 
+/** @name Semaphore Types
+ * @{ */
+#define SUP_SEM_TYPE_EVENT                  0
+#define SUP_SEM_TYPE_EVENT_MULTI            1
+/** @} */
+
+
+/** @name SUP_IOCTL_SEM_CREATE
+ * Create a semaphore
+ * @{
+ */
+#define SUP_IOCTL_SEM_CREATE                            SUP_CTL_CODE_SIZE(26, SUP_IOCTL_SEM_CREATE_SIZE)
+#define SUP_IOCTL_SEM_CREATE_SIZE                       sizeof(SUPSEMCREATE)
+#define SUP_IOCTL_SEM_CREATE_SIZE_IN                    sizeof(SUPSEMCREATE)
+#define SUP_IOCTL_SEM_CREATE_SIZE_OUT                   sizeof(SUPSEMCREATE)
+typedef struct SUPSEMCREATE
+{
+    /** The header. */
+    SUPREQHDR               Hdr;
+    union
+    {
+        struct
+        {
+            /** The semaphore type. */
+            uint32_t        uType;
+        } In;
+        struct
+        {
+            /** The handle of the created semaphore. */
+            uint32_t        hSem;
+        } Out;
+    } u;
+} SUPSEMCREATE, *PSUPSEMCREATE;
+
+/** @} */
+
+
+/** @name SUP_IOCTL_SEM_OP
+ * Semaphore operations.
+ * @{
+ */
+#define SUP_IOCTL_SEM_OP                                SUP_CTL_CODE_SIZE(27, SUP_IOCTL_SEM_OP_SIZE)
+#define SUP_IOCTL_SEM_OP_SIZE                           sizeof(SUPSEMOP)
+#define SUP_IOCTL_SEM_OP_SIZE_IN                        sizeof(SUPSEMOP)
+#define SUP_IOCTL_SEM_OP_SIZE_OUT                       sizeof(SUPREQHDR)
+typedef struct SUPSEMOP
+{
+    /** The header. */
+    SUPREQHDR               Hdr;
+    union
+    {
+        struct
+        {
+            /** The operation. */
+            uint32_t        uOp;
+            /** The semaphore type. */
+            uint32_t        uType;
+            /** The semaphore handle. */
+            uint32_t        hSem;
+            /** The number of milliseconds to wait if it's a wait operation. */
+            uint32_t        cMillies;
+        } In;
+    } u;
+} SUPSEMOP, *PSUPSEMOP;
+
+/** Wait for a number of millisecons. */
+#define SUPSEMOP_WAIT       0
+/** Signal the semaphore. */
+#define SUPSEMOP_SIGNAL     1
+/** Reset the sempahore (only applicable to SUP_SEM_TYPE_EVENT_MULTI). */
+#define SUPSEMOP_RESET      2
+/** Close the semaphore handle. */
+#define SUPSEMOP_CLOSE      3
+
+/** @} */
+
+
 #pragma pack()                          /* paranoia */
 
