37#include <sys/libkern.h>
38#include <sys/kernel.h>
39#include <sys/malloc.h>
40#include <sys/sysctl.h>
47#define min(a,b) (((a)<(b))?(a):(b))
57#include <sys/endian.h>
68 uint32_t cdw10, uint32_t cdw11, uint32_t cdw12, uint32_t cdw13,
69 uint32_t cdw14, uint32_t cdw15)
71 bzero(&nvmeio->
cmd,
sizeof(
struct nvme_command));
72 nvmeio->
cmd.opc = cmd;
73 nvmeio->
cmd.nsid = htole32(nsid);
74 nvmeio->
cmd.cdw10 = htole32(cdw10);
75 nvmeio->
cmd.cdw11 = htole32(cdw11);
76 nvmeio->
cmd.cdw12 = htole32(cdw12);
77 nvmeio->
cmd.cdw13 = htole32(cdw13);
78 nvmeio->
cmd.cdw14 = htole32(cdw14);
79 nvmeio->
cmd.cdw15 = htole32(cdw15);
90 const struct nvme_namespace_data *data,
struct sbuf *sb)
102 sbuf_printf(sb,
">\n");
112 "WRITE_UNCORRECTABLE",
117 "DATASET_MANAGEMENT",
121 "RESERVATION_REGISTER",
122 "RESERVATION_REPORT",
125 "RESERVATION_ACQUIRE",
129 "RESERVATION_RELEASE",
154 sbuf_new(&sb, cmd_string, len, SBUF_FIXEDLEN);
157 error = sbuf_finish(&sb);
166 return(sbuf_data(&sb));
178 "opc=%x fuse=%x nsid=%x prp1=%llx prp2=%llx cdw=%x %x %x %x %x %x",
179 cmd->opc, cmd->fuse, cmd->nsid,
180 (
unsigned long long)cmd->prp1, (
unsigned long long)cmd->prp2,
181 cmd->cdw10, cmd->cdw11, cmd->cdw12,
182 cmd->cdw13, cmd->cdw14, cmd->cdw15);
void cam_strvis_sbuf(struct sbuf *sb, const u_int8_t *src, int srclen, uint32_t flags)
@ CAM_STRVIS_FLAG_NONASCII_SPC
int nvme_command_sbuf(struct ccb_nvmeio *nvmeio, struct sbuf *sb)
const void * nvme_get_identify_cntrl(struct cam_periph *periph)
const char * nvme_cmd_string(const struct nvme_command *cmd, char *cmd_string, size_t len)
static const char * nvme_opc2str[]
void nvme_print_ident(const struct nvme_controller_data *cdata, const struct nvme_namespace_data *data, struct sbuf *sb)
const char * nvme_op_string(const struct nvme_command *cmd, int admin)
const void * nvme_get_identify_ns(struct cam_periph *periph)
int nvme_identify_match(caddr_t identbuffer, caddr_t table_entry)
void nvme_cmd_sbuf(const struct nvme_command *cmd, struct sbuf *sb)
void nvme_ns_cmd(struct ccb_nvmeio *nvmeio, uint8_t cmd, uint32_t nsid, uint32_t cdw10, uint32_t cdw11, uint32_t cdw12, uint32_t cdw13, uint32_t cdw14, uint32_t cdw15)
struct nvme_namespace_data * nvme_data
struct nvme_controller_data * nvme_cdata