Add the 'current_kthread' helper
[akaros.git] / kern / include / stdio.h
1 #pragma once
2
3 #include <ros/common.h>
4 #include <stdarg.h>
5 #include <kdebug.h>
6
7 #ifndef NULL
8 #define NULL    ((void *) 0)
9 #endif /* !NULL */
10
11 //#define DEBUG
12 #ifdef DEBUG
13 #define printd(args...) cprintf(args)
14 #else
15 #define printd(args...) {}
16 #endif
17
18 #define printk(args...) cprintf(args)
19 #define __I_AM_HERE_GUTS "Core %d is in %s() at %s:%d\n", core_id(), \
20                          __func__, __FILE__, __LINE__
21
22 #define I_AM_HERE printk(__I_AM_HERE_GUTS)
23 #define I_AM_HERE_x printx(__I_AM_HERE_GUTS)
24 #define I_AM_HERE_t trace_printk(__I_AM_HERE_GUTS)
25 #define I_AM_HERE_tx trace_printx(__I_AM_HERE_GUTS)
26
27 // lib/stdio.c
28 void    cputchar(int c);
29 void    cputbuf(const char *buf, int len);
30 int     getchar(void);
31 int     iscons(int fd);
32
33 // lib/printfmt.c
34 void    printfmt(void (*putch)(int, void**), void **putdat, const char *fmt, ...);
35 void    vprintfmt(void (*putch)(int, void**), void **putdat, const char *fmt, va_list);
36
37 // lib/printf.c
38 int     ( cprintf)(const char *fmt, ...);
39 int     vcprintf(const char *fmt, va_list);
40
41 // lib/sprintf.c
42
43 static inline bool snprintf_error(int ret, size_t buf_len)
44 {
45         return ret < 0 || ret >= buf_len;
46 }
47
48 int snprintf(char *str, size_t size, const char *fmt, ...);
49 int vsnprintf(char *str, size_t size, const char *fmt, va_list);
50
51 // lib/fprintf.c
52 int     printf(const char *fmt, ...);
53 int     fprintf(int fd, const char *fmt, ...);
54 int     vfprintf(int fd, const char *fmt, va_list);
55
56 // lib/readline.c
57 int readline(char *buf, size_t buf_l, const char *prompt, ...);
58
59 char *seprintf(char *buf, char *end, const char *fmt, ...);
60
61 // kern/src/net/eipconv.c
62 void printemac(void (*putch)(int, void**), void **putdat, uint8_t *mac);
63 void printip(void (*putch)(int, void**), void **putdat, uint8_t *ip);
64 void printipmask(void (*putch)(int, void**), void **putdat, uint8_t *ip);
65 void printipv4(void (*putch)(int, void**), void **putdat, uint8_t *ip);
66
67 /* #K */
68 void trace_printk(const char *fmt, ...);
69
70 /* vsprintf.c (linux) */
71 int vsscanf(const char *buf, const char *fmt, va_list args);
72 int sscanf(const char *buf, const char *fmt, ...);