summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/dev/nvme/nvme_ns_cmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sys/dev/nvme/nvme_ns_cmd.c')
-rw-r--r--freebsd/sys/dev/nvme/nvme_ns_cmd.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/freebsd/sys/dev/nvme/nvme_ns_cmd.c b/freebsd/sys/dev/nvme/nvme_ns_cmd.c
index 70260869..00a9a7aa 100644
--- a/freebsd/sys/dev/nvme/nvme_ns_cmd.c
+++ b/freebsd/sys/dev/nvme/nvme_ns_cmd.c
@@ -74,6 +74,22 @@ nvme_ns_cmd_read_bio(struct nvme_namespace *ns, struct bio *bp,
return (0);
}
+#else /* __rtems__ */
+int
+nvme_ns_cmd_read_iov(struct nvme_namespace *ns, const struct iovec *iov,
+ uint64_t lba, uint32_t lba_count, nvme_cb_fn_t cb_fn, void *cb_arg)
+{
+ struct nvme_request *req;
+
+ req = nvme_allocate_request_iov(iov,
+ lba_count * nvme_ns_get_sector_size(ns), cb_fn, cb_arg);
+ if (req == NULL)
+ return (ENOMEM);
+
+ nvme_ns_read_cmd(&req->cmd, ns->id, lba, lba_count);
+ nvme_ctrlr_submit_io_request(ns->ctrlr, req);
+ return (0);
+}
#endif /* __rtems__ */
int
@@ -116,6 +132,22 @@ nvme_ns_cmd_write_bio(struct nvme_namespace *ns, struct bio *bp,
return (0);
}
+#else /* __rtems__ */
+int
+nvme_ns_cmd_write_iov(struct nvme_namespace *ns, const struct iovec *iov,
+ uint64_t lba, uint32_t lba_count, nvme_cb_fn_t cb_fn, void *cb_arg)
+{
+ struct nvme_request *req;
+
+ req = nvme_allocate_request_iov(iov,
+ lba_count * nvme_ns_get_sector_size(ns), cb_fn, cb_arg);
+ if (req == NULL)
+ return (ENOMEM);
+
+ nvme_ns_write_cmd(&req->cmd, ns->id, lba, lba_count);
+ nvme_ctrlr_submit_io_request(ns->ctrlr, req);
+ return (0);
+}
#endif /* __rtems__ */
int