From fea3dcb844af03231f7aa6d1ede93a7733733641 Mon Sep 17 00:00:00 2001 From: Nicolai Hähnle Date: Thu, 14 Mar 2019 09:48:47 +0100 Subject: ddebug: expose some helper functions as non-inline MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: Marek Olšák --- src/gallium/auxiliary/driver_ddebug/dd_draw.c | 63 ++++++++++++++++++++++++- src/gallium/auxiliary/driver_ddebug/dd_util.h | 66 ++++----------------------- 2 files changed, 70 insertions(+), 59 deletions(-) (limited to 'src') diff --git a/src/gallium/auxiliary/driver_ddebug/dd_draw.c b/src/gallium/auxiliary/driver_ddebug/dd_draw.c index 98e7a6bb99f..eef44a7c348 100644 --- a/src/gallium/auxiliary/driver_ddebug/dd_draw.c +++ b/src/gallium/auxiliary/driver_ddebug/dd_draw.c @@ -40,8 +40,69 @@ #include #include "pipe/p_config.h" +void +dd_get_debug_filename_and_mkdir(char *buf, size_t buflen, bool verbose) +{ + static unsigned index; + char proc_name[128], dir[256]; -static void + if (!os_get_process_name(proc_name, sizeof(proc_name))) { + fprintf(stderr, "dd: can't get the process name\n"); + strcpy(proc_name, "unknown"); + } + + util_snprintf(dir, sizeof(dir), "%s/"DD_DIR, debug_get_option("HOME", ".")); + + if (mkdir(dir, 0774) && errno != EEXIST) + fprintf(stderr, "dd: can't create a directory (%i)\n", errno); + + util_snprintf(buf, buflen, "%s/%s_%u_%08u", dir, proc_name, getpid(), + p_atomic_inc_return(&index) - 1); + + if (verbose) + fprintf(stderr, "dd: dumping to file %s\n", buf); +} + +FILE * +dd_get_debug_file(bool verbose) +{ + char name[512]; + FILE *f; + + dd_get_debug_filename_and_mkdir(name, sizeof(name), verbose); + f = fopen(name, "w"); + if (!f) { + fprintf(stderr, "dd: can't open file %s\n", name); + return NULL; + } + + return f; +} + +void +dd_parse_apitrace_marker(const char *string, int len, unsigned *call_number) +{ + unsigned num; + char *s; + + if (len <= 0) + return; + + /* Make it zero-terminated. */ + s = alloca(len + 1); + memcpy(s, string, len); + s[len] = 0; + + /* Parse the number. */ + errno = 0; + num = strtol(s, NULL, 10); + if (errno) + return; + + *call_number = num; +} + +void dd_write_header(FILE *f, struct pipe_screen *screen, unsigned apitrace_call_number) { char cmd_line[4096]; diff --git a/src/gallium/auxiliary/driver_ddebug/dd_util.h b/src/gallium/auxiliary/driver_ddebug/dd_util.h index 20aca94cc67..d3a1a36af62 100644 --- a/src/gallium/auxiliary/driver_ddebug/dd_util.h +++ b/src/gallium/auxiliary/driver_ddebug/dd_util.h @@ -51,66 +51,16 @@ /* name of the directory in home */ #define DD_DIR "ddebug_dumps" -static inline void -dd_get_debug_filename_and_mkdir(char *buf, size_t buflen, bool verbose) -{ - static unsigned index; - char proc_name[128], dir[256]; +void +dd_get_debug_filename_and_mkdir(char *buf, size_t buflen, bool verbose); - if (!os_get_process_name(proc_name, sizeof(proc_name))) { - fprintf(stderr, "dd: can't get the process name\n"); - strcpy(proc_name, "unknown"); - } +FILE * +dd_get_debug_file(bool verbose); - util_snprintf(dir, sizeof(dir), "%s/"DD_DIR, debug_get_option("HOME", ".")); +void +dd_parse_apitrace_marker(const char *string, int len, unsigned *call_number); - if (mkdir(dir, 0774) && errno != EEXIST) - fprintf(stderr, "dd: can't create a directory (%i)\n", errno); - - util_snprintf(buf, buflen, "%s/%s_%u_%08u", dir, proc_name, getpid(), - p_atomic_inc_return(&index) - 1); - - if (verbose) - fprintf(stderr, "dd: dumping to file %s\n", buf); -} - -static inline FILE * -dd_get_debug_file(bool verbose) -{ - char name[512]; - FILE *f; - - dd_get_debug_filename_and_mkdir(name, sizeof(name), verbose); - f = fopen(name, "w"); - if (!f) { - fprintf(stderr, "dd: can't open file %s\n", name); - return NULL; - } - - return f; -} - -static inline void -dd_parse_apitrace_marker(const char *string, int len, unsigned *call_number) -{ - unsigned num; - char *s; - - if (len <= 0) - return; - - /* Make it zero-terminated. */ - s = alloca(len + 1); - memcpy(s, string, len); - s[len] = 0; - - /* Parse the number. */ - errno = 0; - num = strtol(s, NULL, 10); - if (errno) - return; - - *call_number = num; -} +void +dd_write_header(FILE *f, struct pipe_screen *screen, unsigned apitrace_call_number); #endif /* DD_UTIL_H */ -- cgit v1.2.3