xref: /freebsd/lib/libpmc/pmu-events/json.h (revision 959826ca1bb0a42ddd624bf1803ae2957a3282f3)
1*959826caSMatt Macy /* $FreeBSD$ */
2*959826caSMatt Macy #ifndef JSON_H
3*959826caSMatt Macy #define JSON_H 1
4*959826caSMatt Macy 
5*959826caSMatt Macy #include "jsmn.h"
6*959826caSMatt Macy 
7*959826caSMatt Macy jsmntok_t *parse_json(const char *fn, char **map, size_t *size, int *len);
8*959826caSMatt Macy void free_json(char *map, size_t size, jsmntok_t *tokens);
9*959826caSMatt Macy int json_line(char *map, jsmntok_t *t);
10*959826caSMatt Macy const char *json_name(jsmntok_t *t);
11*959826caSMatt Macy int json_streq(char *map, jsmntok_t *t, const char *s);
12*959826caSMatt Macy int json_len(jsmntok_t *t);
13*959826caSMatt Macy 
14*959826caSMatt Macy extern int verbose;
15*959826caSMatt Macy 
16*959826caSMatt Macy #include <stdbool.h>
17*959826caSMatt Macy 
18*959826caSMatt Macy extern int eprintf(int level, int var, const char *fmt, ...);
19*959826caSMatt Macy #define pr_fmt(fmt)	fmt
20*959826caSMatt Macy 
21*959826caSMatt Macy #define pr_err(fmt, ...) \
22*959826caSMatt Macy 	eprintf(0, verbose, pr_fmt(fmt), ##__VA_ARGS__)
23*959826caSMatt Macy 
24*959826caSMatt Macy #define pr_info(fmt, ...) \
25*959826caSMatt Macy 	eprintf(1, verbose, pr_fmt(fmt), ##__VA_ARGS__)
26*959826caSMatt Macy 
27*959826caSMatt Macy #define pr_debug(fmt, ...) \
28*959826caSMatt Macy 	eprintf(2, verbose, pr_fmt(fmt), ##__VA_ARGS__)
29*959826caSMatt Macy 
30*959826caSMatt Macy #ifndef roundup
31*959826caSMatt Macy #define roundup(x, y) (                                \
32*959826caSMatt Macy {                                                      \
33*959826caSMatt Macy         const typeof(y) __y = y;                       \
34*959826caSMatt Macy         (((x) + (__y - 1)) / __y) * __y;               \
35*959826caSMatt Macy }                                                      \
36*959826caSMatt Macy )
37*959826caSMatt Macy #endif
38*959826caSMatt Macy 
39*959826caSMatt Macy #endif
40