From: Bartosz Golaszewski Date: Tue, 6 Dec 2022 13:23:54 +0000 (+0100) Subject: gpiosim: get the process name using prctl() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=3006d924e4561e5f12e122038a5e4e953260e6f2;p=qemu-gpiodev%2Flibgpiod.git 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 --- 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;