diff options
Diffstat (limited to 'freebsd/sys/dev/nvme/nvme_ns_cmd.c')
-rw-r--r-- | freebsd/sys/dev/nvme/nvme_ns_cmd.c | 32 |
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 |