Pass log levels from emugl layer

This commit is contained in:
Simon Fels 2017-01-26 09:21:53 +01:00
commit 1b1b2c35a1
9 changed files with 54 additions and 25 deletions

View file

@ -98,6 +98,6 @@ void ChecksumCalculatorThreadInfo::validOrDie(void* buf,
// We should actually call crashhandler_die(message), but I don't think we
// can link to that library from here
if (!validate(buf, bufLen, checksum, checksumLen)) {
emugl_crash_reporter(message);
emugl_crash_reporter(emugl::LogLevel::FATAL, message);
}
}

View file

@ -18,13 +18,13 @@
#include <cstdlib>
void default_crash_reporter(const char* format, ...) {
void default_crash_reporter(const emugl::LogLevel &level, const char* format, ...) {
abort();
}
crash_reporter_t emugl_crash_reporter = default_crash_reporter;
logger_t emugl_crash_reporter = default_crash_reporter;
void set_emugl_crash_reporter(crash_reporter_t crash_reporter) {
void set_emugl_crash_reporter(logger_t crash_reporter) {
if (crash_reporter) {
emugl_crash_reporter = crash_reporter;
} else {

View file

@ -16,7 +16,7 @@
#pragma once
typedef void (*crash_reporter_t)(const char* format, ...);
#include "emugl/common/logging.h"
extern crash_reporter_t emugl_crash_reporter;
void set_emugl_crash_reporter(crash_reporter_t crash_reporter);
extern logger_t emugl_crash_reporter;
void set_emugl_crash_reporter(logger_t crash_reporter);

View file

@ -16,7 +16,7 @@
#include "emugl/common/logging.h"
void default_logger(const char* fmt, ...) { }
void default_logger(const emugl::LogLevel &level, const char* fmt, ...) { }
logger_t emugl_logger = default_logger;
logger_t emugl_cxt_logger = default_logger;

View file

@ -14,10 +14,24 @@
* limitations under the License.
*/
#ifndef EMUGL_COMMON_LOGGING_H_
#define EMUGL_COMMON_LOGGING_H_
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wredundant-decls"
typedef void (*logger_t)(const char* fmt, ...);
namespace emugl {
enum class LogLevel {
TRACE,
DEBUG,
INFO,
WARNING,
ERROR,
FATAL,
};
} // namespace emugl
typedef void (*logger_t)(const emugl::LogLevel &level, const char* fmt, ...);
extern logger_t emugl_logger;
extern logger_t emugl_cxt_logger;
void set_emugl_logger(logger_t f);
@ -40,3 +54,5 @@ void set_emugl_cxt_logger(logger_t f);
#endif
#pragma GCC diagnostic pop
#endif