Merge pull request #1473 from esdrubal/sq
[mono.git] / mono / io-layer / wapi-private.h
index 82225967bf017d9a860499de85507d8212989ae6..34de2f0fd992b1d42c6596df39d19755dbce88e2 100644 (file)
 
 #include <config.h>
 #include <glib.h>
+#include <sys/stat.h>
 
 #include <mono/io-layer/handles.h>
 #include <mono/io-layer/io.h>
 
-/* Catch this here rather than corrupt the shared data at runtime */
-#if MONO_SIZEOF_SUNPATH==0
-#error configure failed to discover size of unix socket path
-#endif
-
 /* Increment this whenever an incompatible change is made to the
  * shared handle structure.
  */
-#define _WAPI_HANDLE_VERSION 11
+#define _WAPI_HANDLE_VERSION 12
 
 typedef enum {
        WAPI_HANDLE_UNUSED=0,
@@ -46,9 +42,7 @@ typedef enum {
 
 extern const char *_wapi_handle_typename[];
 
-#define _WAPI_SHARED_HANDLE(type) (type == WAPI_HANDLE_PROCESS || \
-                                  type == WAPI_HANDLE_THREAD || \
-                                  type == WAPI_HANDLE_NAMEDMUTEX || \
+#define _WAPI_SHARED_HANDLE(type) (type == WAPI_HANDLE_NAMEDMUTEX || \
                                   type == WAPI_HANDLE_NAMEDSEM || \
                                   type == WAPI_HANDLE_NAMEDEVENT)
 
@@ -97,7 +91,7 @@ struct _WapiHandleOps
         * instead of using the normal handle signal mechanism.
         * Returns the WaitForSingleObject return code.
         */
-       guint32 (*special_wait)(gpointer handle, guint32 timeout);
+       guint32 (*special_wait)(gpointer handle, guint32 timeout, gboolean alertable);
 
        /* Called by WaitForSingleObject and WaitForMultipleObjects,
         * if the handle in question needs some preprocessing before the
@@ -122,7 +116,7 @@ struct _WapiHandle_shared_ref
        guint32 offset;
 };
 
-#define _WAPI_HANDLE_INITIAL_COUNT 4096
+#define _WAPI_HANDLE_INITIAL_COUNT 256
 
 struct _WapiHandleUnshared
 {
@@ -140,6 +134,8 @@ struct _WapiHandleUnshared
                struct _WapiHandle_mutex mutex;
                struct _WapiHandle_sem sem;
                struct _WapiHandle_socket sock;
+               struct _WapiHandle_thread thread;
+               struct _WapiHandle_process process;
                struct _WapiHandle_shared_ref shared;
        } u;
 };
@@ -153,8 +149,6 @@ struct _WapiHandleShared
        
        union
        {
-               struct _WapiHandle_thread thread;
-               struct _WapiHandle_process process;
                struct _WapiHandle_namedmutex namedmutex;
                struct _WapiHandle_namedsem namedsem;
                struct _WapiHandle_namedevent namedevent;
@@ -181,6 +175,9 @@ struct _WapiHandleSharedLayout
 
 struct _WapiFileShare
 {
+#ifdef WAPI_FILE_SHARE_PLATFORM_EXTRA_DATA
+       WAPI_FILE_SHARE_PLATFORM_EXTRA_DATA
+#endif
        dev_t device;
        ino_t inode;
        pid_t opened_by_pid;
@@ -190,6 +187,8 @@ struct _WapiFileShare
        guint32 timestamp;
 };
 
+typedef struct _WapiFileShare _WapiFileShare;
+
 struct _WapiFileShareLayout
 {
        guint32 hwm;