X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fwapihandles.c;h=7bda38843ef4d8df290858f41da479d940727c6c;hb=bfb5185aabc1e197f35e9d9b2d03a657cc41be51;hp=d55b42d13a5298b6860ed1f3fccea3323ceda374;hpb=f03a580764e135faa726cb7df13c1ee8c68227e1;p=mono.git diff --git a/mono/mini/wapihandles.c b/mono/mini/wapihandles.c index d55b42d13a5..7bda38843ef 100644 --- a/mono/mini/wapihandles.c +++ b/mono/mini/wapihandles.c @@ -1,7 +1,9 @@ #include #include -#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__)) || defined(DISABLE_SHARED_HANDLES) int mini_wapi_hps (int argc, char **argv) { @@ -32,29 +34,30 @@ int mini_wapi_seminfo (int argc, char **argv) #include #include -static const guchar *unused_details (struct _WapiHandleShared *handle); -static const guchar *unshared_details (struct _WapiHandleShared *handle); -static const guchar *thread_details (struct _WapiHandleShared *handle); -static const guchar *namedmutex_details (struct _WapiHandleShared *handle); -static const guchar *namedsem_details (struct _WapiHandleShared *handle); -static const guchar *namedevent_details (struct _WapiHandleShared *handle); -static const guchar *process_details (struct _WapiHandleShared *handle); +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); /* This depends on the ordering of the enum WapiHandleType in * io-layer/wapi-private.h */ -static const guchar * (*details[])(struct _WapiHandleShared *)= +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 */ unshared_details, /* socket */ unshared_details, /* find */ - process_details, + unshared_details, /* process */ unshared_details, /* pipe */ namedmutex_details, namedsem_details, @@ -111,39 +114,41 @@ 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); } } exit (0); } -static const guchar *unused_details (struct _WapiHandleShared *handle) +static const gchar *unused_details (struct _WapiHandleShared *handle) { return("unused details"); } -static const guchar *unshared_details (struct _WapiHandleShared *handle) +static const gchar *unshared_details (struct _WapiHandleShared *handle) { return("unshared details"); } -static const guchar *thread_details (struct _WapiHandleShared *handle) +#if 0 +static const gchar *thread_details (struct _WapiHandleShared *handle) { - static guchar buf[80]; + static gchar buf[80]; struct _WapiHandle_thread *thr=&handle->u.thread; g_snprintf (buf, sizeof(buf), - "proc: %d, state: %d, exit: %u, join: %d", - thr->owner_pid, thr->state, thr->exitstatus, + "proc: %d, tid: %ld, state: %d, exit: %u, join: %d", + thr->owner_pid, thr->id, thr->state, thr->exitstatus, thr->joined); return(buf); } +#endif -static const guchar *namedmutex_details (struct _WapiHandleShared *handle) +static const gchar *namedmutex_details (struct _WapiHandleShared *handle) { - static guchar buf[80]; + static gchar buf[80]; gchar *name; struct _WapiHandle_namedmutex *mut=&handle->u.namedmutex; @@ -156,9 +161,9 @@ static const guchar *namedmutex_details (struct _WapiHandleShared *handle) return(buf); } -static const guchar *namedsem_details (struct _WapiHandleShared *handle) +static const gchar *namedsem_details (struct _WapiHandleShared *handle) { - static guchar buf[80]; + static gchar buf[80]; gchar *name; struct _WapiHandle_namedsem *sem = &handle->u.namedsem; @@ -170,9 +175,9 @@ static const guchar *namedsem_details (struct _WapiHandleShared *handle) return(buf); } -static const guchar *namedevent_details (struct _WapiHandleShared *handle) +static const gchar *namedevent_details (struct _WapiHandleShared *handle) { - static guchar buf[80]; + static gchar buf[80]; gchar *name; struct _WapiHandle_namedevent *event = &handle->u.namedevent; @@ -185,20 +190,6 @@ static const guchar *namedevent_details (struct _WapiHandleShared *handle) return(buf); } -static const guchar *process_details (struct _WapiHandleShared *handle) -{ - static guchar buf[80]; - gchar *name; - struct _WapiHandle_process *proc=&handle->u.process; - - name = proc->proc_name; - - g_snprintf (buf, sizeof(buf), "[%25.25s] pid: %5u exit: %u", - name==NULL?(gchar *)"":name, proc->id, proc->exitstatus); - - return(buf); -} - /* The old handles/semdel.c */ int mini_wapi_semdel (int argc, char **argv) { @@ -222,13 +213,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 +253,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]); } }