int (*func)(struct rd *rd);
};
- /*
- * Parser interface
- */
- bool rd_no_arg(struct rd *rd);
- void rd_arg_inc(struct rd *rd);
-
- char *rd_argv(struct rd *rd);
/*
* Commands interface
int cmd_res(struct rd *rd);
int rd_exec_cmd(struct rd *rd, const struct rd_cmd *c, const char *str);
int rd_exec_dev(struct rd *rd, int (*cb)(struct rd *rd));
+int rd_exec_require_dev(struct rd *rd, int (*cb)(struct rd *rd));
int rd_exec_link(struct rd *rd, int (*cb)(struct rd *rd), bool strict_port);
void rd_free(struct rd *rd);
int rd_set_arg_to_devname(struct rd *rd);
int rd_argc(struct rd *rd);
- int strcmpx(const char *str1, const char *str2);
-
/*
* Device manipulation
*/
void rd_prepare_msg(struct rd *rd, uint32_t cmd, uint32_t *seq, uint16_t flags);
int rd_dev_init_cb(const struct nlmsghdr *nlh, void *data);
int rd_attr_cb(const struct nlattr *attr, void *data);
- int rd_attr_check(const struct nlattr *attr, int *typep);
/*
* Print helpers
*/
void print_driver_table(struct rd *rd, struct nlattr *tb);
void newline(struct rd *rd);
- void newline_indent(struct rd *rd);
#define MAX_LINE_LENGTH 80
#endif /* _RDMA_TOOL_H_ */
return rd->argc;
}
- char *rd_argv(struct rd *rd)
+ static char *rd_argv(struct rd *rd)
{
if (!rd_argc(rd))
return NULL;
return *rd->argv;
}
- int strcmpx(const char *str1, const char *str2)
+ static int strcmpx(const char *str1, const char *str2)
{
if (strlen(str1) > strlen(str2))
return -1;
return strcmpx(rd_argv(rd), pattern) == 0;
}
- void rd_arg_inc(struct rd *rd)
+ static void rd_arg_inc(struct rd *rd)
{
if (!rd_argc(rd))
return;
rd->argv++;
}
- bool rd_no_arg(struct rd *rd)
+ static bool rd_no_arg(struct rd *rd)
{
return rd_argc(rd) == 0;
}
[RDMA_NLDEV_ATTR_DRIVER_U64] = MNL_TYPE_U64,
};
- int rd_attr_check(const struct nlattr *attr, int *typep)
+ static int rd_attr_check(const struct nlattr *attr, int *typep)
{
int type;
return ret;
}
+int rd_exec_require_dev(struct rd *rd, int (*cb)(struct rd *rd))
+{
+ if (rd_no_arg(rd)) {
+ pr_err("Please provide device name.\n");
+ return -EINVAL;
+ }
+
+ return rd_exec_dev(rd, cb);
+}
+
int rd_exec_cmd(struct rd *rd, const struct rd_cmd *cmds, const char *str)
{
const struct rd_cmd *c;
pr_out("\n");
}
- void newline_indent(struct rd *rd)
+ static void newline_indent(struct rd *rd)
{
newline(rd);
if (!rd->json_output)