From ec5275adbf5c769970b99e1220dee71448ec8187 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Wed, 4 Aug 2021 17:00:07 -0700 Subject: [PATCH] vkr: add vkr_log It automatically prefixes the message with "vkr: ". Signed-off-by: Chia-I Wu Reviewed-by: Ryan Neph Acked-by: Gert Wollny --- src/venus/vkr_common.c | 39 +++++++++++++++++++++++++++++++++++++++ src/venus/vkr_common.h | 3 +++ 2 files changed, 42 insertions(+) diff --git a/src/venus/vkr_common.c b/src/venus/vkr_common.c index a0af970..f77b88b 100644 --- a/src/venus/vkr_common.c +++ b/src/venus/vkr_common.c @@ -5,8 +5,47 @@ #include "vkr_common.h" +#include +#include + #include "vkr_cs.h" +void +vkr_log(const char *fmt, ...) +{ + const char prefix[] = "vkr: "; + char line[1024]; + size_t len; + va_list va; + int ret; + + len = ARRAY_SIZE(prefix) - 1; + memcpy(line, prefix, len); + + va_start(va, fmt); + ret = vsnprintf(line + len, ARRAY_SIZE(line) - len, fmt, va); + va_end(va); + + if (ret < 0) { + const char log_error[] = "log error"; + memcpy(line + len, log_error, ARRAY_SIZE(log_error) - 1); + len += ARRAY_SIZE(log_error) - 1; + } else if ((size_t)ret < ARRAY_SIZE(line) - len) { + len += ret; + } else { + len = ARRAY_SIZE(line) - 1; + } + + /* make room for newline */ + if (len + 1 >= ARRAY_SIZE(line)) + len--; + + line[len++] = '\n'; + line[len] = '\0'; + + virgl_log(line); +} + void object_array_fini(struct object_array *arr) { diff --git a/src/venus/vkr_common.h b/src/venus/vkr_common.h index b571f75..d57b6c3 100644 --- a/src/venus/vkr_common.h +++ b/src/venus/vkr_common.h @@ -288,6 +288,9 @@ struct object_array { extern uint32_t vkr_renderer_flags; extern uint32_t vkr_debug_flags; +void +vkr_log(const char *fmt, ...); + bool object_array_init(struct object_array *arr, uint32_t count,