summaryrefslogtreecommitdiffstats
path: root/sys/dev/nvme/nvme_private.h
diff options
context:
space:
mode:
authorjimharris <jimharris@FreeBSD.org>2013-03-26 22:13:07 +0000
committerjimharris <jimharris@FreeBSD.org>2013-03-26 22:13:07 +0000
commit8f8689b1b6afaa3b4a9d7677dafa88ba92b74982 (patch)
treecc98861871a5833a0fbeda68f58ccbd1173ddb26 /sys/dev/nvme/nvme_private.h
parent61a3cd77ccaa7474a0fa5821a55ad89fa7cea58d (diff)
downloadFreeBSD-src-8f8689b1b6afaa3b4a9d7677dafa88ba92b74982.zip
FreeBSD-src-8f8689b1b6afaa3b4a9d7677dafa88ba92b74982.tar.gz
Move common code from the different nvme_allocate_request functions into a
separate function. Sponsored by: Intel Suggested by: carl Reviewed by: carl
Diffstat (limited to 'sys/dev/nvme/nvme_private.h')
-rw-r--r--sys/dev/nvme/nvme_private.h39
1 files changed, 21 insertions, 18 deletions
diff --git a/sys/dev/nvme/nvme_private.h b/sys/dev/nvme/nvme_private.h
index 8a43f26..6a98599 100644
--- a/sys/dev/nvme/nvme_private.h
+++ b/sys/dev/nvme/nvme_private.h
@@ -464,21 +464,30 @@ nvme_single_map(void *arg, bus_dma_segment_t *seg, int nseg, int error)
}
static __inline struct nvme_request *
-nvme_allocate_request(void *payload, uint32_t payload_size, nvme_cb_fn_t cb_fn,
- void *cb_arg)
+_nvme_allocate_request(nvme_cb_fn_t cb_fn, void *cb_arg)
{
struct nvme_request *req;
req = uma_zalloc(nvme_request_zone, M_NOWAIT | M_ZERO);
- if (req == NULL)
- return (NULL);
+ if (req != NULL) {
+ req->cb_fn = cb_fn;
+ req->cb_arg = cb_arg;
+ req->timeout = TRUE;
+ }
+ return (req);
+}
- req->payload = payload;
- req->payload_size = payload_size;
- req->cb_fn = cb_fn;
- req->cb_arg = cb_arg;
- req->timeout = TRUE;
+static __inline struct nvme_request *
+nvme_allocate_request(void *payload, 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->payload = payload;
+ req->payload_size = payload_size;
+ }
return (req);
}
@@ -487,15 +496,9 @@ nvme_allocate_request_uio(struct uio *uio, nvme_cb_fn_t cb_fn, void *cb_arg)
{
struct nvme_request *req;
- req = uma_zalloc(nvme_request_zone, M_NOWAIT | M_ZERO);
- if (req == NULL)
- return (NULL);
-
- req->uio = uio;
- req->cb_fn = cb_fn;
- req->cb_arg = cb_arg;
- req->timeout = TRUE;
-
+ req = _nvme_allocate_request(cb_fn, cb_arg);
+ if (req != NULL)
+ req->uio = uio;
return (req);
}
OpenPOWER on IntegriCloud