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:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user