| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Copyright (c) 2000-2005 Silicon Graphics, Inc. |
| * All Rights Reserved. |
| */ |
| #ifndef __COMMAND_H__ |
| #define __COMMAND_H__ |
| |
| #include <sys/time.h> |
| |
| /* |
| * A "oneshot" command ony runs once per command execution. It does |
| * not iterate the command args function callout and so can be used |
| * for functions like "help" that should only ever be run once. |
| */ |
| #define CMD_FLAG_ONESHOT (1u << 31) |
| #define CMD_FLAG_FOREIGN_OK (1u << 30) /* command not restricted to XFS */ |
| #define CMD_FLAG_LIBRARY (1u << 29) /* command provided by libxcmd */ |
| |
| typedef int (*cfunc_t)(int argc, char **argv); |
| typedef void (*helpfunc_t)(void); |
| |
| typedef struct cmdinfo { |
| const char *name; |
| const char *altname; |
| cfunc_t cfunc; |
| int argmin; |
| int argmax; |
| int canpush; |
| int flags; |
| const char *args; |
| const char *oneline; |
| helpfunc_t help; |
| } cmdinfo_t; |
| |
| extern cmdinfo_t *cmdtab; |
| extern int ncmds; |
| |
| extern void help_init(void); |
| extern void quit_init(void); |
| |
| typedef int (*iterfunc_t)(int index); |
| typedef int (*checkfunc_t)(const cmdinfo_t *ci); |
| |
| extern void add_command(const cmdinfo_t *ci); |
| extern void add_user_command(char *optarg); |
| extern void add_oneshot_user_command(char *optarg); |
| extern void add_command_iterator(iterfunc_t func); |
| extern void add_check_command(checkfunc_t cf); |
| |
| extern const cmdinfo_t *find_command(const char *cmd); |
| |
| extern void command_loop(void); |
| extern int command_usage(const cmdinfo_t *ci); |
| extern int command(const cmdinfo_t *ci, int argc, char **argv); |
| |
| extern void report_io_times(const char *verb, struct timeval *t2, |
| long long offset, long long count, |
| long long total, int ops, int compact); |
| |
| #endif /* __COMMAND_H__ */ |