[Mesa-dev] [PATCH 1/3] gallium/os: add os_get_process_cmd_line

Grazvydas Ignotas notasas at gmail.com
Sat Jul 30 18:33:26 UTC 2016


On Sat, Jul 30, 2016 at 6:22 PM, Marek Olšák <maraeo at gmail.com> wrote:
> From: Marek Olšák <marek.olsak at 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");

What about just reading /proc/self/cmdline ? To exec ps, the current
process will have to fork which will fail if there is not enough free
RAM for the forked copy, which is not that unlikely with games as they
tend to be resource heavy.

Gražvydas


More information about the mesa-dev mailing list