1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _LINUX_KERNEL_SPRINTF_H_
3#define _LINUX_KERNEL_SPRINTF_H_
4
5#include <linux/compiler_attributes.h>
6#include <linux/types.h>
7#include <linux/stdarg.h>
8
9int num_to_str(char *buf, int size, unsigned long long num, unsigned int width);
10
11__printf(2, 3) int sprintf(char *buf, const char * fmt, ...);
12__printf(2, 0) int vsprintf(char *buf, const char *, va_list);
13__printf(3, 4) int snprintf(char *buf, size_t size, const char *fmt, ...);
14__printf(3, 0) int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
15__printf(3, 4) int scnprintf(char *buf, size_t size, const char *fmt, ...);
16__printf(3, 0) int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);
17__printf(2, 3) __malloc char *kasprintf(gfp_t gfp, const char *fmt, ...);
18__printf(2, 0) __malloc char *kvasprintf(gfp_t gfp, const char *fmt, va_list args);
19__printf(2, 0) const char *kvasprintf_const(gfp_t gfp, const char *fmt, va_list args);
20
21__scanf(2, 3) int sscanf(const char *, const char *, ...);
22__scanf(2, 0) int vsscanf(const char *, const char *, va_list);
23
24/* These are for specific cases, do not use without real need */
25extern bool no_hash_pointers;
26void hash_pointers_finalize(bool slub_debug);
27
28/* Used for Rust formatting ('%pA') */
29char *rust_fmt_argument(char *buf, char *end, const void *ptr);
30
31#endif /* _LINUX_KERNEL_SPRINTF_H */
32