From f5975d60cfe2e7d1b6c259f5ad800a823ee682c3 Mon Sep 17 00:00:00 2001
From: root <root>
Date: Sun, 24 Jul 2011 05:53:34 +0000
Subject: *** empty log message ***

---
 Changes   |  1 +
 eio.c     | 16 ++++++++++++----
 libeio.m4 | 12 +++++++++++-
 3 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/Changes b/Changes
index 8ba9d31..4eae96a 100644
--- a/Changes
+++ b/Changes
@@ -58,4 +58,5 @@ TODO: fadvise request
         - do not acquire any locks when forking.
         - incorporated some mingw32 changes by traviscline.
         - added syncfs support, using direct syscall.
+        - set thread name on linux (ps -L/Hcx, top, gdb).
 
diff --git a/eio.c b/eio.c
index 04985e1..30c7f75 100644
--- a/eio.c
+++ b/eio.c
@@ -203,6 +203,14 @@ static void eio_destroy (eio_req *req);
 # include <utime.h>
 #endif
 
+#if HAVE_SYS_SYSCALL_H
+# include <sys/syscall.h>
+#endif
+
+#if HAVE_SYS_PRCTL_H
+# include <sys/prctl.h>
+#endif
+
 #if HAVE_SENDFILE
 # if __linux
 #  include <sys/sendfile.h>
@@ -218,10 +226,6 @@ static void eio_destroy (eio_req *req);
 # endif
 #endif
 
-#if HAVE_SYS_SYSCALL_H
-# include <sys/syscall.h>
-#endif
-
 #ifndef D_TYPE
 # define D_TYPE(de) 0
 #endif
@@ -1915,6 +1919,10 @@ X_THREAD_PROC (etp_proc)
   struct timespec ts;
   etp_worker *self = (etp_worker *)thr_arg;
 
+#if HAVE_PRCTL_SET_NAME
+  prctl (PR_SET_NAME, (unsigned long)"eio_thread", 0, 0, 0);
+#endif
+
   /* try to distribute timeouts somewhat evenly */
   ts.tv_nsec = ((unsigned long)self & 1023UL) * (1000000000UL / 1024UL);
 
diff --git a/libeio.m4 b/libeio.m4
index fb6591b..59151f5 100644
--- a/libeio.m4
+++ b/libeio.m4
@@ -1,6 +1,6 @@
 dnl openbsd in it's neverending brokenness requires stdint.h for intptr_t,
 dnl but that header isn't very portable...
-AC_CHECK_HEADERS([stdint.h sys/syscall.h])
+AC_CHECK_HEADERS([stdint.h sys/syscall.h sys/prctl.h])
 
 AC_SEARCH_LIBS(
    pthread_create,
@@ -148,6 +148,16 @@ int main (void)
 ],ac_cv_sys_syncfs=yes,ac_cv_sys_syncfs=no)])
 test $ac_cv_sys_syncfs = yes && AC_DEFINE(HAVE_SYS_SYNCFS, 1, syscall(__NR_syncfs) is available)
 
+AC_CACHE_CHECK(for prctl_set_name, ac_cv_prctl_set_name, [AC_LINK_IFELSE([
+#include <sys/prctl.h>
+int main (void)
+{
+  char name[] = "test123";
+  int res = prctl (PR_SET_NAME, (unsigned long)name, 0, 0, 0);
+}
+],ac_cv_prctl_set_name=yes,ac_cv_prctl_set_name=no)])
+test $ac_cv_prctl_set_name = yes && AC_DEFINE(HAVE_PRCTL_SET_NAME, 1, prctl(PR_SET_NAME) is available)
+
 dnl #############################################################################
 dnl # these checks exist for the benefit of IO::AIO
 
-- 
cgit v1.2.3