Loading system/gd/common/audit_log.cc +4 −4 Original line number Diff line number Diff line Loading @@ -21,26 +21,26 @@ #include "os/log.h" namespace { #if defined(__ANDROID__) #if defined(__ANDROID__) && !defined (FUZZ_TARGET) // Tags for security logging, should be in sync with // frameworks/base/core/java/android/app/admin/SecurityLogTags.logtags constexpr int SEC_TAG_BLUETOOTH_CONNECTION = 210039; #endif /* defined(__ANDROID__) */ #endif /* defined(__ANDROID__) && !defined (FUZZ_TARGET) */ } // namespace namespace bluetooth { namespace common { void LogConnectionAdminAuditEvent(const char* action, const hci::Address& address, hci::ErrorCode status) { #if defined(__ANDROID__) #if defined(__ANDROID__) && !defined (FUZZ_TARGET) android_log_event_list(SEC_TAG_BLUETOOTH_CONNECTION) << ADDRESS_TO_LOGGABLE_CSTR(address) << /* success */ int32_t(status == hci::ErrorCode::SUCCESS) << common::StringFormat("%s: %s", action, ErrorCodeText(status).c_str()).c_str() << LOG_ID_SECURITY; #endif /* defined(__ANDROID__) */ #endif /* defined(__ANDROID__) && !defined (FUZZ_TARGET) */ } } // namespace common Loading system/gd/os/log.h +94 −60 Original line number Diff line number Diff line Loading @@ -31,99 +31,108 @@ static_assert(LOG_TAG != nullptr, "LOG_TAG should never be NULL"); #include "os/log_tags.h" #include "os/logging/log_adapter.h" #if defined(FUZZ_TARGET) #define LOG_VERBOSE_INT(...) #define LOG_DEBUG_INT(...) #define LOG_INFO_INT(...) #define LOG_WARN_INT(...) #define LOG_ERROR_INT(...) do { \ fprintf(stderr, __VA_ARGS__); \ } while (false) // for fuzz targets, we just // need to abort in this statement // to catch the bug #define LOG_ALWAYS_FATAL_INT(...) do { \ fprintf(stderr, __VA_ARGS__); \ abort(); \ } while (false) #else /* end of defined(FUZZ_TARGET) */ #if defined(__ANDROID__) #include <log/log.h> #include <log/log_event_list.h> #ifdef FUZZ_TARGET #define LOG_VERBOSE(...) #define LOG_DEBUG(...) #define LOG_INFO(...) #define LOG_WARN(...) #else static_assert(LOG_TAG != nullptr, "LOG_TAG is null after header inclusion"); #if __has_include("src/init_flags.rs.h") #include "common/init_flags.h" #define LOG_VERBOSE(fmt, args...) \ #define LOG_VERBOSE_INT(fmt, args...) \ do { \ if (bluetooth::common::InitFlags::GetLogLevelForTag(LOG_TAG) >= LOG_TAG_VERBOSE) { \ ALOGV("%s:%d %s: " fmt, __FILE__, __LINE__, __func__, ##args); \ ALOGV(fmt, ##args); \ } \ } while (false) #define LOG_DEBUG(fmt, args...) \ #define LOG_DEBUG_INT(fmt, args...) \ do { \ if (bluetooth::common::InitFlags::GetLogLevelForTag(LOG_TAG) >= LOG_TAG_DEBUG) { \ ALOGD("%s:%d %s: " fmt, __FILE__, __LINE__, __func__, ##args); \ ALOGD(fmt, ##args); \ } \ } while (false) #endif /* __has_include("src/init_flags.rs.h") */ #define LOG_INFO(fmt, args...) ALOGI("%s:%d %s: " fmt, __FILE__, __LINE__, __func__, ##args) #define LOG_WARN(fmt, args...) ALOGW("%s:%d %s: " fmt, __FILE__, __LINE__, __func__, ##args) #endif /* FUZZ_TARGET */ #define LOG_ERROR(fmt, args...) ALOGE("%s:%d %s: " fmt, __FILE__, __LINE__, __func__, ##args) #define LOG_INFO_INT(fmt, args...) ALOGI(fmt, ##args) #define LOG_WARN_INT(fmt, args...) ALOGW(fmt, ##args) #define LOG_ERROR_INT(fmt, args...) ALOGE(fmt, ##args) #define LOG_ALWAYS_FATAL_INT(fmt, args...) do { \ ALOGE(fmt, ##args); \ abort(); \ } while (false) #elif defined (ANDROID_EMULATOR) #elif defined (ANDROID_EMULATOR) /* end of defined(__ANDROID__) */ // Log using android emulator logging mechanism #include "android/utils/debug.h" #define LOGWRAPPER(fmt, args...) VERBOSE_INFO(bluetooth, "bluetooth: %s:%d - %s: " fmt, \ __FILE__, __LINE__, __func__, ##args) #define LOGWRAPPER(fmt, args...) VERBOSE_INFO(bluetooth, "bluetooth: " fmt, \ ##args) #define LOG_VEBOSE(...) LOGWRAPPER(__VA_ARGS__) #define LOG_DEBUG(...) LOGWRAPPER(__VA_ARGS__) #define LOG_INFO(...) LOGWRAPPER(__VA_ARGS__) #define LOG_WARN(...) LOGWRAPPER(__VA_ARGS__) #define LOG_ERROR(...) LOGWRAPPER(__VA_ARGS__) #define LOG_ALWAYS_FATAL(fmt, args...) \ #define LOG_VEBOSE_INT(...) LOGWRAPPER(__VA_ARGS__) #define LOG_DEBUG_INT(...) LOGWRAPPER(__VA_ARGS__) #define LOG_INFO_INT(...) LOGWRAPPER(__VA_ARGS__) #define LOG_WARN_INT(...) LOGWRAPPER(__VA_ARGS__) #define LOG_ERROR_INT(...) LOGWRAPPER(__VA_ARGS__) #define LOG_ALWAYS_FATAL_INT(fmt, args...) \ do { \ fprintf(stderr, "%s:%d - %s: " fmt "\n", __FILE__, __LINE__, __func__, ##args); \ fprintf(stderr, fmt "\n", ##args); \ abort(); \ } while (false) #elif defined(TARGET_FLOSS) #elif defined(TARGET_FLOSS) /* end of defined (ANDROID_EMULATOR) */ #include "gd/common/init_flags.h" #include "gd/os/syslog.h" // Prefix the log with tag, file, line and function #define LOGWRAPPER(tag, fmt, args...) \ write_syslog(tag, "%s:%s:%d - %s: " fmt, LOG_TAG, __FILE__, __LINE__, __func__, ##args) #ifdef FUZZ_TARGET #define LOG_VERBOSE(...) #define LOG_DEBUG(...) #define LOG_INFO(...) #define LOG_WARN(...) #else #define LOG_VERBOSE(...) \ write_syslog(tag, "%s: " fmt, LOG_TAG, ##args) #define LOG_VERBOSE_INT(...) \ do { \ if (bluetooth::common::InitFlags::GetLogLevelForTag(LOG_TAG) >= LOG_TAG_VERBOSE) { \ LOGWRAPPER(LOG_TAG_VERBOSE, __VA_ARGS__); \ } \ } while (false) #define LOG_DEBUG(...) \ #define LOG_DEBUG_INT(...) \ do { \ if (bluetooth::common::InitFlags::GetLogLevelForTag(LOG_TAG) >= LOG_TAG_DEBUG) { \ LOGWRAPPER(LOG_TAG_DEBUG, __VA_ARGS__); \ } \ } while (false) #define LOG_INFO(...) LOGWRAPPER(LOG_TAG_INFO, __VA_ARGS__) #define LOG_WARN(...) LOGWRAPPER(LOG_TAG_WARN, __VA_ARGS__) #endif /*FUZZ_TARGET*/ #define LOG_ERROR(...) LOGWRAPPER(LOG_TAG_ERROR, __VA_ARGS__) #define LOG_INFO_INT(...) LOGWRAPPER(LOG_TAG_INFO, __VA_ARGS__) #define LOG_WARN_INT(...) LOGWRAPPER(LOG_TAG_WARN, __VA_ARGS__) #define LOG_ERROR_INT(...) LOGWRAPPER(LOG_TAG_ERROR, __VA_ARGS__) #define LOG_ALWAYS_FATAL(...) \ #define LOG_ALWAYS_FATAL_INT(...) \ do { \ LOGWRAPPER(LOG_TAG_FATAL, __VA_ARGS__); \ abort(); \ } while (false) #else #else /* end of defined (TARGET_FLOSS) */ /* syslog didn't work well here since we would be redefining LOG_DEBUG. */ #include <sys/syscall.h> #include <sys/types.h> Loading Loading @@ -157,31 +166,24 @@ static_assert(LOG_TAG != nullptr, "LOG_TAG is null after header inclusion"); ##args); \ } while (false) #ifdef FUZZ_TARGET #define LOG_VERBOSE(...) #define LOG_DEBUG(...) #define LOG_INFO(...) #define LOG_WARN(...) #else #define LOG_VERBOSE(fmt, args...) \ #define LOG_VERBOSE_INT(fmt, args...) \ do { \ if (bluetooth::common::InitFlags::GetLogLevelForTag(LOG_TAG) >= LOG_TAG_VERBOSE) { \ LOGWRAPPER(fmt, ##args); \ } \ } while (false) #define LOG_DEBUG(fmt, args...) \ #define LOG_DEBUG_INT(fmt, args...) \ do { \ if (bluetooth::common::InitFlags::GetLogLevelForTag(LOG_TAG) >= LOG_TAG_DEBUG) { \ LOGWRAPPER(fmt, ##args); \ } \ } while (false) #define LOG_INFO(...) LOGWRAPPER(__VA_ARGS__) #define LOG_WARN(...) LOGWRAPPER(__VA_ARGS__) #endif /* FUZZ_TARGET */ #define LOG_ERROR(...) LOGWRAPPER(__VA_ARGS__) #define LOG_INFO_INT(...) LOGWRAPPER(__VA_ARGS__) #define LOG_WARN_INT(...) LOGWRAPPER(__VA_ARGS__) #define LOG_ERROR_INT(...) LOGWRAPPER(__VA_ARGS__) #ifndef LOG_ALWAYS_FATAL #define LOG_ALWAYS_FATAL(...) \ #define LOG_ALWAYS_FATAL_INT(...) \ do { \ LOGWRAPPER(__VA_ARGS__); \ abort(); \ Loading @@ -190,6 +192,37 @@ static_assert(LOG_TAG != nullptr, "LOG_TAG is null after header inclusion"); #endif /* defined(__ANDROID__) */ #endif /* defined(FUZZ_TARGET) */ #define _LOG_SRC_FMT_STR "%s:%d - %s: " // --------------------------------------------------------- // All MACROs defined above are internal and should *not* be // used directly (use LOG_XXX defined below instead). // the output of LOG_XXX_INT does not contain the source // location of the log emitting statement, so far they are only used by // LogMsg, where the source locations is passed in. #define LOG_VERBOSE(fmt, args...) \ LOG_VERBOSE_INT(_LOG_SRC_FMT_STR fmt, __FILE__, __LINE__, __func__, ##args) #define LOG_DEBUG(fmt, args...) \ LOG_DEBUG_INT(_LOG_SRC_FMT_STR fmt, __FILE__, __LINE__, __func__, ##args) #define LOG_INFO(fmt, args...) \ LOG_INFO_INT(_LOG_SRC_FMT_STR fmt, __FILE__, __LINE__, __func__, ##args) #define LOG_WARN(fmt, args...) \ LOG_WARN_INT(_LOG_SRC_FMT_STR fmt, __FILE__, __LINE__, __func__, ##args) #define LOG_ERROR(fmt, args...) \ LOG_ERROR_INT(_LOG_SRC_FMT_STR fmt, __FILE__, __LINE__, __func__, ##args) #ifndef LOG_ALWAYS_FATAL #define LOG_ALWAYS_FATAL(fmt, args...) \ LOG_ALWAYS_FATAL_INT(_LOG_SRC_FMT_STR fmt, __FILE__, __LINE__, __func__, ##args) #endif #define ASSERT(condition) \ do { \ if (!(condition)) { \ Loading @@ -209,3 +242,4 @@ static_assert(LOG_TAG != nullptr, "LOG_TAG is null after header inclusion"); case code: \ return #code #endif system/internal_include/bt_trace.h +43 −39 Original line number Diff line number Diff line Loading @@ -20,6 +20,12 @@ #include <stdint.h> // move this function outof extern "C" block // as it is a C++ function. extern void LogMsg(uint32_t trace_set_mask, const char *filename, uint32_t linenum, const char *func, const char* fmt_str, ...); #ifdef __cplusplus extern "C" { #endif Loading Loading @@ -245,7 +251,7 @@ static const char BTE_LOGMSG_MODULE[] = "bte_logmsg_module"; #endif #define BT_TRACE(l, t, ...) \ LogMsg((TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t)), ##__VA_ARGS__) LogMsg((TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t)), __FILE__, __LINE__, __func__, ##__VA_ARGS__) /* Define tracing for the HCI unit */ #define HCI_TRACE_ERROR(...) \ Loading Loading @@ -636,42 +642,42 @@ extern uint8_t btif_trace_level; #define BTIF_TRACE_ERROR(...) \ { \ if (btif_trace_level >= BT_TRACE_LEVEL_ERROR) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_ERROR, \ ##__VA_ARGS__); \ } #define BTIF_TRACE_WARNING(...) \ { \ if (btif_trace_level >= BT_TRACE_LEVEL_WARNING) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_WARNING, \ ##__VA_ARGS__); \ } #define BTIF_TRACE_API(...) \ { \ if (btif_trace_level >= BT_TRACE_LEVEL_API) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_API, \ ##__VA_ARGS__); \ } #define BTIF_TRACE_EVENT(...) \ { \ if (btif_trace_level >= BT_TRACE_LEVEL_EVENT) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_EVENT, \ ##__VA_ARGS__); \ } #define BTIF_TRACE_DEBUG(...) \ { \ if (btif_trace_level >= BT_TRACE_LEVEL_DEBUG) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_DEBUG, \ ##__VA_ARGS__); \ } #define BTIF_TRACE_VERBOSE(...) \ { \ if (btif_trace_level >= BT_TRACE_LEVEL_VERBOSE) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_DEBUG, \ ##__VA_ARGS__); \ } Loading @@ -680,42 +686,42 @@ extern uint8_t btif_trace_level; #define APPL_TRACE_ERROR(...) \ { \ if (appl_trace_level >= BT_TRACE_LEVEL_ERROR) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_ERROR, \ ##__VA_ARGS__); \ } #define APPL_TRACE_WARNING(...) \ { \ if (appl_trace_level >= BT_TRACE_LEVEL_WARNING) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_WARNING, \ ##__VA_ARGS__); \ } #define APPL_TRACE_API(...) \ { \ if (appl_trace_level >= BT_TRACE_LEVEL_API) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_API, \ ##__VA_ARGS__); \ } #define APPL_TRACE_EVENT(...) \ { \ if (appl_trace_level >= BT_TRACE_LEVEL_EVENT) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_EVENT, \ ##__VA_ARGS__); \ } #define APPL_TRACE_DEBUG(...) \ { \ if (appl_trace_level >= BT_TRACE_LEVEL_DEBUG) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_DEBUG, \ ##__VA_ARGS__); \ } #define APPL_TRACE_VERBOSE(...) \ { \ if (appl_trace_level >= BT_TRACE_LEVEL_VERBOSE) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_DEBUG, \ ##__VA_ARGS__); \ } Loading @@ -735,8 +741,6 @@ typedef struct { * declaration in all the files using APPL_TRACExxx macros */ extern uint8_t appl_trace_level; void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...); #ifdef __cplusplus } #endif Loading system/main/bte_logmsg.cc +11 −7 Original line number Diff line number Diff line Loading @@ -87,7 +87,9 @@ static const char* const bt_layer_tags[] = { "bt_nfa", }; void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) { void LogMsg(uint32_t trace_set_mask, const char* filename, uint32_t linenum, const char* func, const char* fmt_str, ...) { char buffer[BTE_LOG_BUF_SIZE]; int trace_layer = TRACE_GET_LAYER(trace_set_mask); if (trace_layer >= TRACE_LAYER_MAX_NUM) trace_layer = 0; Loading @@ -102,24 +104,26 @@ void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) { switch (TRACE_GET_TYPE(trace_set_mask)) { case TRACE_TYPE_ERROR: LOG_ERROR("%s", buffer); LOG_ERROR_INT(_LOG_SRC_FMT_STR "%s", filename, linenum, func, buffer); break; case TRACE_TYPE_WARNING: LOG_WARN("%s", buffer); LOG_WARN_INT(_LOG_SRC_FMT_STR "%s", filename, linenum, func, buffer); break; case TRACE_TYPE_API: case TRACE_TYPE_EVENT: LOG_INFO("%s", buffer); LOG_INFO_INT(_LOG_SRC_FMT_STR "%s", filename, linenum, func, buffer); break; case TRACE_TYPE_DEBUG: LOG_INFO("%s", buffer); LOG_DEBUG_INT(_LOG_SRC_FMT_STR "%s", filename, linenum, func, buffer); break; case TRACE_TYPE_INFO: LOG_INFO("%s", buffer); LOG_INFO_INT(_LOG_SRC_FMT_STR "%s", filename, linenum, func, buffer); break; default: /* we should never get this */ LOG_ERROR("!BAD TRACE TYPE! %s", buffer); LOG_ERROR_INT("!BAD TRACE TYPE! " _LOG_SRC_FMT_STR "%s", filename, linenum, func, buffer); CHECK(TRACE_GET_TYPE(trace_set_mask) == TRACE_TYPE_ERROR); break; } Loading system/test/common/log_msg.cc +3 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,9 @@ std::function<void(uint32_t, const char*)> bluetooth::testing::common::log_msg = []([[maybe_unused]] uint32_t trace_set_mask, [[maybe_unused]] const char* buffer) {}; extern "C" void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) { void LogMsg(uint32_t trace_set_mask, const char* filename, uint32_t linenum, const char* func, const char* fmt_str, ...) { char buffer[kTestBufferLogSize]; va_list ap; Loading Loading
system/gd/common/audit_log.cc +4 −4 Original line number Diff line number Diff line Loading @@ -21,26 +21,26 @@ #include "os/log.h" namespace { #if defined(__ANDROID__) #if defined(__ANDROID__) && !defined (FUZZ_TARGET) // Tags for security logging, should be in sync with // frameworks/base/core/java/android/app/admin/SecurityLogTags.logtags constexpr int SEC_TAG_BLUETOOTH_CONNECTION = 210039; #endif /* defined(__ANDROID__) */ #endif /* defined(__ANDROID__) && !defined (FUZZ_TARGET) */ } // namespace namespace bluetooth { namespace common { void LogConnectionAdminAuditEvent(const char* action, const hci::Address& address, hci::ErrorCode status) { #if defined(__ANDROID__) #if defined(__ANDROID__) && !defined (FUZZ_TARGET) android_log_event_list(SEC_TAG_BLUETOOTH_CONNECTION) << ADDRESS_TO_LOGGABLE_CSTR(address) << /* success */ int32_t(status == hci::ErrorCode::SUCCESS) << common::StringFormat("%s: %s", action, ErrorCodeText(status).c_str()).c_str() << LOG_ID_SECURITY; #endif /* defined(__ANDROID__) */ #endif /* defined(__ANDROID__) && !defined (FUZZ_TARGET) */ } } // namespace common Loading
system/gd/os/log.h +94 −60 Original line number Diff line number Diff line Loading @@ -31,99 +31,108 @@ static_assert(LOG_TAG != nullptr, "LOG_TAG should never be NULL"); #include "os/log_tags.h" #include "os/logging/log_adapter.h" #if defined(FUZZ_TARGET) #define LOG_VERBOSE_INT(...) #define LOG_DEBUG_INT(...) #define LOG_INFO_INT(...) #define LOG_WARN_INT(...) #define LOG_ERROR_INT(...) do { \ fprintf(stderr, __VA_ARGS__); \ } while (false) // for fuzz targets, we just // need to abort in this statement // to catch the bug #define LOG_ALWAYS_FATAL_INT(...) do { \ fprintf(stderr, __VA_ARGS__); \ abort(); \ } while (false) #else /* end of defined(FUZZ_TARGET) */ #if defined(__ANDROID__) #include <log/log.h> #include <log/log_event_list.h> #ifdef FUZZ_TARGET #define LOG_VERBOSE(...) #define LOG_DEBUG(...) #define LOG_INFO(...) #define LOG_WARN(...) #else static_assert(LOG_TAG != nullptr, "LOG_TAG is null after header inclusion"); #if __has_include("src/init_flags.rs.h") #include "common/init_flags.h" #define LOG_VERBOSE(fmt, args...) \ #define LOG_VERBOSE_INT(fmt, args...) \ do { \ if (bluetooth::common::InitFlags::GetLogLevelForTag(LOG_TAG) >= LOG_TAG_VERBOSE) { \ ALOGV("%s:%d %s: " fmt, __FILE__, __LINE__, __func__, ##args); \ ALOGV(fmt, ##args); \ } \ } while (false) #define LOG_DEBUG(fmt, args...) \ #define LOG_DEBUG_INT(fmt, args...) \ do { \ if (bluetooth::common::InitFlags::GetLogLevelForTag(LOG_TAG) >= LOG_TAG_DEBUG) { \ ALOGD("%s:%d %s: " fmt, __FILE__, __LINE__, __func__, ##args); \ ALOGD(fmt, ##args); \ } \ } while (false) #endif /* __has_include("src/init_flags.rs.h") */ #define LOG_INFO(fmt, args...) ALOGI("%s:%d %s: " fmt, __FILE__, __LINE__, __func__, ##args) #define LOG_WARN(fmt, args...) ALOGW("%s:%d %s: " fmt, __FILE__, __LINE__, __func__, ##args) #endif /* FUZZ_TARGET */ #define LOG_ERROR(fmt, args...) ALOGE("%s:%d %s: " fmt, __FILE__, __LINE__, __func__, ##args) #define LOG_INFO_INT(fmt, args...) ALOGI(fmt, ##args) #define LOG_WARN_INT(fmt, args...) ALOGW(fmt, ##args) #define LOG_ERROR_INT(fmt, args...) ALOGE(fmt, ##args) #define LOG_ALWAYS_FATAL_INT(fmt, args...) do { \ ALOGE(fmt, ##args); \ abort(); \ } while (false) #elif defined (ANDROID_EMULATOR) #elif defined (ANDROID_EMULATOR) /* end of defined(__ANDROID__) */ // Log using android emulator logging mechanism #include "android/utils/debug.h" #define LOGWRAPPER(fmt, args...) VERBOSE_INFO(bluetooth, "bluetooth: %s:%d - %s: " fmt, \ __FILE__, __LINE__, __func__, ##args) #define LOGWRAPPER(fmt, args...) VERBOSE_INFO(bluetooth, "bluetooth: " fmt, \ ##args) #define LOG_VEBOSE(...) LOGWRAPPER(__VA_ARGS__) #define LOG_DEBUG(...) LOGWRAPPER(__VA_ARGS__) #define LOG_INFO(...) LOGWRAPPER(__VA_ARGS__) #define LOG_WARN(...) LOGWRAPPER(__VA_ARGS__) #define LOG_ERROR(...) LOGWRAPPER(__VA_ARGS__) #define LOG_ALWAYS_FATAL(fmt, args...) \ #define LOG_VEBOSE_INT(...) LOGWRAPPER(__VA_ARGS__) #define LOG_DEBUG_INT(...) LOGWRAPPER(__VA_ARGS__) #define LOG_INFO_INT(...) LOGWRAPPER(__VA_ARGS__) #define LOG_WARN_INT(...) LOGWRAPPER(__VA_ARGS__) #define LOG_ERROR_INT(...) LOGWRAPPER(__VA_ARGS__) #define LOG_ALWAYS_FATAL_INT(fmt, args...) \ do { \ fprintf(stderr, "%s:%d - %s: " fmt "\n", __FILE__, __LINE__, __func__, ##args); \ fprintf(stderr, fmt "\n", ##args); \ abort(); \ } while (false) #elif defined(TARGET_FLOSS) #elif defined(TARGET_FLOSS) /* end of defined (ANDROID_EMULATOR) */ #include "gd/common/init_flags.h" #include "gd/os/syslog.h" // Prefix the log with tag, file, line and function #define LOGWRAPPER(tag, fmt, args...) \ write_syslog(tag, "%s:%s:%d - %s: " fmt, LOG_TAG, __FILE__, __LINE__, __func__, ##args) #ifdef FUZZ_TARGET #define LOG_VERBOSE(...) #define LOG_DEBUG(...) #define LOG_INFO(...) #define LOG_WARN(...) #else #define LOG_VERBOSE(...) \ write_syslog(tag, "%s: " fmt, LOG_TAG, ##args) #define LOG_VERBOSE_INT(...) \ do { \ if (bluetooth::common::InitFlags::GetLogLevelForTag(LOG_TAG) >= LOG_TAG_VERBOSE) { \ LOGWRAPPER(LOG_TAG_VERBOSE, __VA_ARGS__); \ } \ } while (false) #define LOG_DEBUG(...) \ #define LOG_DEBUG_INT(...) \ do { \ if (bluetooth::common::InitFlags::GetLogLevelForTag(LOG_TAG) >= LOG_TAG_DEBUG) { \ LOGWRAPPER(LOG_TAG_DEBUG, __VA_ARGS__); \ } \ } while (false) #define LOG_INFO(...) LOGWRAPPER(LOG_TAG_INFO, __VA_ARGS__) #define LOG_WARN(...) LOGWRAPPER(LOG_TAG_WARN, __VA_ARGS__) #endif /*FUZZ_TARGET*/ #define LOG_ERROR(...) LOGWRAPPER(LOG_TAG_ERROR, __VA_ARGS__) #define LOG_INFO_INT(...) LOGWRAPPER(LOG_TAG_INFO, __VA_ARGS__) #define LOG_WARN_INT(...) LOGWRAPPER(LOG_TAG_WARN, __VA_ARGS__) #define LOG_ERROR_INT(...) LOGWRAPPER(LOG_TAG_ERROR, __VA_ARGS__) #define LOG_ALWAYS_FATAL(...) \ #define LOG_ALWAYS_FATAL_INT(...) \ do { \ LOGWRAPPER(LOG_TAG_FATAL, __VA_ARGS__); \ abort(); \ } while (false) #else #else /* end of defined (TARGET_FLOSS) */ /* syslog didn't work well here since we would be redefining LOG_DEBUG. */ #include <sys/syscall.h> #include <sys/types.h> Loading Loading @@ -157,31 +166,24 @@ static_assert(LOG_TAG != nullptr, "LOG_TAG is null after header inclusion"); ##args); \ } while (false) #ifdef FUZZ_TARGET #define LOG_VERBOSE(...) #define LOG_DEBUG(...) #define LOG_INFO(...) #define LOG_WARN(...) #else #define LOG_VERBOSE(fmt, args...) \ #define LOG_VERBOSE_INT(fmt, args...) \ do { \ if (bluetooth::common::InitFlags::GetLogLevelForTag(LOG_TAG) >= LOG_TAG_VERBOSE) { \ LOGWRAPPER(fmt, ##args); \ } \ } while (false) #define LOG_DEBUG(fmt, args...) \ #define LOG_DEBUG_INT(fmt, args...) \ do { \ if (bluetooth::common::InitFlags::GetLogLevelForTag(LOG_TAG) >= LOG_TAG_DEBUG) { \ LOGWRAPPER(fmt, ##args); \ } \ } while (false) #define LOG_INFO(...) LOGWRAPPER(__VA_ARGS__) #define LOG_WARN(...) LOGWRAPPER(__VA_ARGS__) #endif /* FUZZ_TARGET */ #define LOG_ERROR(...) LOGWRAPPER(__VA_ARGS__) #define LOG_INFO_INT(...) LOGWRAPPER(__VA_ARGS__) #define LOG_WARN_INT(...) LOGWRAPPER(__VA_ARGS__) #define LOG_ERROR_INT(...) LOGWRAPPER(__VA_ARGS__) #ifndef LOG_ALWAYS_FATAL #define LOG_ALWAYS_FATAL(...) \ #define LOG_ALWAYS_FATAL_INT(...) \ do { \ LOGWRAPPER(__VA_ARGS__); \ abort(); \ Loading @@ -190,6 +192,37 @@ static_assert(LOG_TAG != nullptr, "LOG_TAG is null after header inclusion"); #endif /* defined(__ANDROID__) */ #endif /* defined(FUZZ_TARGET) */ #define _LOG_SRC_FMT_STR "%s:%d - %s: " // --------------------------------------------------------- // All MACROs defined above are internal and should *not* be // used directly (use LOG_XXX defined below instead). // the output of LOG_XXX_INT does not contain the source // location of the log emitting statement, so far they are only used by // LogMsg, where the source locations is passed in. #define LOG_VERBOSE(fmt, args...) \ LOG_VERBOSE_INT(_LOG_SRC_FMT_STR fmt, __FILE__, __LINE__, __func__, ##args) #define LOG_DEBUG(fmt, args...) \ LOG_DEBUG_INT(_LOG_SRC_FMT_STR fmt, __FILE__, __LINE__, __func__, ##args) #define LOG_INFO(fmt, args...) \ LOG_INFO_INT(_LOG_SRC_FMT_STR fmt, __FILE__, __LINE__, __func__, ##args) #define LOG_WARN(fmt, args...) \ LOG_WARN_INT(_LOG_SRC_FMT_STR fmt, __FILE__, __LINE__, __func__, ##args) #define LOG_ERROR(fmt, args...) \ LOG_ERROR_INT(_LOG_SRC_FMT_STR fmt, __FILE__, __LINE__, __func__, ##args) #ifndef LOG_ALWAYS_FATAL #define LOG_ALWAYS_FATAL(fmt, args...) \ LOG_ALWAYS_FATAL_INT(_LOG_SRC_FMT_STR fmt, __FILE__, __LINE__, __func__, ##args) #endif #define ASSERT(condition) \ do { \ if (!(condition)) { \ Loading @@ -209,3 +242,4 @@ static_assert(LOG_TAG != nullptr, "LOG_TAG is null after header inclusion"); case code: \ return #code #endif
system/internal_include/bt_trace.h +43 −39 Original line number Diff line number Diff line Loading @@ -20,6 +20,12 @@ #include <stdint.h> // move this function outof extern "C" block // as it is a C++ function. extern void LogMsg(uint32_t trace_set_mask, const char *filename, uint32_t linenum, const char *func, const char* fmt_str, ...); #ifdef __cplusplus extern "C" { #endif Loading Loading @@ -245,7 +251,7 @@ static const char BTE_LOGMSG_MODULE[] = "bte_logmsg_module"; #endif #define BT_TRACE(l, t, ...) \ LogMsg((TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t)), ##__VA_ARGS__) LogMsg((TRACE_CTRL_GENERAL | (l) | TRACE_ORG_STACK | (t)), __FILE__, __LINE__, __func__, ##__VA_ARGS__) /* Define tracing for the HCI unit */ #define HCI_TRACE_ERROR(...) \ Loading Loading @@ -636,42 +642,42 @@ extern uint8_t btif_trace_level; #define BTIF_TRACE_ERROR(...) \ { \ if (btif_trace_level >= BT_TRACE_LEVEL_ERROR) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_ERROR, \ ##__VA_ARGS__); \ } #define BTIF_TRACE_WARNING(...) \ { \ if (btif_trace_level >= BT_TRACE_LEVEL_WARNING) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_WARNING, \ ##__VA_ARGS__); \ } #define BTIF_TRACE_API(...) \ { \ if (btif_trace_level >= BT_TRACE_LEVEL_API) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_API, \ ##__VA_ARGS__); \ } #define BTIF_TRACE_EVENT(...) \ { \ if (btif_trace_level >= BT_TRACE_LEVEL_EVENT) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_EVENT, \ ##__VA_ARGS__); \ } #define BTIF_TRACE_DEBUG(...) \ { \ if (btif_trace_level >= BT_TRACE_LEVEL_DEBUG) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_DEBUG, \ ##__VA_ARGS__); \ } #define BTIF_TRACE_VERBOSE(...) \ { \ if (btif_trace_level >= BT_TRACE_LEVEL_VERBOSE) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_DEBUG, \ ##__VA_ARGS__); \ } Loading @@ -680,42 +686,42 @@ extern uint8_t btif_trace_level; #define APPL_TRACE_ERROR(...) \ { \ if (appl_trace_level >= BT_TRACE_LEVEL_ERROR) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_ERROR, \ ##__VA_ARGS__); \ } #define APPL_TRACE_WARNING(...) \ { \ if (appl_trace_level >= BT_TRACE_LEVEL_WARNING) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_WARNING, \ ##__VA_ARGS__); \ } #define APPL_TRACE_API(...) \ { \ if (appl_trace_level >= BT_TRACE_LEVEL_API) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_API, \ ##__VA_ARGS__); \ } #define APPL_TRACE_EVENT(...) \ { \ if (appl_trace_level >= BT_TRACE_LEVEL_EVENT) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_EVENT, \ ##__VA_ARGS__); \ } #define APPL_TRACE_DEBUG(...) \ { \ if (appl_trace_level >= BT_TRACE_LEVEL_DEBUG) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_DEBUG, \ ##__VA_ARGS__); \ } #define APPL_TRACE_VERBOSE(...) \ { \ if (appl_trace_level >= BT_TRACE_LEVEL_VERBOSE) \ LogMsg(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL | \ BT_TRACE(TRACE_CTRL_GENERAL | TRACE_LAYER_NONE | TRACE_ORG_APPL,\ TRACE_TYPE_DEBUG, \ ##__VA_ARGS__); \ } Loading @@ -735,8 +741,6 @@ typedef struct { * declaration in all the files using APPL_TRACExxx macros */ extern uint8_t appl_trace_level; void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...); #ifdef __cplusplus } #endif Loading
system/main/bte_logmsg.cc +11 −7 Original line number Diff line number Diff line Loading @@ -87,7 +87,9 @@ static const char* const bt_layer_tags[] = { "bt_nfa", }; void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) { void LogMsg(uint32_t trace_set_mask, const char* filename, uint32_t linenum, const char* func, const char* fmt_str, ...) { char buffer[BTE_LOG_BUF_SIZE]; int trace_layer = TRACE_GET_LAYER(trace_set_mask); if (trace_layer >= TRACE_LAYER_MAX_NUM) trace_layer = 0; Loading @@ -102,24 +104,26 @@ void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) { switch (TRACE_GET_TYPE(trace_set_mask)) { case TRACE_TYPE_ERROR: LOG_ERROR("%s", buffer); LOG_ERROR_INT(_LOG_SRC_FMT_STR "%s", filename, linenum, func, buffer); break; case TRACE_TYPE_WARNING: LOG_WARN("%s", buffer); LOG_WARN_INT(_LOG_SRC_FMT_STR "%s", filename, linenum, func, buffer); break; case TRACE_TYPE_API: case TRACE_TYPE_EVENT: LOG_INFO("%s", buffer); LOG_INFO_INT(_LOG_SRC_FMT_STR "%s", filename, linenum, func, buffer); break; case TRACE_TYPE_DEBUG: LOG_INFO("%s", buffer); LOG_DEBUG_INT(_LOG_SRC_FMT_STR "%s", filename, linenum, func, buffer); break; case TRACE_TYPE_INFO: LOG_INFO("%s", buffer); LOG_INFO_INT(_LOG_SRC_FMT_STR "%s", filename, linenum, func, buffer); break; default: /* we should never get this */ LOG_ERROR("!BAD TRACE TYPE! %s", buffer); LOG_ERROR_INT("!BAD TRACE TYPE! " _LOG_SRC_FMT_STR "%s", filename, linenum, func, buffer); CHECK(TRACE_GET_TYPE(trace_set_mask) == TRACE_TYPE_ERROR); break; } Loading
system/test/common/log_msg.cc +3 −1 Original line number Diff line number Diff line Loading @@ -33,7 +33,9 @@ std::function<void(uint32_t, const char*)> bluetooth::testing::common::log_msg = []([[maybe_unused]] uint32_t trace_set_mask, [[maybe_unused]] const char* buffer) {}; extern "C" void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) { void LogMsg(uint32_t trace_set_mask, const char* filename, uint32_t linenum, const char* func, const char* fmt_str, ...) { char buffer[kTestBufferLogSize]; va_list ap; Loading