----- Original Message ----- > --- > src/gallium/auxiliary/Makefile.sources | 1 + > src/gallium/auxiliary/os/os_process.c | 86 > ++++++++++++++++++++++++++++++++ > src/gallium/auxiliary/os/os_process.h | 40 +++++++++++++++ > 3 files changed, 127 insertions(+) > create mode 100644 src/gallium/auxiliary/os/os_process.c > create mode 100644 src/gallium/auxiliary/os/os_process.h > > diff --git a/src/gallium/auxiliary/Makefile.sources > b/src/gallium/auxiliary/Makefile.sources > index 20ff5ba..c06f964 100644 > --- a/src/gallium/auxiliary/Makefile.sources > +++ b/src/gallium/auxiliary/Makefile.sources > @@ -44,6 +44,7 @@ C_SOURCES := \ > hud/hud_fps.c \ > hud/hud_driver_query.c \ > os/os_misc.c \ > + os/os_process.c \ > os/os_time.c \ > pipebuffer/pb_buffer_fenced.c \ > pipebuffer/pb_buffer_malloc.c \ > diff --git a/src/gallium/auxiliary/os/os_process.c > b/src/gallium/auxiliary/os/os_process.c > new file mode 100644 > index 0000000..fd9fc07 > --- /dev/null > +++ b/src/gallium/auxiliary/os/os_process.c > @@ -0,0 +1,86 @@ > +/************************************************************************** > + * > + * Copyright 2013 VMware, Inc. > + * All Rights Reserved. > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the > + * "Software"), to deal in the Software without restriction, including > + * without limitation the rights to use, copy, modify, merge, publish, > + * distribute, sub license, and/or sell copies of the Software, and to > + * permit persons to whom the Software is furnished to do so, subject to > + * the following conditions: > + * > + * The above copyright notice and this permission notice (including the > + * next paragraph) shall be included in all copies or substantial portions > + * of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. > + * IN NO EVENT SHALL THE AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR > + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > + * > + **************************************************************************/ > + > + > +#include "pipe/p_config.h" > +#include "os/os_process.h" > +#include "util/u_memory.h" > + > +#if defined(PIPE_SUBSYSTEM_WINDOWS_USER) > +# include <windows.h> > +#elif defined(__GLIBC__) > +# include <errno.h> > +#else > +# include <stdlib.h> > +#endif > + > + > +/** > + * Return the name of the current process. > + * \param procname returns the process name > + * \param size size of the procname buffer > + * \return TRUE or FALSE for success, failure > + */ > +boolean > +os_get_process_name(char *procname, size_t size) > +{ > + const char *name; > +#if defined(PIPE_SUBSYSTEM_WINDOWS_USER) > + char szProcessPath[MAX_PATH]; > + char *lpProcessName; > + char *lpProcessExt; > + > + GetModuleFileNameA(NULL, szProcessPath, Elements(szProcessPath)); > + > + lpProcessName = strrchr(szProcessPath, '\\'); > + lpProcessName = lpProcessName ? lpProcessName + 1 : szProcessPath; > + > + lpProcessExt = strrchr(lpProcessName, '.'); > + if (lpProcessExt) { > + *lpProcessExt = '\0'; > + } > + > + name = lpProcessName; > +
This looks good. Do the ones below trim the directory too? FWIW, apitrace also has a cross platform implementation of similar function, but uses slightly different methods for the non-Windows OS. > +#elif defined(__GLIBC__) > + name = program_invocation_short_name; > +#else /* *BSD and OS X */ > + name = getprogname(); There should be a #else here with a #warning/#error/ or return FALSE, just in case. Otherwise looks good. > +#endif > + > + assert(size > 0); > + assert(procname); > + > + if (name && procname && size > 0) { > + strncpy(procname, name, size); > + procname[size - 1] = '\0'; > + return TRUE; > + } > + else { > + return FALSE; > + } > +} > diff --git a/src/gallium/auxiliary/os/os_process.h > b/src/gallium/auxiliary/os/os_process.h > new file mode 100644 > index 0000000..0d50ddc > --- /dev/null > +++ b/src/gallium/auxiliary/os/os_process.h > @@ -0,0 +1,40 @@ > +/************************************************************************** > + * > + * Copyright 2013 VMware, Inc. > + * All Rights Reserved. > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the > + * "Software"), to deal in the Software without restriction, including > + * without limitation the rights to use, copy, modify, merge, publish, > + * distribute, sub license, and/or sell copies of the Software, and to > + * permit persons to whom the Software is furnished to do so, subject to > + * the following conditions: > + * > + * The above copyright notice and this permission notice (including the > + * next paragraph) shall be included in all copies or substantial portions > + * of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS > + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. > + * IN NO EVENT SHALL THE AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR > + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, > + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE > + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. > + * > + **************************************************************************/ > + > + > +#ifndef OS_PROCESS_H > +#define OS_PROCESS_H > + > + > +#include "pipe/p_compiler.h" > + > + > +extern boolean > +os_get_process_name(char *str, size_t size); > + > + > +#endif /* OS_PROCESS_H */ > -- > 1.7.10.4 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev