X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fvlib%2Fcli.h;h=0a8ef9d78d7bd991bb0f4d1da8f44e95b0e72847;hb=4fa3aad33fffadec7b7614dc68c8f1d3d9f311c9;hp=e8ba507bfa851cb076ec3957a27622b3504166e2;hpb=72d2c4f3718ba5293e9e0fa8726406ee7d9f3940;p=vpp.git diff --git a/src/vlib/cli.h b/src/vlib/cli.h index e8ba507bfa8..0a8ef9d78d7 100644 --- a/src/vlib/cli.h +++ b/src/vlib/cli.h @@ -126,11 +126,13 @@ typedef struct vlib_cli_command_t /* List of CLI commands, built by constructors */ struct vlib_cli_command_t *next_cli_command; + /* Hit counter */ + u32 hit_counter; } vlib_cli_command_t; typedef void (vlib_cli_output_function_t) (uword arg, u8 * buffer, uword buffer_bytes); -typedef struct +typedef struct vlib_cli_main_t { /* Vector of all known commands. */ vlib_cli_command_t *commands; @@ -138,19 +140,21 @@ typedef struct /* Hash table mapping normalized path to index into all_commands. */ uword *command_index_by_path; - /* Vector of all known parse rules. */ - vlib_cli_parse_rule_t *parse_rules; + /* registration list added by constructors */ + vlib_cli_command_t *cli_command_registrations; - /* Hash table mapping parse rule name to index into parse_rule vector. */ - uword *parse_rule_index_by_name; + /* index vector, to sort commands, etc. */ + u32 *sort_vector; - /* Data parsed for rules. */ - void **parse_rule_data; - /* registration list added by constructors */ - vlib_cli_command_t *cli_command_registrations; + /* performance counter callback */ + void (**perf_counter_cbs) + (struct vlib_cli_main_t *, u32 id, int before_or_after); + void (**perf_counter_cbs_tmp) + (struct vlib_cli_main_t *, u32 id, int before_or_after); } vlib_cli_main_t; +#ifndef CLIB_MARCH_VARIANT #define VLIB_CLI_COMMAND(x,...) \ __VA_ARGS__ vlib_cli_command_t x; \ static void __vlib_cli_command_registration_##x (void) \ @@ -172,16 +176,23 @@ static void __vlib_cli_command_unregistration_##x (void) \ next_cli_command); \ } \ __VA_ARGS__ vlib_cli_command_t x +#else +/* create unused pointer to silence compiler warnings and get whole + function optimized out */ +#define VLIB_CLI_COMMAND(x,...) \ +static __clib_unused vlib_cli_command_t __clib_unused_##x +#endif + #define VLIB_CLI_PARSE_RULE(x) \ vlib_cli_parse_rule_t x /* Output to current CLI connection. */ void vlib_cli_output (struct vlib_main_t *vm, char *fmt, ...); /* Process CLI input. */ -void vlib_cli_input (struct vlib_main_t *vm, - unformat_input_t * input, - vlib_cli_output_function_t * function, - uword function_arg); +int vlib_cli_input (struct vlib_main_t *vm, + unformat_input_t * input, + vlib_cli_output_function_t * function, + uword function_arg); clib_error_t *vlib_cli_register (struct vlib_main_t *vm, vlib_cli_command_t * c);