From f5975d60cfe2e7d1b6c259f5ad800a823ee682c3 Mon Sep 17 00:00:00 2001 From: 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 #endif +#if HAVE_SYS_SYSCALL_H +# include +#endif + +#if HAVE_SYS_PRCTL_H +# include +#endif + #if HAVE_SENDFILE # if __linux # include @@ -218,10 +226,6 @@ static void eio_destroy (eio_req *req); # endif #endif -#if HAVE_SYS_SYSCALL_H -# include -#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 +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