cam: Move bus_dmamap_load_ccb into cam.c.

This routine is specific to CAM and no longer assumes any internal
bus_dma knowledge as it is simple wrapper around bus_dmamap_load_mem.

Fixes:		60381fd1ee memdesc: Retire MEMDESC_CCB.
Reviewed by:	kib
Differential Revision:	https://reviews.freebsd.org/D41058
This commit is contained in:
John Baldwin
2023-07-18 18:19:27 -07:00
parent b834497c6d
commit c5312bd79e
2 changed files with 20 additions and 19 deletions
+20
View File
@@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$");
#ifdef _KERNEL
#include <sys/libkern.h>
#include <machine/bus.h>
#include <cam/cam_queue.h>
#include <cam/cam_xpt.h>
@@ -642,4 +643,23 @@ memdesc_ccb(union ccb *ccb)
panic("%s: flags 0x%X unimplemented", __func__, ccb_h->flags);
}
}
int
bus_dmamap_load_ccb(bus_dma_tag_t dmat, bus_dmamap_t map, union ccb *ccb,
bus_dmamap_callback_t *callback, void *callback_arg,
int flags)
{
struct ccb_hdr *ccb_h;
struct memdesc mem;
ccb_h = &ccb->ccb_h;
if ((ccb_h->flags & CAM_DIR_MASK) == CAM_DIR_NONE) {
callback(callback_arg, NULL, 0, 0);
return (0);
}
mem = memdesc_ccb(ccb);
return (bus_dmamap_load_mem(dmat, map, &mem, callback, callback_arg,
flags));
}
#endif
-19
View File
@@ -449,25 +449,6 @@ bus_dmamap_load_uio(bus_dma_tag_t dmat, bus_dmamap_t map, struct uio *uio,
return (error);
}
int
bus_dmamap_load_ccb(bus_dma_tag_t dmat, bus_dmamap_t map, union ccb *ccb,
bus_dmamap_callback_t *callback, void *callback_arg,
int flags)
{
struct ccb_hdr *ccb_h;
struct memdesc mem;
ccb_h = &ccb->ccb_h;
if ((ccb_h->flags & CAM_DIR_MASK) == CAM_DIR_NONE) {
callback(callback_arg, NULL, 0, 0);
return (0);
}
mem = memdesc_ccb(ccb);
return (bus_dmamap_load_mem(dmat, map, &mem, callback, callback_arg,
flags));
}
int
bus_dmamap_load_bio(bus_dma_tag_t dmat, bus_dmamap_t map, struct bio *bio,
bus_dmamap_callback_t *callback, void *callback_arg,