From 3006d924e4561e5f12e122038a5e4e953260e6f2 Mon Sep 17 00:00:00 2001 From: Bartosz Golaszewski Date: Tue, 6 Dec 2022 14:23:54 +0100 Subject: [PATCH] gpiosim: get the process name using prctl() 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 --- 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 a8410f3..43d900f 100644 --- a/tests/gpiosim/gpiosim.c +++ b/tests/gpiosim/gpiosim.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -371,11 +372,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.30.2