#include <glib.h>
#include <sys/stat.h>
+#include <mono/io-layer/wapi.h>
#include <mono/io-layer/handles.h>
#include <mono/io-layer/io.h>
+#include <mono/utils/mono-os-mutex.h>
+
/* Increment this whenever an incompatible change is made to the
* shared handle structure.
*/
extern const char *_wapi_handle_typename[];
-#define _WAPI_SHARED_HANDLE(type) (type == WAPI_HANDLE_NAMEDMUTEX || \
- type == WAPI_HANDLE_NAMEDSEM || \
- type == WAPI_HANDLE_NAMEDEVENT)
-
#define _WAPI_FD_HANDLE(type) (type == WAPI_HANDLE_FILE || \
type == WAPI_HANDLE_CONSOLE || \
type == WAPI_HANDLE_SOCKET || \
guint32 offset;
};
-#define _WAPI_HANDLE_INITIAL_COUNT 256
-
-struct _WapiHandleUnshared
-{
- WapiHandleType type;
- guint ref;
- gboolean signalled;
- mono_mutex_t signal_mutex;
- pthread_cond_t signal_cond;
-
- union
- {
- struct _WapiHandle_event event;
- struct _WapiHandle_file file;
- struct _WapiHandle_find find;
- 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;
-};
-
-struct _WapiHandleShared
-{
- WapiHandleType type;
- guint32 timestamp;
- guint32 handle_refs;
- volatile gboolean signalled;
-
- union
- {
- struct _WapiHandle_namedmutex namedmutex;
- struct _WapiHandle_namedsem namedsem;
- struct _WapiHandle_namedevent namedevent;
- } u;
-};
-
#define _WAPI_SHARED_SEM_NAMESPACE 0
/*#define _WAPI_SHARED_SEM_COLLECTION 1*/
#define _WAPI_SHARED_SEM_FILESHARE 2
-#define _WAPI_SHARED_SEM_SHARED_HANDLES 3
#define _WAPI_SHARED_SEM_PROCESS_COUNT_LOCK 6
#define _WAPI_SHARED_SEM_PROCESS_COUNT 7
#define _WAPI_SHARED_SEM_COUNT 8 /* Leave some future expansion space */
-struct _WapiHandleSharedLayout
-{
- volatile guint32 collection_count;
- volatile key_t sem_key;
-
- struct _WapiHandleShared handles[_WAPI_HANDLE_INITIAL_COUNT];
-};
-
-#define _WAPI_FILESHARE_SIZE 102400
-
struct _WapiFileShare
{
#ifdef WAPI_FILE_SHARE_PLATFORM_EXTRA_DATA
WAPI_FILE_SHARE_PLATFORM_EXTRA_DATA
#endif
- dev_t device;
- ino_t inode;
+ guint64 device;
+ guint64 inode;
pid_t opened_by_pid;
guint32 sharemode;
guint32 access;
typedef struct _WapiFileShare _WapiFileShare;
-struct _WapiFileShareLayout
-{
- guint32 hwm;
-
- struct _WapiFileShare share_info[_WAPI_FILESHARE_SIZE];
-};
-
-
-
#define _WAPI_HANDLE_INVALID (gpointer)-1
#endif /* _WAPI_PRIVATE_H_ */