[PATCH BlueZ v2 1/9] log: Introduce DBG_IS_ENABLED

Luiz Augusto von Dentz
2022-03-23T20:13:49Z

This introduces DBG_IS_ENABLE macro which can be used to check if
BTD_DEBUG_FLAG_PRINT has been enabled for the current file.
---
src/log.c | 12 ++++++++++++
src/log.h | 11 +++++++++++
2 files changed, 23 insertions(+)

diff --git a/src/log.c b/src/log.c
index 0155a6bba..1157859ef 100644
--- a/src/log.c
+++ b/src/log.c
@@ -179,6 +179,18 @@ void __btd_log_init(const char *debug, int detach)
info("Bluetooth daemon %s", VERSION);
}

+bool __btd_log_is_enabled(const char *file)
+{
+ struct btd_debug_desc *desc;
+
+ for (desc = __start___debug; desc < __stop___debug; desc++) {
+ if (desc->file && g_pattern_match_simple(file, desc->file))
+ return desc->flags & BTD_DEBUG_FLAG_PRINT;
+ }
+
+ return false;
+}
+
void __btd_log_cleanup(void)
{
closelog();
diff --git a/src/log.h b/src/log.h
index 74941beb2..e35238870 100644
--- a/src/log.h
+++ b/src/log.h
@@ -9,6 +9,7 @@
*/

#include <stdint.h>
+#include <stdbool.h>

void info(const char *format, ...) __attribute__((format(printf, 1, 2)));

@@ -27,6 +28,7 @@ void btd_debug(uint16_t index, const char *format, ...)
void __btd_log_init(const char *debug, int detach);
void __btd_log_cleanup(void);
void __btd_toggle_debug(void);
+bool __btd_log_is_enabled(const char *file);

struct btd_debug_desc {
const char *file;
@@ -38,6 +40,15 @@ struct btd_debug_desc {
void __btd_enable_debug(struct btd_debug_desc *start,
struct btd_debug_desc *stop);

+/* DBG_IS_ENABLED:
+ *
+ * Simple macro that can be used to check if debug has been enabled for the
+ * __FILE__.
+ * Note: This does a lookup thus why it was not used by the likes of
+ * DBG/DBG_IDX which loads it directly from section("__debug").
+ */
+#define DBG_IS_ENABLED() __btd_log_is_enabled(__FILE__)
+
/**
* DBG:
* @fmt: format string
--
2.35.1