1 #ifndef __STDIO_H
2 #define __STDIO_H
3
4 #include <stdarg.h>
5 #include <linux/compiler.h>
6
7 /* stdin */
8 int getchar(void);
9 int tstc(void);
10
11 /* stdout */
12 #if !defined(CONFIG_XPL_BUILD) || CONFIG_IS_ENABLED(SERIAL)
13 void putc(const char c);
14 void puts(const char *s);
15 #ifdef CONFIG_CONSOLE_FLUSH_SUPPORT
16 void flush(void);
17 #else
flush(void)18 static inline void flush(void) {}
19 #endif
20 int __printf(1, 2) printf(const char *fmt, ...);
21 int vprintf(const char *fmt, va_list args);
22 #else
putc(const char c)23 static inline void putc(const char c)
24 {
25 }
26
puts(const char * s)27 static inline void puts(const char *s)
28 {
29 }
30
flush(void)31 static inline void flush(void)
32 {
33 }
34
printf(const char * fmt,...)35 static inline int __printf(1, 2) printf(const char *fmt, ...)
36 {
37 return 0;
38 }
39
vprintf(const char * fmt,va_list args)40 static inline int vprintf(const char *fmt, va_list args)
41 {
42 return 0;
43 }
44 #endif
45
46 /**
47 * Format a string and place it in a buffer
48 *
49 * @buf: The buffer to place the result into
50 * @size: The size of the buffer, including the trailing null space
51 * @fmt: The format string to use
52 * @...: Arguments for the format string
53 * Return: the number of characters which would be
54 * generated for the given input, excluding the trailing null,
55 * as per ISO C99. If the return is greater than or equal to
56 * @size, the resulting string is truncated.
57 *
58 * See the vsprintf() documentation for format string extensions over C99.
59 */
60 int snprintf(char *buf, size_t size, const char *fmt, ...)
61 __attribute__ ((format (__printf__, 3, 4)));
62
63 /*
64 * FILE based functions (can only be used AFTER relocation!)
65 */
66 #define stdin 0
67 #define stdout 1
68 #define stderr 2
69 #define MAX_FILES 3
70
71 /* stderr */
72 #define eputc(c) fputc(stderr, c)
73 #define eputs(s) fputs(stderr, s)
74 #define eflush() fflush(stderr)
75 #define eprintf(fmt, args...) fprintf(stderr, fmt, ##args)
76
77 int __printf(2, 3) fprintf(int file, const char *fmt, ...);
78 void fputs(int file, const char *s);
79 void fputc(int file, const char c);
80 #ifdef CONFIG_CONSOLE_FLUSH_SUPPORT
81 void fflush(int file);
82 #else
fflush(int file)83 static inline void fflush(int file) {}
84 #endif
85 int ftstc(int file);
86 int fgetc(int file);
87
88 #endif /* __STDIO_H */
89