| // 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__ */ |