SWDEV-272673 - Add changes to dump log to a file
Env var AMD_LOG_LEVEL_FILE would dump the log to file. Change-Id: I6add4a1ae6788f376ce116797cc0573007502e73
이 커밋은 다음에 포함됨:
@@ -93,6 +93,9 @@ void Runtime::tearDown() {
|
||||
Device::tearDown();
|
||||
option::teardown();
|
||||
Flag::tearDown();
|
||||
if (outFile != stderr && outFile != nullptr) {
|
||||
fclose(outFile);
|
||||
}
|
||||
initialized_ = false;
|
||||
}
|
||||
|
||||
|
||||
+22
-10
@@ -36,6 +36,9 @@
|
||||
|
||||
namespace amd {
|
||||
|
||||
FILE* outFile = stderr;
|
||||
|
||||
// ================================================================================================
|
||||
//! \cond ignore
|
||||
extern "C" void breakpoint(void) {
|
||||
#ifdef _MSC_VER
|
||||
@@ -44,25 +47,29 @@ extern "C" void breakpoint(void) {
|
||||
}
|
||||
//! \endcond
|
||||
|
||||
// ================================================================================================
|
||||
void report_fatal(const char* file, int line, const char* message) {
|
||||
// FIXME_lmoriche: Obfuscate the message string
|
||||
#if (defined(DEBUG))
|
||||
fprintf(stderr, "%s:%d: %s\n", file, line, message);
|
||||
fprintf(outFile, "%s:%d: %s\n", file, line, message);
|
||||
#else
|
||||
fprintf(stderr, "%s\n", message);
|
||||
fprintf(outFile, "%s\n", message);
|
||||
#endif
|
||||
::abort();
|
||||
}
|
||||
|
||||
void report_warning(const char* message) { fprintf(stderr, "Warning: %s\n", message); }
|
||||
// ================================================================================================
|
||||
void report_warning(const char* message) { fprintf(outFile, "Warning: %s\n", message); }
|
||||
|
||||
// ================================================================================================
|
||||
void log_entry(LogLevel level, const char* file, int line, const char* message) {
|
||||
if (level == LOG_NONE) {
|
||||
return;
|
||||
}
|
||||
fprintf(stderr, ":%d:%s:%d: %s\n", level, file, line, message);
|
||||
fprintf(outFile, ":%d:%s:%d: %s\n", level, file, line, message);
|
||||
}
|
||||
|
||||
// ================================================================================================
|
||||
void log_timestamped(LogLevel level, const char* file, int line, const char* message) {
|
||||
static bool gotstart = false; // not thread-safe, but not scary if fails
|
||||
static uint64_t start;
|
||||
@@ -77,13 +84,14 @@ void log_timestamped(LogLevel level, const char* file, int line, const char* mes
|
||||
return;
|
||||
}
|
||||
#if 0
|
||||
fprintf(stderr, ":%d:%s:%d: (%010lld) %s\n", level, file, line, time, message);
|
||||
fprintf(outFile, ":%d:%s:%d: (%010lld) %s\n", level, file, line, time, message);
|
||||
#else // if you prefer fixed-width fields
|
||||
fprintf(stderr, ":% 2d:%15s:% 5d: (%010lld) us %s\n", level, file, line, time / 1000ULL,
|
||||
fprintf(outFile, ":% 2d:%15s:% 5d: (%010lld) us %s\n", level, file, line, time / 1000ULL,
|
||||
message);
|
||||
#endif
|
||||
}
|
||||
|
||||
// ================================================================================================
|
||||
void log_printf(LogLevel level, const char* file, int line, const char* format, ...) {
|
||||
va_list ap;
|
||||
|
||||
@@ -92,10 +100,13 @@ void log_printf(LogLevel level, const char* file, int line, const char* format,
|
||||
vsnprintf(message, sizeof(message), format, ap);
|
||||
va_end(ap);
|
||||
uint64_t timeUs = Os::timeNanos() / 1000ULL;
|
||||
fprintf(stderr, ":%d:%-25s:%-4d: %010lld us: %s\n", level, file, line, timeUs/1ULL, message);
|
||||
fprintf(outFile, ":%d:%-25s:%-4d: %010lld us: %s\n", level, file, line, timeUs/1ULL, message);
|
||||
|
||||
}
|
||||
void log_printf(LogLevel level, const char* file, int line, uint64_t* start, const char* format, ...) {
|
||||
|
||||
// ================================================================================================
|
||||
void log_printf(LogLevel level, const char* file, int line, uint64_t* start,
|
||||
const char* format, ...) {
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, format);
|
||||
@@ -104,9 +115,10 @@ void log_printf(LogLevel level, const char* file, int line, uint64_t* start, con
|
||||
va_end(ap);
|
||||
uint64_t timeUs = Os::timeNanos() / 1000ULL;
|
||||
if (start == 0 || *start == 0) {
|
||||
fprintf(stderr, ":%d:%-25s:%-4d: %010lld us: %s\n", level, file, line, timeUs/1ULL, message);
|
||||
fprintf(outFile, ":%d:%-25s:%-4d: %010lld us: %s\n", level, file, line, timeUs/1ULL, message);
|
||||
} else {
|
||||
fprintf(stderr, ":%d:%-25s:%-4d: %010lld us: %s: duration: %lld us\n", level, file, line, timeUs/1ULL, message, (timeUs - *start)/1ULL);
|
||||
fprintf(outFile, ":%d:%-25s:%-4d: %010lld us: %s: duration: %lld us\n", level, file, line,
|
||||
timeUs/1ULL, message, (timeUs - *start)/1ULL);
|
||||
}
|
||||
if (*start == 0) {
|
||||
*start = timeUs;
|
||||
|
||||
+5
-1
@@ -23,7 +23,8 @@
|
||||
|
||||
|
||||
#include <cassert>
|
||||
#include <string.h>
|
||||
#include <cstring>
|
||||
#include <cstdio>
|
||||
#include <cstdint>
|
||||
//! \addtogroup Utils
|
||||
#ifdef _WIN32
|
||||
@@ -58,6 +59,9 @@ enum LogMask {
|
||||
LOG_ALWAYS = 0xFFFFFFFF, //!< Log always even mask flag is zero
|
||||
};
|
||||
|
||||
//! \brief log file output
|
||||
extern FILE* outFile;
|
||||
|
||||
//! \cond ignore
|
||||
extern "C" void breakpoint();
|
||||
//! \endcond
|
||||
|
||||
@@ -145,6 +145,12 @@ bool Flag::init() {
|
||||
flag.setValue(it->second);
|
||||
}
|
||||
}
|
||||
if (!flagIsDefault(AMD_LOG_LEVEL)) {
|
||||
if (!flagIsDefault(AMD_LOG_LEVEL_FILE)) {
|
||||
std::string fileName = AMD_LOG_LEVEL_FILE;
|
||||
outFile = fopen(fileName.c_str(), "w");
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
+3
-1
@@ -258,7 +258,9 @@ release(bool, PAL_EMBED_KERNEL_MD, false, \
|
||||
"Enables writing kernel metadata into command buffers.") \
|
||||
release(cstring, ROC_GLOBAL_CU_MASK, "", \
|
||||
"Sets a global CU mask (entered as hex value) for all queues," \
|
||||
"Each active bit represents using one CU (e.g., 0xf enables only 4 CUs)")
|
||||
"Each active bit represents using one CU (e.g., 0xf enables only 4 CUs)") \
|
||||
release(cstring, AMD_LOG_LEVEL_FILE, "", \
|
||||
"Set output file for AMD_LOG_LEVEL, Default is stderr")
|
||||
|
||||
namespace amd {
|
||||
|
||||
|
||||
새 이슈에서 참조
사용자 차단