summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/dev/nvme/nvme_private.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-09-18 13:39:58 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-11-13 13:03:55 +0100
commitab4be9ec77c51939d94ff241b9746be38290a146 (patch)
tree6acbe351add59b91035366617324d8c6a86ce502 /freebsd/sys/dev/nvme/nvme_private.h
parentNVME(4): Add SGL descriptor (diff)
downloadrtems-libbsd-ab4be9ec77c51939d94ff241b9746be38290a146.tar.bz2
NVME(4): Add support for SGL
Update #3821.
Diffstat (limited to 'freebsd/sys/dev/nvme/nvme_private.h')
-rw-r--r--freebsd/sys/dev/nvme/nvme_private.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/freebsd/sys/dev/nvme/nvme_private.h b/freebsd/sys/dev/nvme/nvme_private.h
index 8346d5ea..ade1833c 100644
--- a/freebsd/sys/dev/nvme/nvme_private.h
+++ b/freebsd/sys/dev/nvme/nvme_private.h
@@ -130,6 +130,9 @@ extern devclass_t nvme_devclass;
#define NVME_REQUEST_UIO 3
#define NVME_REQUEST_BIO 4
#define NVME_REQUEST_CCB 5
+#ifdef __rtems__
+#define NVME_REQUEST_IOV 10
+#endif /* __rtems__ */
struct nvme_request {
@@ -138,6 +141,9 @@ struct nvme_request {
union {
void *payload;
struct bio *bio;
+#ifdef __rtems__
+ const struct iovec *iov;
+#endif /* __rtems__ */
} u;
uint32_t type;
uint32_t payload_size;
@@ -556,6 +562,23 @@ nvme_allocate_request_ccb(union ccb *ccb, nvme_cb_fn_t cb_fn, void *cb_arg)
return (req);
}
+#ifdef __rtems__
+static __inline struct nvme_request *
+nvme_allocate_request_iov(const struct iovec *iov, uint32_t payload_size,
+ nvme_cb_fn_t cb_fn, void *cb_arg)
+{
+ struct nvme_request *req;
+
+ req = _nvme_allocate_request(cb_fn, cb_arg);
+ if (req != NULL) {
+ req->type = NVME_REQUEST_IOV;
+ req->u.iov = iov;
+ req->payload_size = payload_size;
+ }
+
+ return (req);
+}
+#endif /* __rtems__ */
#define nvme_free_request(req) uma_zfree(nvme_request_zone, req)