diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-09-18 13:39:58 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-11-13 13:03:55 +0100 |
commit | ab4be9ec77c51939d94ff241b9746be38290a146 (patch) | |
tree | 6acbe351add59b91035366617324d8c6a86ce502 /freebsd/sys/dev/nvme/nvme_private.h | |
parent | NVME(4): Add SGL descriptor (diff) | |
download | rtems-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.h | 23 |
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) |