Can wait on async library calls
[akaros.git] / inc / stdio.h
1 #ifndef ROS_INC_STDIO_H
2 #define ROS_INC_STDIO_H
3
4 #include <inc/stdarg.h>
5
6 #ifndef NULL
7 #define NULL    ((void *) 0)
8 #endif /* !NULL */
9
10 #ifdef DEBUG
11 #define printd(args...) cprintf(args)
12 #else
13 #define printd(args...) {}
14 #endif
15
16 #define printk(args...) cprintf(args)
17
18 // lib/stdio.c
19 void    cputchar(int c);
20 int     getchar(void);
21 int     iscons(int fd);
22
23 // lib/printfmt.c
24 void    printfmt(void (*putch)(int, void*), void *putdat, const char *NTS fmt, ...);
25 void    vprintfmt(void (*putch)(int, TV(t)), TV(t) putdat, const char *NTS fmt, va_list);
26
27 // lib/printf.c
28 int     cprintf(const char * NTS fmt, ...);
29 int     vcprintf(const char * NTS fmt, va_list);
30
31 // lib/sprintf.c
32 int     snprintf(char *str, int size, const char *fmt, ...);
33 int     vsnprintf(char *COUNT(size) str, int size, const char *fmt, va_list);
34
35 // lib/fprintf.c
36 int     printf(const char *fmt, ...);
37 int     fprintf(int fd, const char *fmt, ...);
38 int     vfprintf(int fd, const char *fmt, va_list);
39
40 // lib/readline.c
41 char *NTS readline(const char *NTS prompt);
42
43 /* USERSPACE ONLY */
44 #ifndef ROS_KERNEL
45
46 #include <inc/lib.h>
47
48 int     cprintf_async(async_desc_t** desc, const char * NTS fmt, ...);
49
50 #endif /* USERSPACE ONLY */
51
52 #endif /* !ROS_INC_STDIO_H */