AC_CHECK_HEADERS(pthread.h)
AC_CHECK_HEADERS(pthread_np.h)
AC_CHECK_FUNCS(pthread_mutex_timedlock)
- AC_CHECK_FUNCS(pthread_getattr_np pthread_attr_get_np)
+ AC_CHECK_FUNCS(pthread_getattr_np pthread_attr_get_np pthread_setname_np)
AC_CHECK_FUNCS(pthread_kill)
AC_MSG_CHECKING(for PTHREAD_MUTEX_RECURSIVE)
AC_TRY_COMPILE([ #include <pthread.h>], [
if (this_obj->name) {
char *tname = mono_string_to_utf8 (name);
mono_profiler_thread_name (this_obj->tid, tname);
+ mono_thread_info_set_name (this_obj->tid, tname);
mono_free (tname);
}
}
return pthread_create (tid, NULL, func, arg) == 0;
}
+void
+mono_threads_core_set_name (MonoNativeThreadId tid, const char *name)
+{
+#ifdef HAVE_PTHREAD_SETNAME_NP
+ if (!name) {
+ pthread_setname_np (tid, "");
+ } else {
+ char n [16];
+
+ strncpy (n, name, 16);
+ n [15] = '\0';
+ pthread_setname_np (tid, n);
+ }
+#endif
+}
+
#endif /*!defined (__MACH__)*/
#endif
return OpenThread (THREAD_ALL_ACCESS, TRUE, tid);
}
+void
+mono_threads_core_set_name (MonoNativeThreadId tid, const char *name)
+{
+}
+
#endif
{
return mono_threads_core_open_thread_handle (handle, tid);
}
+
+void
+mono_thread_info_set_name (MonoNativeThreadId tid, const char *name)
+{
+ mono_threads_core_set_name (tid, name);
+}
gboolean
mono_thread_info_resume (MonoNativeThreadId tid) MONO_INTERNAL;
+void
+mono_thread_info_set_name (MonoNativeThreadId tid, const char *name) MONO_INTERNAL;
+
void
mono_thread_info_finish_suspend (void) MONO_INTERNAL;
void mono_threads_core_unregister (THREAD_INFO_TYPE *info) MONO_INTERNAL;
HANDLE mono_threads_core_open_handle (void) MONO_INTERNAL;
HANDLE mono_threads_core_open_thread_handle (HANDLE handle, MonoNativeThreadId tid) MONO_INTERNAL;
+void mono_threads_core_set_name (MonoNativeThreadId tid, const char *name) MONO_INTERNAL;
MonoNativeThreadId mono_native_thread_id_get (void) MONO_INTERNAL;