From: Marek Olšák <marek.ol...@amd.com> for debugging --- src/gallium/auxiliary/os/os_process.c | 37 +++++++++++++++++++++++++++++++++++ src/gallium/auxiliary/os/os_process.h | 2 ++ 2 files changed, 39 insertions(+)
diff --git a/src/gallium/auxiliary/os/os_process.c b/src/gallium/auxiliary/os/os_process.c index 332e195..3ee30b1 100644 --- a/src/gallium/auxiliary/os/os_process.c +++ b/src/gallium/auxiliary/os/os_process.c @@ -30,6 +30,10 @@ #include "os/os_process.h" #include "util/u_memory.h" +#if defined(PIPE_OS_UNIX) +#include <stdio.h> +#endif + #if defined(PIPE_SUBSYSTEM_WINDOWS_USER) # include <windows.h> #elif defined(__GLIBC__) || defined(__CYGWIN__) @@ -108,3 +112,36 @@ os_get_process_name(char *procname, size_t size) return FALSE; } } + +bool +os_get_process_cmd_line(char *result, size_t size) +{ +#if defined(PIPE_OS_UNIX) + char ps[256]; + int len; + FILE *p; + + /* Execute the ps command. */ + snprintf(ps, sizeof(ps), "ps --pid %i -o args --no-headers", getpid()); + + p = popen(ps, "r"); + if (!p) + return false; + + result = fgets(result, size, p); + pclose(p); + + if (!result) + return false; + + /* Remove the newline character. */ + len = strlen(result); + if (result[len - 1] == '\n') + result[len - 1] = 0; + + return true; + +#else + return false; +#endif +} diff --git a/src/gallium/auxiliary/os/os_process.h b/src/gallium/auxiliary/os/os_process.h index 0d50ddc..3965a8b 100644 --- a/src/gallium/auxiliary/os/os_process.h +++ b/src/gallium/auxiliary/os/os_process.h @@ -36,5 +36,7 @@ extern boolean os_get_process_name(char *str, size_t size); +extern bool +os_get_process_cmd_line(char *result, size_t size); #endif /* OS_PROCESS_H */ -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev