|  | /* SPDX-License-Identifier: GPL-2.0 */ | 
|  | #ifndef JSON_H | 
|  | #define JSON_H 1 | 
|  |  | 
|  | #include "jsmn.h" | 
|  |  | 
|  | jsmntok_t *parse_json(const char *fn, char **map, size_t *size, int *len); | 
|  | void free_json(char *map, size_t size, jsmntok_t *tokens); | 
|  | int json_line(char *map, jsmntok_t *t); | 
|  | const char *json_name(jsmntok_t *t); | 
|  | int json_streq(char *map, jsmntok_t *t, const char *s); | 
|  | int json_len(jsmntok_t *t); | 
|  |  | 
|  | extern int verbose; | 
|  |  | 
|  | #include <stdbool.h> | 
|  |  | 
|  | extern int eprintf(int level, int var, const char *fmt, ...); | 
|  | #define pr_fmt(fmt)	fmt | 
|  |  | 
|  | #define pr_err(fmt, ...) \ | 
|  | eprintf(0, verbose, pr_fmt(fmt), ##__VA_ARGS__) | 
|  |  | 
|  | #define pr_info(fmt, ...) \ | 
|  | eprintf(1, verbose, pr_fmt(fmt), ##__VA_ARGS__) | 
|  |  | 
|  | #define pr_debug(fmt, ...) \ | 
|  | eprintf(2, verbose, pr_fmt(fmt), ##__VA_ARGS__) | 
|  |  | 
|  | #ifndef roundup | 
|  | #define roundup(x, y) (                                \ | 
|  | {                                                      \ | 
|  | const typeof(y) __y = y;                       \ | 
|  | (((x) + (__y - 1)) / __y) * __y;               \ | 
|  | }                                                      \ | 
|  | ) | 
|  | #endif | 
|  |  | 
|  | #endif |