mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-08-22 00:42:01 +02:00

[ Upstream commit 196a062641
]
Binary printing functions are using printf() type of format, and compiler
is not happy about them as is:
kernel/trace/trace.c:3292:9: error: function ‘trace_vbprintk’ might be a candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]
kernel/trace/trace_seq.c:182:9: error: function ‘trace_seq_bprintf’ might be a candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]
Fix the compilation errors by adding __printf() attribute.
While at it, move existing __printf() attributes from the implementations
to the declarations. IT also fixes incorrect attribute parameters that are
used for trace_array_printk().
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Kees Cook <kees@kernel.org>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/20250321144822.324050-4-andriy.shevchenko@linux.intel.com
Signed-off-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
98 lines
2.8 KiB
C
98 lines
2.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _LINUX_TRACE_H
|
|
#define _LINUX_TRACE_H
|
|
|
|
#define TRACE_EXPORT_FUNCTION BIT(0)
|
|
#define TRACE_EXPORT_EVENT BIT(1)
|
|
#define TRACE_EXPORT_MARKER BIT(2)
|
|
|
|
/*
|
|
* The trace export - an export of Ftrace output. The trace_export
|
|
* can process traces and export them to a registered destination as
|
|
* an addition to the current only output of Ftrace - i.e. ring buffer.
|
|
*
|
|
* If you want traces to be sent to some other place rather than ring
|
|
* buffer only, just need to register a new trace_export and implement
|
|
* its own .write() function for writing traces to the storage.
|
|
*
|
|
* next - pointer to the next trace_export
|
|
* write - copy traces which have been delt with ->commit() to
|
|
* the destination
|
|
* flags - which ftrace to be exported
|
|
*/
|
|
struct trace_export {
|
|
struct trace_export __rcu *next;
|
|
void (*write)(struct trace_export *, const void *, unsigned int);
|
|
int flags;
|
|
};
|
|
|
|
struct trace_array;
|
|
|
|
#ifdef CONFIG_TRACING
|
|
|
|
int register_ftrace_export(struct trace_export *export);
|
|
int unregister_ftrace_export(struct trace_export *export);
|
|
|
|
/**
|
|
* trace_array_puts - write a constant string into the trace buffer.
|
|
* @tr: The trace array to write to
|
|
* @str: The constant string to write
|
|
*/
|
|
#define trace_array_puts(tr, str) \
|
|
({ \
|
|
str ? __trace_array_puts(tr, _THIS_IP_, str, strlen(str)) : -1; \
|
|
})
|
|
int __trace_array_puts(struct trace_array *tr, unsigned long ip,
|
|
const char *str, int size);
|
|
|
|
void trace_printk_init_buffers(void);
|
|
__printf(3, 4)
|
|
int trace_array_printk(struct trace_array *tr, unsigned long ip,
|
|
const char *fmt, ...);
|
|
int trace_array_init_printk(struct trace_array *tr);
|
|
void trace_array_put(struct trace_array *tr);
|
|
struct trace_array *trace_array_get_by_name(const char *name, const char *systems);
|
|
int trace_array_destroy(struct trace_array *tr);
|
|
|
|
/* For osnoise tracer */
|
|
int osnoise_arch_register(void);
|
|
void osnoise_arch_unregister(void);
|
|
void osnoise_trace_irq_entry(int id);
|
|
void osnoise_trace_irq_exit(int id, const char *desc);
|
|
|
|
#else /* CONFIG_TRACING */
|
|
static inline int register_ftrace_export(struct trace_export *export)
|
|
{
|
|
return -EINVAL;
|
|
}
|
|
static inline int unregister_ftrace_export(struct trace_export *export)
|
|
{
|
|
return 0;
|
|
}
|
|
static inline void trace_printk_init_buffers(void)
|
|
{
|
|
}
|
|
static inline __printf(3, 4)
|
|
int trace_array_printk(struct trace_array *tr, unsigned long ip, const char *fmt, ...)
|
|
{
|
|
return 0;
|
|
}
|
|
static inline int trace_array_init_printk(struct trace_array *tr)
|
|
{
|
|
return -EINVAL;
|
|
}
|
|
static inline void trace_array_put(struct trace_array *tr)
|
|
{
|
|
}
|
|
static inline struct trace_array *trace_array_get_by_name(const char *name, const char *systems)
|
|
{
|
|
return NULL;
|
|
}
|
|
static inline int trace_array_destroy(struct trace_array *tr)
|
|
{
|
|
return 0;
|
|
}
|
|
#endif /* CONFIG_TRACING */
|
|
|
|
#endif /* _LINUX_TRACE_H */
|