Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
2/* Copyright (C) 2017-2018 Netronome Systems, Inc. */
3/* Copyright Meta Platforms, Inc. and affiliates */
4
5#ifndef __YNLTOOL_H
6#define __YNLTOOL_H
7
8#ifndef _GNU_SOURCE
9#define _GNU_SOURCE
10#endif
11#include <stdbool.h>
12#include <stdio.h>
13#include <stdlib.h>
14#include <errno.h>
15#include <string.h>
16
17#include "json_writer.h"
18
19#define NEXT_ARG() ({ argc--; argv++; if (argc < 0) usage(); })
20#define NEXT_ARGP() ({ (*argc)--; (*argv)++; if (*argc < 0) usage(); })
21#define BAD_ARG() ({ p_err("what is '%s'?", *argv); -1; })
22#define GET_ARG() ({ argc--; *argv++; })
23#define REQ_ARGS(cnt) \
24 ({ \
25 int _cnt = (cnt); \
26 bool _res; \
27 \
28 if (argc < _cnt) { \
29 p_err("'%s' needs at least %d arguments, %d found", \
30 argv[-1], _cnt, argc); \
31 _res = false; \
32 } else { \
33 _res = true; \
34 } \
35 _res; \
36 })
37
38#define HELP_SPEC_OPTIONS \
39 "OPTIONS := { {-j|--json} [{-p|--pretty}] }"
40
41extern const char *bin_name;
42
43extern json_writer_t *json_wtr;
44extern bool json_output;
45extern bool pretty_output;
46
47void __attribute__((format(printf, 1, 2))) p_err(const char *fmt, ...);
48void __attribute__((format(printf, 1, 2))) p_info(const char *fmt, ...);
49
50bool is_prefix(const char *pfx, const char *str);
51int detect_common_prefix(const char *arg, ...);
52void usage(void) __attribute__((noreturn));
53
54struct cmd {
55 const char *cmd;
56 int (*func)(int argc, char **argv);
57};
58
59int cmd_select(const struct cmd *cmds, int argc, char **argv,
60 int (*help)(int argc, char **argv));
61
62/* subcommands */
63int do_page_pool(int argc, char **argv);
64int do_qstats(int argc, char **argv);
65
66#endif /* __YNLTOOL_H */