From 1bc180cd2acc55e31b61c4cc9ab4b07670a2566e Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Tue, 24 Jul 2018 13:09:22 +1200 Subject: [PATCH] Use setproctitle_fast() to update the ps status, if available. FreeBSD has introduced a faster variant of setproctitle(). Use it, where available. Author: Thomas Munro Discussion: https://postgr.es/m/CAEepm=1wKMTi81uodJ=1KbJAz5WedOg=cr8ewEXrUFeaxWEgww@mail.gmail.com --- configure | 2 +- configure.in | 2 +- src/backend/utils/misc/ps_status.c | 11 +++++++++-- src/include/pg_config.h.in | 3 +++ 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/configure b/configure index 034ace014a..26652133d5 100755 --- a/configure +++ b/configure @@ -14916,7 +14916,7 @@ fi LIBS_including_readline="$LIBS" LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'` -for ac_func in cbrt clock_gettime dlopen fdatasync getifaddrs getpeerucred getrlimit mbstowcs_l memmove poll posix_fallocate pstat pthread_is_threaded_np readlink setproctitle setsid shm_open symlink sync_file_range utime utimes wcstombs_l +for ac_func in cbrt clock_gettime dlopen fdatasync getifaddrs getpeerucred getrlimit mbstowcs_l memmove poll posix_fallocate pstat pthread_is_threaded_np readlink setproctitle setproctitle_fast setsid shm_open symlink sync_file_range utime utimes wcstombs_l do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/configure.in b/configure.in index 5712419a27..397f6bc765 100644 --- a/configure.in +++ b/configure.in @@ -1540,7 +1540,7 @@ PGAC_FUNC_WCSTOMBS_L LIBS_including_readline="$LIBS" LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'` -AC_CHECK_FUNCS([cbrt clock_gettime dlopen fdatasync getifaddrs getpeerucred getrlimit mbstowcs_l memmove poll posix_fallocate pstat pthread_is_threaded_np readlink setproctitle setsid shm_open symlink sync_file_range utime utimes wcstombs_l]) +AC_CHECK_FUNCS([cbrt clock_gettime dlopen fdatasync getifaddrs getpeerucred getrlimit mbstowcs_l memmove poll posix_fallocate pstat pthread_is_threaded_np readlink setproctitle setproctitle_fast setsid shm_open symlink sync_file_range utime utimes wcstombs_l]) AC_REPLACE_FUNCS(fseeko) case $host_os in diff --git a/src/backend/utils/misc/ps_status.c b/src/backend/utils/misc/ps_status.c index 83a93d2405..55521c19af 100644 --- a/src/backend/utils/misc/ps_status.c +++ b/src/backend/utils/misc/ps_status.c @@ -38,6 +38,9 @@ bool update_process_title = true; /* * Alternative ways of updating ps display: * + * PS_USE_SETPROCTITLE_FAST + * use the function setproctitle_fast(const char *, ...) + * (newer FreeBSD systems) * PS_USE_SETPROCTITLE * use the function setproctitle(const char *, ...) * (newer BSD systems) @@ -59,7 +62,9 @@ bool update_process_title = true; * don't update ps display * (This is the default, as it is safest.) */ -#if defined(HAVE_SETPROCTITLE) +#if defined(HAVE_SETPROCTITLE_FAST) +#define PS_USE_SETPROCTITLE_FAST +#elif defined(HAVE_SETPROCTITLE) #define PS_USE_SETPROCTITLE #elif defined(HAVE_PSTAT) && defined(PSTAT_SETCMD) #define PS_USE_PSTAT @@ -286,7 +291,7 @@ init_ps_display(const char *username, const char *dbname, * Make fixed prefix of ps display. */ -#ifdef PS_USE_SETPROCTITLE +#if defined(PS_USE_SETPROCTITLE) || defined(PS_USE_SETPROCTITLE_FAST) /* * apparently setproctitle() already adds a `progname:' prefix to the ps @@ -349,6 +354,8 @@ set_ps_display(const char *activity, bool force) #ifdef PS_USE_SETPROCTITLE setproctitle("%s", ps_buffer); +#elif defined(PS_USE_SETPROCTITLE_FAST) + setproctitle_fast("%s", ps_buffer); #endif #ifdef PS_USE_PSTAT diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in index 3eec284dc1..b7e469670f 100644 --- a/src/include/pg_config.h.in +++ b/src/include/pg_config.h.in @@ -489,6 +489,9 @@ /* Define to 1 if you have the `setproctitle' function. */ #undef HAVE_SETPROCTITLE +/* Define to 1 if you have the `setproctitle_fast' function. */ +#undef HAVE_SETPROCTITLE_FAST + /* Define to 1 if you have the `setsid' function. */ #undef HAVE_SETSID -- 2.40.0