Add parlib/common.h
[akaros.git] / user / parlib / include / printf-ext.h
1 /* Copyright (c) 2013 The Regents of the University of California
2  * Barret Rhoden <brho@cs.berkeley.edu>
3  * See LICENSE for details.
4  *
5  * Common printf format extensions.  For now, %r is installed by default
6  * (in early init code), and the others need to be requested.
7  *
8  * To register, for example %i for ipaddr, call:
9  *              register_printf_specifier('i', printf_ipaddr, printf_ipaddr_info);
10  */
11
12 #ifndef PARLIB_PRINTF_EXT_H
13 #define PARLIB_PRINTF_EXT_H
14
15 #include <parlib/common.h>
16 #include <printf.h>
17
18 __BEGIN_DECLS
19
20 /* Commonly used as %i, will print out a 16-byte plan9 IP address */
21 int printf_ipaddr(FILE *stream, const struct printf_info *info,
22                   const void *const *args);
23 int printf_ipaddr_info(const struct printf_info* info, size_t n, int *argtypes,
24                        int *size);
25
26 /* Commonly used as %M, will print out a plan9 IPv6 mask, preferably as /xx */
27 int printf_ipmask(FILE *stream, const struct printf_info *info,
28                   const void *const *args);
29 int printf_ipmask_info(const struct printf_info* info, size_t n, int *argtypes,
30                        int *size);
31
32 /* Commonly used as %E, will print out an ethernet address */
33 int printf_ethaddr(FILE *stream, const struct printf_info *info,
34                    const void *const *args);
35 int printf_ethaddr_info(const struct printf_info* info, size_t n, int *argtypes,
36                         int *size);
37
38 /* Installed by default, will print the errstr for %r */
39 int printf_errstr(FILE *stream, const struct printf_info *info,
40                   const void *const *args);
41 int printf_errstr_info(const struct printf_info* info, size_t n, int *argtypes,
42                        int *size);
43
44 __END_DECLS
45
46 #endif /* PARLIB_PRINTF_EXT_H */