|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH 7/9] lib/ukdebug: Swap uk_printk() and uk_printd()
Exchanges uk_printk() with uk_printd(). uk_printk gets a lvl parameter:
uk_printk(lvl, fmt, ...)
with having KLVL_INFO (former DLVL_INFO), KLVL_WARN (former
DLVL_WARN), KLVL_ERR (KLVL_ERR), DLVL_CRIT (former KLVL_CRIT) as
value for parameter `lvl`.
uk_printd() implements former uk_printk(). Its purpose is to replace
the previous DLVL_EXTRA level. Whenever `UK_DEBUG` is defined as macro
while compiling a source file, uk_printd() statements are
effective. libukdebug additionally provides a global flag to enable
debug messages in all source files.
uk_printd(fmt, ...)
It seems to be more meaningful to redirect all messages to
ukplat_coutk() as default configuration. The uk_pr_*() shortcut
macros are updated to reflect this new scheme.
Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
---
lib/ukdebug/Config.uk | 52 ++++++++--------
lib/ukdebug/exportsyms.uk | 12 ++--
lib/ukdebug/hexdump.c | 43 ++++++-------
lib/ukdebug/include/uk/hexdump.h | 40 ++++++-------
lib/ukdebug/include/uk/print.h | 116 ++++++++++++++++-------------------
lib/ukdebug/print.c | 126 +++++++++++++++++++--------------------
6 files changed, 184 insertions(+), 205 deletions(-)
diff --git a/lib/ukdebug/Config.uk b/lib/ukdebug/Config.uk
index dcaeb3a..86e33e5 100644
--- a/lib/ukdebug/Config.uk
+++ b/lib/ukdebug/Config.uk
@@ -8,50 +8,49 @@ config LIBUKDEBUG_PRINTK
bool "Enable kernel messages (uk_printk)"
default y
help
- Build with debugging symbols enabled.
-
-config LIBUKDEBUG_PRINTD
- bool "Enable debug messages (uk_printd)"
- default y
- help
- Build with debugging symbols enabled.
+ Enables kernel message console.
choice
- prompt "Debug message level"
- default LIBUKDEBUG_PRINTD_ERR
- depends on LIBUKDEBUG_PRINTD
+ prompt "Kernel message level"
+ default LIBUKDEBUG_PRINTK_ERR
+ depends on LIBUKDEBUG_PRINTK
help
Set the level of detail of debug messages
-config LIBUKDEBUG_PRINTD_EXTRA
+config LIBUKDEBUG_PRINTK_INFO
bool "Show all types of debug messages"
-config LIBUKDEBUG_PRINTD_INFO
- bool "Show critical, error, warning, and information messages"
-
-config LIBUKDEBUG_PRINTD_WARN
+config LIBUKDEBUG_PRINTK_WARN
bool "Show critical, error, and warning messages"
-config LIBUKDEBUG_PRINTD_ERR
- bool "Show critical, and error messages (default)"
+config LIBUKDEBUG_PRINTK_ERR
+ bool "Show critical and error messages (default)"
-config LIBUKDEBUG_PRINTD_CRIT
+config LIBUKDEBUG_PRINTK_CRIT
bool "Show critical messages only"
endchoice
-config LIBUKDEBUG_PRINTD_TIME
- bool "Show timestamp in debug messages"
+config LIBUKDEBUG_PRINTK_TIME
+ bool "Show timestamp in kernel messages"
default y
- depends on LIBUKDEBUG_PRINTD
+ depends on LIBUKDEBUG_PRINTK
+
+config LIBUKDEBUG_PRINTK_STACK
+ bool "Print bottom address of stack in kernel messages"
+ default n
+ depends on LIBUKDEBUG_PRINTK
-config LIBUKDEBUG_PRINTD_STACK
- bool "Print bottom address of stack in debug messages"
+config LIBUKDEBUG_PRINTD
+ bool "Enable debug messages globally (uk_printd)"
default n
- depends on LIBUKDEBUG_PRINTD
+ help
+ Enables debug messages globally. Without this configuration,
+ debug messages can still be enabled for each compilation unit
+ individually. This happens as soon the UK_DEBUG macro is defined.
choice
prompt "Message redirection"
- default LIBUKDEBUG_NOREDIR
+ default LIBUKDEBUG_REDIR_PRINTD
depends on LIBUKDEBUG_PRINTD || LIBUKDEBUG_PRINTK
help
Output for uk_printk() and uk_printd()
@@ -62,8 +61,7 @@ config LIBUKDEBUG_NOREDIR
Keep debug and kernel output separated
config LIBUKDEBUG_REDIR_PRINTD
- bool "Debug messages on kernel output"
- depends on LIBUKDEBUG_PRINTD
+ bool "Debug messages on kernel output (default)"
help
Debug message are redirected to standard kernel output
diff --git a/lib/ukdebug/exportsyms.uk b/lib/ukdebug/exportsyms.uk
index 27187d2..75a4869 100644
--- a/lib/ukdebug/exportsyms.uk
+++ b/lib/ukdebug/exportsyms.uk
@@ -1,8 +1,8 @@
-uk_vprintk
-uk_printk
-_uk_vprintd
-_uk_printd
+uk_vprintd
+uk_printd
+_uk_vprintk
+_uk_printk
uk_hexdumpsn
uk_hexdumpf
-uk_hexdumpk
-_uk_hexdumpd
+uk_hexdumpd
+_uk_hexdumdk
diff --git a/lib/ukdebug/hexdump.c b/lib/ukdebug/hexdump.c
index a3d8e5f..cd70c73 100644
--- a/lib/ukdebug/hexdump.c
+++ b/lib/ukdebug/hexdump.c
@@ -54,22 +54,20 @@ enum _hxd_output_type {
#if CONFIG_LIBUKDEBUG_PRINTK
UK_HXDOUT_KERN,
#endif
-#if CONFIG_LIBUKDEBUG_PRINTD
UK_HXDOUT_DEBUG,
-#endif
};
struct _hxd_output {
enum _hxd_output_type type;
union {
-#if CONFIG_LIBUKDEBUG_PRINTD
+#if CONFIG_LIBUKDEBUG_PRINTK
struct {
int lvl;
const char *libname;
const char *srcname;
unsigned int srcline;
- } debug;
+ } kern;
#endif
struct {
FILE *fp;
@@ -106,15 +104,13 @@ static int _hxd_outf(struct _hxd_output *o, const char
*fmt, ...)
o->buffer.left -= (ret - 1);
}
break;
+ case UK_HXDOUT_DEBUG:
+ uk_vprintd(fmt, ap);
+ break;
#if CONFIG_LIBUKDEBUG_PRINTK
case UK_HXDOUT_KERN:
- uk_vprintk(fmt, ap);
- break;
-#endif
-#if CONFIG_LIBUKDEBUG_PRINTD
- case UK_HXDOUT_DEBUG:
- _uk_vprintd(o->debug.lvl, o->debug.libname, o->debug.srcname,
- o->debug.srcline, fmt, ap);
+ _uk_vprintk(o->kern.lvl, o->kern.libname, o->kern.srcname,
+ o->kern.srcline, fmt, ap);
break;
#endif
default:
@@ -323,11 +319,11 @@ int uk_hexdumpf(FILE *fp, const void *data, size_t len,
size_t addr0, int flags,
return _hxd(&o, data, len, addr0, flags, grps_per_line, line_prefix);
}
-void uk_hexdumpk(const void *data, size_t len, int flags,
+void uk_hexdumpd(const void *data, size_t len, int flags,
unsigned int grps_per_line)
{
-#if CONFIG_LIBUKDEBUG_PRINTK
- struct _hxd_output o = {.type = UK_HXDOUT_KERN};
+#if CONFIG_LIBUKDEBUG_PRINTD
+ struct _hxd_output o = {.type = UK_HXDOUT_DEBUG};
_hxd(&o, data, len, (size_t)data, flags, grps_per_line, "");
#else
@@ -335,19 +331,18 @@ void uk_hexdumpk(const void *data, size_t len, int flags,
#endif
}
-void _uk_hexdumpd(int lvl, const char *libname, const char *srcname,
+#if CONFIG_LIBUKDEBUG_PRINTK
+void _uk_hexdumpk(int lvl, const char *libname, const char *srcname,
unsigned int srcline, const void *data, size_t len,
size_t addr0, int flags, unsigned int grps_per_line,
const char *line_prefix)
{
-#if CONFIG_LIBUKDEBUG_PRINTD
- struct _hxd_output o = {.type = UK_HXDOUT_DEBUG,
- .debug.lvl = lvl,
- .debug.libname = libname,
- .debug.srcname = srcname,
- .debug.srcline = srcline};
+ struct _hxd_output o = {.type = UK_HXDOUT_KERN,
+ .kern.lvl = lvl,
+ .kern.libname = libname,
+ .kern.srcname = srcname,
+ .kern.srcline = srcline};
+
_hxd(&o, data, len, addr0, flags, grps_per_line, line_prefix);
-#else
- return;
-#endif
}
+#endif
diff --git a/lib/ukdebug/include/uk/hexdump.h b/lib/ukdebug/include/uk/hexdump.h
index 5539eed..c77742c 100644
--- a/lib/ukdebug/include/uk/hexdump.h
+++ b/lib/ukdebug/include/uk/hexdump.h
@@ -55,9 +55,9 @@ extern "C" {
#define UK_HXDF_COMPRESS (64) /* suppress repeated lines */
-#if CONFIG_LIBUKDEBUG_PRINTK
+#if defined UK_DEBUG || CONFIG_LIBUKDEBUG_PRINTD
/**
- * Plots an hexdump for a given data region to kernel output
+ * Plots an hexdump for a given data region to debug output
* The absolute address is plotted when UK_HXDF_ADDR is set
*
* @param data Start of data region to plot
@@ -67,23 +67,23 @@ extern "C" {
* Number of groups (UK_HXDF_GRP*) shown per line
* @return Returns the number of printed characters to output fp
*/
-void uk_hexdumpk(const void *data, size_t len, int flags,
+void uk_hexdumpd(const void *data, size_t len, int flags,
unsigned int grps_per_line);
#else
-static inline void uk_hexdumpk(const void *data, size_t len, int flags,
- unsigned int grps_per_line)
-{
-}
+static inline void uk_hexdumpd(const void *data __unused, size_t len __unused,
+ int flags __unused,
+ unsigned int grps_per_line __unused)
+{}
#endif
-#if CONFIG_LIBUKDEBUG_PRINTD
-void _uk_hexdumpd(int lvl, const char *libname, const char *srcname,
+#if CONFIG_LIBUKDEBUG_PRINTK
+void _uk_hexdumpk(int lvl, const char *libname, const char *srcname,
unsigned int srcline, const void *data, size_t len,
size_t addr0, int flags, unsigned int grps_per_line,
const char *line_prefix);
/**
- * Plots an hexdump for a given data region to debug output
+ * Plots an hexdump for a given data region to kernel output
* The absolute address is plotted when UK_HXDF_ADDR is set
*
* @param lvl Debug level
@@ -94,19 +94,19 @@ void _uk_hexdumpd(int lvl, const char *libname, const char
*srcname,
* Number of groups (UK_HXDF_GRP*) shown per line
* @return Returns the number of printed characters to output fp
*/
-#define uk_hexdumpd(lvl, data, len, flags, grps_per_line)
\
+#define uk_hexdumpk(lvl, data, len, flags, grps_per_line)
\
do { \
- if ((lvl) <= DLVL_MAX) \
+ if ((lvl) <= KLVL_MAX) \
_uk_hexdumpd((lvl), __STR_LIBNAME__, __STR_BASENAME__, \
__LINE__, (data), (len), \
((size_t)(data)), (flags), \
(grps_per_line), STRINGIFY(data) ": "); \
} while (0)
#else
-static inline void uk_hexdumpd(int lvl, const void *data, size_t len, int
flags,
- unsigned int grps_per_line)
-{
-}
+static inline void uk_hexdumpk(int lvl __unused, const void *data __unused,
+ size_t len __unused, int flags __unused,
+ unsigned int grps_per_line __unused)
+{}
#endif
/**
@@ -184,13 +184,13 @@ int uk_hexdumpsn(char *str, size_t size, const void
*data, size_t len,
* Shortcuts for all hexdump variants ahead. The shortcuts use a similar style
* as the hexdump Unix command using -C parameter: hexdump -C
*/
-#define uk_hexdumpCk(data, len)
\
- uk_hexdumpk((data), (len), (UK_HXDF_ADDR | UK_HXDF_ASCIISEC \
+#define uk_hexdumpCd(data, len)
\
+ uk_hexdumpd((data), (len), (UK_HXDF_ADDR | UK_HXDF_ASCIISEC \
| UK_HXDF_GRPQWORD | UK_HXDF_COMPRESS), \
2)
-#define uk_hexdumpCd(lvl, data, len)
\
- uk_hexdumpd((lvl), (data), (len), \
+#define uk_hexdumpCk(lvl, data, len)
\
+ uk_hexdumpk((lvl), (data), (len), \
(UK_HXDF_ADDR | UK_HXDF_ASCIISEC | UK_HXDF_GRPQWORD \
| UK_HXDF_COMPRESS), \
2)
diff --git a/lib/ukdebug/include/uk/print.h b/lib/ukdebug/include/uk/print.h
index fe3730b..a8c6c96 100644
--- a/lib/ukdebug/include/uk/print.h
+++ b/lib/ukdebug/include/uk/print.h
@@ -46,70 +46,61 @@
extern "C" {
#endif
+/*
+ * DEBUG PRINTING
+ */
#ifdef __IN_LIBUKDEBUG__
/*
- * These defines are doing the trick to compile the functions
- * in print.c always in although printing was disabled
- * in the configuration. This is required for linking with
- * pre-compiled objects that built by using a different configuration.
+ * This redefinition of CONFIG_LIBUKDEBUG_PRINTD is doing the trick to avoid
+ * multiple declarations of uk_{v}printd() when we are compiling this library
+ * and have the global debug switch CONFIG_LIBUKDEBUG_PRINTD not enabled.
*/
-#if !CONFIG_LIBUKDEBUG_PRINTK
-#undef CONFIG_LIBUKDEBUG_PRINTK
-#define CONFIG_LIBUKDEBUG_PRINTK 1
-#endif
-#if !CONFIG_LIBUKDEBUG_PRINTD
+#if !defined CONFIG_LIBUKDEBUG_PRINTD || !CONFIG_LIBUKDEBUG_PRINTD
#undef CONFIG_LIBUKDEBUG_PRINTD
#define CONFIG_LIBUKDEBUG_PRINTD 1
#endif
#endif /* __IN_LIBUKDEBUG__ */
-/*
- * KERNEL CONSOLE
- */
-#if CONFIG_LIBUKDEBUG_PRINTK
-void uk_vprintk(const char *fmt, va_list ap);
-void uk_printk(const char *fmt, ...) __printf(1, 2);
+#if defined UK_DEBUG || CONFIG_LIBUKDEBUG_PRINTD
+void uk_vprintd(const char *fmt, va_list ap);
+void uk_printd(const char *fmt, ...) __printf(1, 2);
#else
-static inline void uk_vprintk(const char *fmt, va_list ap)
-{
-}
-static inline void uk_printk(const char *fmt, ...) __printf(1, 2);
-static inline void uk_printk(const char *fmt, ...)
-{
-}
+static inline void uk_vprintd(const char *fmt __unused, va_list ap __unused)
+{}
+
+static inline void uk_printd(const char *fmt, ...) __printf(1, 2);
+static inline void uk_printd(const char *fmt __unused, ...)
+{}
#endif
/*
- * DEBUG CONSOLE
+ * KERNEL CONSOLE
*/
-#define DLVL_EXTRA (4)
-#define DLVL_INFO (3)
-#define DLVL_WARN (2)
-#define DLVL_ERR (1)
-#define DLVL_CRIT (0)
-
-#if CONFIG_LIBUKDEBUG_PRINTD_CRIT
-#define DLVL_MAX DLVL_CRIT
-#elif CONFIG_LIBUKDEBUG_PRINTD_ERR
-#define DLVL_MAX DLVL_ERR
-#elif CONFIG_LIBUKDEBUG_PRINTD_WARN
-#define DLVL_MAX DLVL_WARN
-#elif CONFIG_LIBUKDEBUG_PRINTD_INFO
-#define DLVL_MAX DLVL_INFO
-#elif CONFIG_LIBUKDEBUG_PRINTD_EXTRA
-#define DLVL_MAX DLVL_EXTRA
+#define KLVL_INFO (3)
+#define KLVL_WARN (2)
+#define KLVL_ERR (1)
+#define KLVL_CRIT (0)
+
+#if CONFIG_LIBUKDEBUG_PRINTK_CRIT
+#define KLVL_MAX KLVL_CRIT
+#elif CONFIG_LIBUKDEBUG_PRINTK_ERR
+#define KLVL_MAX KLVL_ERR
+#elif CONFIG_LIBUKDEBUG_PRINTK_WARN
+#define KLVL_MAX KLVL_WARN
+#elif CONFIG_LIBUKDEBUG_PRINTK_INFO
+#define KLVL_MAX KLVL_INFO
#else
-#define DLVL_MAX DLVL_ERR /* default level */
+#define KLVL_MAX KLVL_ERR /* default level */
#endif
-#if CONFIG_LIBUKDEBUG_PRINTD
+#if CONFIG_LIBUKDEBUG_PRINTK
/* please use the uk_printd(), uk_vprintd() macros because
* they compile in the function calls only if the configured
* debug level requires it
*/
-void _uk_vprintd(int lvl, const char *libname, const char *srcname,
+void _uk_vprintk(int lvl, const char *libname, const char *srcname,
unsigned int srcline, const char *fmt, va_list ap);
-void _uk_printd(int lvl, const char *libname, const char *srcname,
+void _uk_printk(int lvl, const char *libname, const char *srcname,
unsigned int srcline, const char *fmt, ...) __printf(5, 6);
#ifdef __LIBNAME__
@@ -124,39 +115,38 @@ void _uk_printd(int lvl, const char *libname, const char
*srcname,
#define __STR_BASENAME__ (NULL)
#endif
-#define uk_vprintd(lvl, fmt, ap)
\
+#define uk_vprintk(lvl, fmt, ap)
\
do { \
- if ((lvl) <= DLVL_MAX) \
- _uk_vprintd((lvl), __STR_LIBNAME__, __STR_BASENAME__, \
+ if ((lvl) <= KLVL_MAX) \
+ _uk_vprintk((lvl), __STR_LIBNAME__, __STR_BASENAME__, \
__LINE__, (fmt), ap); \
} while (0)
-#define uk_printd(lvl, fmt, ...)
\
+#define uk_printk(lvl, fmt, ...)
\
do { \
- if ((lvl) <= DLVL_MAX) \
- _uk_printd((lvl), __STR_LIBNAME__, __STR_BASENAME__, \
+ if ((lvl) <= KLVL_MAX) \
+ _uk_printk((lvl), __STR_LIBNAME__, __STR_BASENAME__, \
__LINE__, (fmt), ##__VA_ARGS__); \
} while (0)
#else
-static inline void uk_vprintd(int lvl __unused, const char *fmt __unused,
+static inline void uk_vprintk(int lvl __unused, const char *fmt __unused,
va_list ap __unused)
-{
-}
-static inline void uk_printd(int lvl, const char *fmt, ...) __printf(2, 3);
-static inline void uk_printd(int lvl __unused, const char *fmt __unused, ...)
-{
-}
-#endif /* CONFIG_LIBUKDEBUG_PRINTD */
+{}
+
+static inline void uk_printk(int lvl, const char *fmt, ...) __printf(2, 3);
+static inline void uk_printk(int lvl __unused, const char *fmt __unused, ...)
+{}
+#endif /* CONFIG_LIBUKDEBUG_PRINTK */
/*
- * Convenience wrapper for uk_printd()
+ * Convenience wrapper for uk_printk() and uk_printd()
* This is similar to the pr_* variants that you find in the Linux kernel
*/
-#define uk_pr_debug(fmt, ...) uk_printd(DLVL_EXTRA, (fmt), ##__VA_ARGS__)
-#define uk_pr_info(fmt, ...) uk_printd(DLVL_INFO, (fmt), ##__VA_ARGS__)
-#define uk_pr_warn(fmt, ...) uk_printd(DLVL_WARN, (fmt), ##__VA_ARGS__)
-#define uk_pr_err(fmt, ...) uk_printd(DLVL_ERR, (fmt), ##__VA_ARGS__)
-#define uk_pr_crit(fmt, ...) uk_printd(DLVL_CRIT, (fmt), ##__VA_ARGS__)
+#define uk_pr_debug(fmt, ...) uk_printd((fmt), ##__VA_ARGS__)
+#define uk_pr_info(fmt, ...) uk_printk(KLVL_INFO, (fmt), ##__VA_ARGS__)
+#define uk_pr_warn(fmt, ...) uk_printk(KLVL_WARN, (fmt), ##__VA_ARGS__)
+#define uk_pr_err(fmt, ...) uk_printk(KLVL_ERR, (fmt), ##__VA_ARGS__)
+#define uk_pr_crit(fmt, ...) uk_printk(KLVL_CRIT, (fmt), ##__VA_ARGS__)
#ifdef __cplusplus
}
diff --git a/lib/ukdebug/print.c b/lib/ukdebug/print.c
index 6f98d28..0c3904c 100644
--- a/lib/ukdebug/print.c
+++ b/lib/ukdebug/print.c
@@ -57,10 +57,10 @@
#define BUFLEN 192
/* special level for printk redirection, used internally only */
-#define DLVL_CONS (-1)
+#define KLVL_DEBUG (-1)
-#if !CONFIG_LIBUKDEBUG_REDIR_PRINTK
-static inline void _vprintk(const char *fmt, va_list ap)
+#if !CONFIG_LIBUKDEBUG_REDIR_PRINTD
+static inline void _vprintd(const char *fmt, va_list ap)
{
char lbuf[BUFLEN];
int len;
@@ -71,14 +71,14 @@ static inline void _vprintk(const char *fmt, va_list ap)
}
#endif
-#if CONFIG_LIBUKDEBUG_REDIR_PRINTD
-#define _ukplat_coutd(lbuf, len) ukplat_coutk((lbuf), (len))
+#if CONFIG_LIBUKDEBUG_REDIR_PRINTK
+#define _ukplat_coutk(lbuf, len) ukplat_coutd((lbuf), (len))
#else
-#define _ukplat_coutd(lbuf, len) ukplat_coutd((lbuf), (len))
+#define _ukplat_coutk(lbuf, len) ukplat_coutk((lbuf), (len))
#endif
-#if CONFIG_LIBUKDEBUG_PRINTD_TIME
-static void _printd_timestamp(void)
+#if CONFIG_LIBUKDEBUG_PRINTK_TIME
+static void _printk_timestamp(void)
{
char buf[BUFLEN];
int len;
@@ -89,12 +89,12 @@ static void _printd_timestamp(void)
rem_usec = ukarch_time_nsec_to_usec(rem_usec);
len = snprintf(buf, BUFLEN, "[%5" __PRInsec ".%06" __PRInsec "] ",
sec, rem_usec);
- _ukplat_coutd((char *)buf, len);
+ _ukplat_coutk((char *)buf, len);
}
#endif
-#if CONFIG_LIBUKDEBUG_PRINTD_STACK
-static void _printd_stack(void)
+#if CONFIG_LIBUKDEBUG_PRINTK_STACK
+static void _printk_stack(void)
{
unsigned long stackb;
char buf[BUFLEN];
@@ -103,12 +103,13 @@ static void _printd_stack(void)
stackb = (ukarch_read_sp() & ~(__STACK_SIZE - 1)) + __STACK_SIZE;
len = snprintf(buf, BUFLEN, "<%p> ", (void *) stackb);
- _ukplat_coutd((char *)buf, len);
+ _ukplat_coutk((char *)buf, len);
}
#endif
-static inline void _vprintd(int lvl, const char *libname, const char *srcname,
- unsigned int srcline, const char *fmt, va_list ap)
+#if CONFIG_LIBUKDEBUG_REDIR_PRINTD || CONFIG_LIBUKDEBUG_PRINTK
+static void _vprintk(int lvl, const char *libname, const char *srcname,
+ unsigned int srcline, const char *fmt, va_list ap)
{
static int newline = 1;
static int prevlvl = INT_MIN;
@@ -120,26 +121,23 @@ static inline void _vprintd(int lvl, const char *libname,
const char *srcname,
const char *nlptr = NULL;
switch (lvl) {
-#if CONFIG_LIBUKDEBUG_REDIR_PRINTK
- case DLVL_CONS:
- msghdr = "Kern: ";
+#if CONFIG_LIBUKDEBUG_REDIR_PRINTD
+ case KLVL_DEBUG:
+ msghdr = "dbg: ";
break;
#endif
- case DLVL_CRIT:
+ case KLVL_CRIT:
msghdr = "CRIT: ";
break;
- case DLVL_ERR:
+ case KLVL_ERR:
msghdr = "ERR: ";
break;
- case DLVL_WARN:
+ case KLVL_WARN:
msghdr = "Warn: ";
break;
- case DLVL_INFO:
+ case KLVL_INFO:
msghdr = "Info: ";
break;
- case DLVL_EXTRA:
- msghdr = "EInf: ";
- break;
default:
/* unknown type: ignore */
return;
@@ -151,7 +149,7 @@ static inline void _vprintd(int lvl, const char *libname,
const char *srcname,
/* level changed without closing with '\n',
* enforce printing '\n', before the new message header
*/
- _ukplat_coutd("\n", 1);
+ _ukplat_coutk("\n", 1);
}
prevlvl = lvl;
newline = 1; /* enforce printing the message header */
@@ -161,29 +159,29 @@ static inline void _vprintd(int lvl, const char *libname,
const char *srcname,
lptr = lbuf;
while (len > 0) {
if (newline) {
-#if CONFIG_LIBUKDEBUG_PRINTD_TIME
- _printd_timestamp();
+#if CONFIG_LIBUKDEBUG_PRINTK_TIME
+ _printk_timestamp();
#endif
- _ukplat_coutd(DECONST(char *, msghdr), 6);
-#if CONFIG_LIBUKDEBUG_PRINTD_STACK
- _printd_stack();
+ _ukplat_coutk(DECONST(char *, msghdr), 6);
+#if CONFIG_LIBUKDEBUG_PRINTK_STACK
+ _printk_stack();
#endif
if (libname) {
- _ukplat_coutd("[", 1);
- _ukplat_coutd(DECONST(char *, libname),
+ _ukplat_coutk("[", 1);
+ _ukplat_coutk(DECONST(char *, libname),
strlen(libname));
- _ukplat_coutd("] ", 2);
+ _ukplat_coutk("] ", 2);
}
if (srcname) {
char lnobuf[6];
- _ukplat_coutd(DECONST(char *, srcname),
+ _ukplat_coutk(DECONST(char *, srcname),
strlen(srcname));
- _ukplat_coutd(" @ ", 3);
- _ukplat_coutd(lnobuf,
+ _ukplat_coutk(" @ ", 3);
+ _ukplat_coutk(lnobuf,
snprintf(lnobuf, sizeof(lnobuf),
"%-5u", srcline));
- _ukplat_coutd(": ", 2);
+ _ukplat_coutk(": ", 2);
}
newline = 0;
}
@@ -195,59 +193,57 @@ static inline void _vprintd(int lvl, const char *libname,
const char *srcname,
} else {
llen = len;
}
- _ukplat_coutd((char *)lptr, llen);
+ _ukplat_coutk((char *)lptr, llen);
len -= llen;
lptr = nlptr + 1;
}
}
+#endif /* CONFIG_LIBUKDEBUG_REDIR_PRINTD || CONFIG_LIBUKDEBUG_PRINTK */
-/* ensures that function is always compiled */
-void uk_vprintk(const char *fmt, va_list ap)
+/*
+ * DEBUG PRINTING ENTRY
+ * uk_printd() and uk_vprintd are always compiled in.
+ * We rely on OPTIMIZE_DEADELIM: These symbols are automatically
+ * removed from the final image when there was no usage.
+ */
+void uk_vprintd(const char *fmt __maybe_unused, va_list ap __maybe_unused)
{
-#if CONFIG_LIBUKDEBUG_PRINTK
-#if CONFIG_LIBUKDEBUG_REDIR_PRINTK
- _vprintd(DLVL_CONS, NULL, NULL, 0, fmt, ap);
+#if CONFIG_LIBUKDEBUG_REDIR_PRINTD
+ _vprintk(KLVL_DEBUG, NULL, NULL, 0, fmt, ap);
#else
- _vprintk(fmt, ap);
+ _vprintd(fmt, ap);
#endif
-#endif /* CONFIG_LIBUKDEBUG_PRINTK */
}
-/* ensures that function is always compiled */
-void uk_printk(const char *fmt, ...)
+void uk_printd(const char *fmt, ...)
{
-#if CONFIG_LIBUKDEBUG_PRINTK
va_list ap;
va_start(ap, fmt);
- uk_vprintk(fmt, ap);
+ uk_vprintd(fmt, ap);
va_end(ap);
-#endif /* CONFIG_LIBUKDEBUG_PRINTK */
}
-/* ensures that function is always compiled */
-void _uk_vprintd(int lvl, const char *libname, const char *srcname,
+/*
+ * KERNEL PRINT ENTRY
+ * Different to uk_printd(), we have a global switch that disables kernel
+ * messages. We compile these entry points only in when the kernel console is
+ * enabled.
+ */
+#if CONFIG_LIBUKDEBUG_PRINTK
+void _uk_vprintk(int lvl, const char *libname, const char *srcname,
unsigned int srcline, const char *fmt, va_list ap)
{
-#if CONFIG_LIBUKDEBUG_PRINTD
- if (likely(lvl > DLVL_MAX))
- return;
- _vprintd(lvl, libname, srcname, srcline, fmt, ap);
-#endif /* CONFIG_LIBUKDEBUG_PRINTD */
+ _vprintk(lvl, libname, srcname, srcline, fmt, ap);
}
-/* ensures that function is always compiled */
-void _uk_printd(int lvl, const char *libname, const char *srcname,
+void _uk_printk(int lvl, const char *libname, const char *srcname,
unsigned int srcline, const char *fmt, ...)
{
-#if CONFIG_LIBUKDEBUG_PRINTD
va_list ap;
- if (likely(lvl > DLVL_MAX))
- return;
-
va_start(ap, fmt);
- _uk_vprintd(lvl, libname, srcname, srcline, fmt, ap);
+ _uk_vprintk(lvl, libname, srcname, srcline, fmt, ap);
va_end(ap);
-#endif /* CONFIG_LIBUKDEBUG_PRINTD */
}
+#endif /* CONFIG_LIBUKDEBUG_PRINTD */
--
2.7.4
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |