1
0
Fork 0

Adding upstream version 2.2.1.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-16 12:17:56 +01:00
parent 28d4a2895d
commit 8dc527e3df
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
446 changed files with 8369 additions and 4059 deletions

63
nvme.h
View file

@ -19,8 +19,12 @@
#include <dirent.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <endian.h>
#include <sys/time.h>
#include <sys/stat.h>
#include <libnvme-mi.h>
#include "plugin.h"
#include "util/json.h"
@ -34,13 +38,68 @@ enum nvme_print_flags {
BINARY = 1 << 3, /* binary dump raw bytes */
};
enum nvme_cli_topo_ranking {
NVME_CLI_TOPO_NAMESPACE,
NVME_CLI_TOPO_CTRL,
};
#define SYS_NVME "/sys/class/nvme"
enum nvme_dev_type {
NVME_DEV_DIRECT,
NVME_DEV_MI,
};
struct nvme_dev {
enum nvme_dev_type type;
union {
struct {
int fd;
struct stat stat;
} direct;
struct {
nvme_root_t root;
nvme_mi_ep_t ep;
nvme_mi_ctrl_t ctrl;
} mi;
};
const char *name;
};
#define dev_fd(d) __dev_fd(d, __func__, __LINE__)
static inline int __dev_fd(struct nvme_dev *dev, const char *func, int line)
{
if (dev->type != NVME_DEV_DIRECT) {
fprintf(stderr,
"warning: %s:%d not a direct transport!\n",
func, line);
return -1;
}
return dev->direct.fd;
}
static inline nvme_mi_ep_t dev_mi_ep(struct nvme_dev *dev)
{
if (dev->type != NVME_DEV_MI) {
fprintf(stderr,
"warning: not a MI transport!\n");
return NULL;
}
return dev->mi.ep;
}
void register_extension(struct plugin *plugin);
int parse_and_open(int argc, char **argv, const char *desc,
/*
* parse_and_open - parses arguments and opens the NVMe device, populating @dev
*/
int parse_and_open(struct nvme_dev **dev, int argc, char **argv, const char *desc,
const struct argconfig_commandline_options *clo);
extern const char *devicename;
void dev_close(struct nvme_dev *dev);
extern const char *output_format;
enum nvme_print_flags validate_output_format(const char *format);