struct command {
char *name;
char *help;
- char *path;
char *man;
int (*fn)(int argc, char **argv);
};
.name = n, \
.help = h, \
.fn = f, \
- .path = "Documentation/nvme-"n".1", \
.man = "nvme-"n, \
},
COMMAND_LIST
exit(errno);
}
-static void get_dev(int optind, int argc, char **argv)
+static void get_dev(int argc, char **argv)
{
if (optind >= argc) {
errno = EINVAL;
argconfig_parse(argc, argv, desc, command_line_options,
(void *)&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
err = nvme_smart_log(fd, cfg.namespace_id, &smart_log);
if (!err) {
};
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
err = nvme_intel_smart_log(fd, cfg.namespace_id, &smart_log);
if (!err) {
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (!cfg.log_entries) {
fprintf(stderr, "non-zero log-entries is required param\n");
return EINVAL;
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
err = nvme_fw_log(fd, &fw_log);
if (!err) {
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (!cfg.log_len) {
fprintf(stderr, "non-zero log-len is required param\n");
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (posix_memalign((void *)&cntlist, getpagesize(), 0x1000))
return ENOMEM;
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
err = nvme_identify_ns_list(fd, cfg.namespace_id, !!cfg.all, ns_list);
if (!err) {
commands[DELETE_NS].name);
return EINVAL;
}
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
err = nvme_ns_delete(fd, cfg.namespace_id);
if (!err)
for (i = 0; i < num; i++)
ctrlist[i] = ((uint16_t)list[i]);
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (attach)
err = nvme_ns_attach_ctrls(fd, cfg.namespace_id, num, ctrlist);
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
err = nvme_ns_create(fd, cfg.nsze, cfg.ncap, cfg.flbas, cfg.dps, cfg.nmic, &nsid);
if (!err)
return block;
}
-static void get_registers(struct nvme_bar **bar, unsigned char_only)
+static void get_registers(struct nvme_bar **bar)
{
int pci_fd;
char *base, path[512];
void *membase;
- if (char_only && !S_ISCHR(nvme_stat.st_mode)) {
- fprintf(stderr, "%s is not a character device\n", devicename);
- exit(ENODEV);
- }
-
- base = nvme_char_from_block(basename(devicename));
-
+ base = nvme_char_from_block((char *)devicename);
sprintf(path, "/sys/class/nvme/%s/device/resource0", base);
pci_fd = open(path, O_RDONLY);
if (pci_fd < 0) {
pci_fd = open(path, O_RDONLY);
}
if (pci_fd < 0) {
- fprintf(stderr, "%s did not find a pci resource\n", devicename);
+ fprintf(stderr, "%s did not find a pci resource\n", base);
exit(ENODEV);
}
membase = mmap(0, getpagesize(), PROT_READ, MAP_SHARED, pci_fd, 0);
if (!membase) {
- fprintf(stderr, "%s failed to map\n", devicename);
+ fprintf(stderr, "%s failed to map\n", base);
exit(ENODEV);
}
*bar = membase;
list_item->ver = list_item->ctrl.ver;
if (list_item->ctrl.ver)
return;
- get_registers(&bar, 0);
+ get_registers(&bar);
list_item->ver = bar->vs;
}
if (cfg.human_readable)
flags |= HUMAN;
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
err = nvme_identify_ctrl(fd, &ctrl);
if (!err) {
if (cfg.human_readable)
flags |= HUMAN;
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (!cfg.namespace_id) {
cfg.namespace_id = nvme_get_nsid(fd);
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (cfg.sel > 7) {
fprintf(stderr, "invalid 'select' param:%d\n", cfg.sel);
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
fw_fd = open(cfg.fw, O_RDONLY);
cfg.offset <<= 2;
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (cfg.slot > 7) {
fprintf(stderr, "invalid slot:%d\n", cfg.slot);
{
int opt, long_index;
struct nvme_bar *bar;
- static struct option opts[] = {};
- while ((opt = getopt_long(argc, (char **)argv, "", opts,
+ while ((opt = getopt_long(argc, (char **)argv, "", NULL,
&long_index)) != -1);
- get_dev(optind, argc, argv);
+ get_dev(argc, argv);
- get_registers(&bar, 1);
+ get_registers(&bar);
printf("cap : ");
print_lo_hi_64((uint32_t *)&bar->cap);
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
/* ses & pi checks set to 7 for forward-compatibility */
if (cfg.ses > 7) {
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (!cfg.feature_id) {
fprintf(stderr, "feature-id required param\n");
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
sec_fd = open(cfg.file, O_RDONLY);
if (sec_fd < 0) {
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (!cfg.namespace_id) {
cfg.namespace_id = nvme_get_nsid(fd);
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (cfg.prinfo > 0xf)
return EINVAL;
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
nc = argconfig_parse_comma_sep_array(cfg.ctx_attrs, ctx_attrs, array_len(ctx_attrs));
nb = argconfig_parse_comma_sep_array(cfg.blocks, nlbs, array_len(nlbs));
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
err = nvme_flush(fd, cfg.namespace_id);
if (err < 0)
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (!cfg.namespace_id) {
cfg.namespace_id = nvme_get_nsid(fd);
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (!cfg.namespace_id) {
cfg.namespace_id = nvme_get_nsid(fd);
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (!cfg.namespace_id) {
cfg.namespace_id = nvme_get_nsid(fd);
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (!cfg.namespace_id) {
cfg.namespace_id = nvme_get_nsid(fd);
return EINVAL;
}
}
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (!cfg.data_size) {
fprintf(stderr, "data size not provided\n");
argconfig_parse(argc, argv, desc, command_line_options,
&cfg, sizeof(cfg));
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (cfg.size) {
if (posix_memalign(&sec_buf, getpagesize(), cfg.size)) {
}
}
- get_dev(1, argc, argv);
+ get_dev(argc, argv);
if (cfg.metadata_len)
metadata = malloc(cfg.metadata_len);
if (cfg.data_len) {