Revert "Merge branch 'master' of https://github.com/mono/mono"
[mono.git] / mono / mini / wapihandles.c
index 8ae807ac72f8149802a489a94c70a80254c3da03..c2a31ce1ea3532db21c42ecd459079fa733bfac2 100644 (file)
@@ -1,7 +1,9 @@
 #include <config.h>
 #include <glib.h>
 
-#ifdef PLATFORM_WIN32
+#include "mini.h"
+
+#if defined(HOST_WIN32) || !defined(HAVE_SYS_IPC_H) || !defined(HAVE_SYS_SEM_H) || (defined(__native_client__) && defined(__GLIBC__))
 
 int mini_wapi_hps (int argc, char **argv)
 {
@@ -34,7 +36,9 @@ int mini_wapi_seminfo (int argc, char **argv)
 
 static const gchar *unused_details (struct _WapiHandleShared *handle);
 static const gchar *unshared_details (struct _WapiHandleShared *handle);
+#if 0
 static const gchar *thread_details (struct _WapiHandleShared *handle);
+#endif
 static const gchar *namedmutex_details (struct _WapiHandleShared *handle);
 static const gchar *namedsem_details (struct _WapiHandleShared *handle);
 static const gchar *namedevent_details (struct _WapiHandleShared *handle);
@@ -48,7 +52,7 @@ static const gchar * (*details[])(struct _WapiHandleShared *)=
        unused_details,
        unshared_details,               /* file */
        unshared_details,               /* console */
-       thread_details,
+       unshared_details,               /* thread */
        unshared_details,               /* sem */
        unshared_details,               /* mutex */
        unshared_details,               /* event */
@@ -111,7 +115,7 @@ int mini_wapi_hps (int argc, char **argv)
                
                file_share = &_wapi_fileshare_layout->share_info[i];
                if (file_share->handle_refs > 0) {
-                       g_print ("dev: 0x%llx ino: %lld open pid: %d share: 0x%x access: 0x%x refs: %d\n", file_share->device, file_share->inode, file_share->opened_by_pid, file_share->sharemode, file_share->access, file_share->handle_refs);
+                       g_print ("dev: 0x%llx ino: %lld open pid: %d share: 0x%x access: 0x%x refs: %d\n", (long long int)file_share->device, (long long int)file_share->inode, file_share->opened_by_pid, file_share->sharemode, file_share->access, file_share->handle_refs);
                }
        }
        
@@ -128,6 +132,7 @@ static const gchar *unshared_details (struct _WapiHandleShared *handle)
        return("unshared details");
 }
 
+#if 0
 static const gchar *thread_details (struct _WapiHandleShared *handle)
 {
        static gchar buf[80];
@@ -140,6 +145,7 @@ static const gchar *thread_details (struct _WapiHandleShared *handle)
        
        return(buf);
 }
+#endif
 
 static const gchar *namedmutex_details (struct _WapiHandleShared *handle)
 {
@@ -222,13 +228,17 @@ int mini_wapi_semdel (int argc, char **argv)
        exit (0);
 }
 
-static void sem_explain (int val)
+static void sem_explain (int sem_id, ushort *vals, int which)
 {
-       g_print ("%d ", val);
-       if (val >= 1) {
+       pid_t pid;
+       
+       g_print ("%d ", vals[which]);
+       if (vals[which] >= 1) {
                g_print ("(Unlocked)");
        } else {
-               g_print ("(Locked)");
+               pid = semctl (sem_id, which, GETPID);
+               
+               g_print ("(Locked by %d)", pid);
        }
        g_print ("\n");
 }
@@ -258,14 +268,17 @@ int mini_wapi_seminfo (int argc, char **argv)
                ret = semctl (sem_id, 0, GETALL, arg);
                if (ret != -1) {
                        g_print ("Namespace: ");
-                       sem_explain (vals[_WAPI_SHARED_SEM_NAMESPACE]);
+                       sem_explain (sem_id, vals, _WAPI_SHARED_SEM_NAMESPACE);
                        g_print ("Fileshare: ");
-                       sem_explain (vals[_WAPI_SHARED_SEM_FILESHARE]);
+                       sem_explain (sem_id, vals, _WAPI_SHARED_SEM_FILESHARE);
                        g_print ("Handles: ");
-                       sem_explain (vals[_WAPI_SHARED_SEM_SHARED_HANDLES]);
+                       sem_explain (sem_id, vals,
+                                    _WAPI_SHARED_SEM_SHARED_HANDLES);
                        g_print ("Count lock: ");
-                       sem_explain (vals[_WAPI_SHARED_SEM_PROCESS_COUNT_LOCK]);
-                       g_print ("Count: %d\n", vals[_WAPI_SHARED_SEM_PROCESS_COUNT] - 1);
+                       sem_explain (sem_id, vals,
+                                    _WAPI_SHARED_SEM_PROCESS_COUNT_LOCK);
+                       g_print ("Count: %d\n",
+                                vals[_WAPI_SHARED_SEM_PROCESS_COUNT]);
                }
        }