From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> program_invocation_short_name is set once at the program's start. If we change the process name using prctl(), we need to retrieve it using the same system call as program_invocation_short_name will not be updated. Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> --- configure.ac | 2 ++ tests/gpiosim/gpiosim.c | 10 +++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index dc945ef..07706f0 100644 --- a/configure.ac +++ b/configure.ac @@ -85,10 +85,12 @@ AC_CHECK_FUNC([scandir], [], [FUNC_NOT_FOUND_LIB([scandir])]) AC_CHECK_FUNC([alphasort], [], [FUNC_NOT_FOUND_LIB([alphasort])]) AC_CHECK_FUNC([ppoll], [], [FUNC_NOT_FOUND_LIB([ppoll])]) AC_CHECK_FUNC([realpath], [], [FUNC_NOT_FOUND_LIB([realpath])]) +AC_CHECK_FUNC([prctl], [], [FUNC_NOT_FOUND_LIB([prctl])]) AC_CHECK_HEADERS([getopt.h], [], [HEADER_NOT_FOUND_LIB([getopt.h])]) AC_CHECK_HEADERS([dirent.h], [], [HEADER_NOT_FOUND_LIB([dirent.h])]) AC_CHECK_HEADERS([sys/poll.h], [], [HEADER_NOT_FOUND_LIB([sys/poll.h])]) AC_CHECK_HEADERS([sys/sysmacros.h], [], [HEADER_NOT_FOUND_LIB([sys/sysmacros.h])]) +AC_CHECK_HEADERS([sys/prctl.h], [], [HEADER_NOT_FOUND_LIB([sys/prctl.h])]) AC_CHECK_HEADERS([linux/version.h], [], [HEADER_NOT_FOUND_LIB([linux/version.h])]) AC_CHECK_HEADERS([linux/const.h], [], [HEADER_NOT_FOUND_LIB([linux/const.h])]) AC_CHECK_HEADERS([linux/ioctl.h], [], [HEADER_NOT_FOUND_LIB([linux/ioctl.h])]) diff --git a/tests/gpiosim/gpiosim.c b/tests/gpiosim/gpiosim.c index 881ecc8..e2a97fa 100644 --- a/tests/gpiosim/gpiosim.c +++ b/tests/gpiosim/gpiosim.c @@ -12,6 +12,7 @@ #include <stdlib.h> #include <string.h> #include <sys/mount.h> +#include <sys/prctl.h> #include <sys/random.h> #include <sys/stat.h> #include <sys/types.h> @@ -365,11 +366,14 @@ out_unref_kmod: static char *configfs_make_item(int at, int id) { - char *item_name; + char *item_name, prname[17]; int ret; - ret = asprintf(&item_name, "%s.%u.%d", - program_invocation_short_name, getpid(), id); + ret = prctl(PR_GET_NAME, prname); + if (ret) + return NULL; + + ret = asprintf(&item_name, "%s.%u.%d", prname, getpid(), id); if (ret < 0) return NULL; -- 2.37.2