Files
u-boot/include/linux/printk.h
Simon Glass 2ddc96ae88 vsprintf: Add support for the %pV format-specifier
Add support for the %pV format-specifier which allows printing a
struct va_format. This is used by the Linux kernel for recursive
printf() formatting and is needed by the ext4l filesystem driver.

Add the struct to include/linux/printk.h to match the kernel location.

Co-developed-by: Claude <noreply@anthropic.com>
Signed-off-by: Simon Glass <simon.glass@canonical.com>
2025-12-13 16:28:53 -07:00

93 lines
1.9 KiB
C

#ifndef __KERNEL_PRINTK__
#define __KERNEL_PRINTK__
#include <log.h>
#include <stdio.h>
#include <linux/compiler.h>
#define KERN_EMERG
#define KERN_ALERT
#define KERN_CRIT
#define KERN_ERR
#define KERN_WARNING
#define KERN_NOTICE
#define KERN_INFO
#define KERN_DEBUG
#define KERN_CONT
#define printk(fmt, ...) \
printf(fmt, ##__VA_ARGS__)
/*
* Dummy printk for disabled debugging statements to use whilst maintaining
* gcc's format checking.
*/
#define no_printk(fmt, ...) \
({ \
if (0) \
printk(fmt, ##__VA_ARGS__); \
0; \
})
#ifndef pr_fmt
#define pr_fmt(fmt) fmt
#endif
#define pr_emerg(fmt, ...) \
({ \
CONFIG_LOGLEVEL > 0 ? log_emerg(fmt, ##__VA_ARGS__) : 0; \
})
#define pr_alert(fmt, ...) \
({ \
CONFIG_LOGLEVEL > 1 ? log_alert(fmt, ##__VA_ARGS__) : 0; \
})
#define pr_crit(fmt, ...) \
({ \
CONFIG_LOGLEVEL > 2 ? log_crit(fmt, ##__VA_ARGS__) : 0; \
})
#define pr_err(fmt, ...) \
({ \
CONFIG_LOGLEVEL > 3 ? log_err(fmt, ##__VA_ARGS__) : 0; \
})
#define pr_warn(fmt, ...) \
({ \
CONFIG_LOGLEVEL > 4 ? log_warning(fmt, ##__VA_ARGS__) : 0; \
})
#define pr_notice(fmt, ...) \
({ \
CONFIG_LOGLEVEL > 5 ? log_notice(fmt, ##__VA_ARGS__) : 0; \
})
#define pr_info(fmt, ...) \
({ \
CONFIG_LOGLEVEL > 6 ? log_info(fmt, ##__VA_ARGS__) : 0; \
})
#define pr_debug(fmt, ...) \
({ \
CONFIG_LOGLEVEL > 7 ? log_debug(fmt, ##__VA_ARGS__) : 0; \
})
#define pr_devel(fmt, ...) \
({ \
CONFIG_LOGLEVEL > 7 ? log_debug(fmt, ##__VA_ARGS__) : 0; \
})
#ifdef CONFIG_LOG
#define pr_cont(fmt, ...) \
({ \
gd->logl_prev < CONFIG_LOGLEVEL ? \
log_cont(fmt, ##__VA_ARGS__) : 0; \
})
#else
#define pr_cont(fmt, ...) \
printk(fmt, ##__VA_ARGS__)
#endif
#define printk_once(fmt, ...) \
printk(fmt, ##__VA_ARGS__)
struct va_format {
const char *fmt;
va_list *va;
};
#endif