Changeset View
Changeset View
Standalone View
Standalone View
sys/compat/linuxkpi/common/include/linux/scatterlist.h
Show All 30 Lines | |||||
*/ | */ | ||||
#ifndef _LINUX_SCATTERLIST_H_ | #ifndef _LINUX_SCATTERLIST_H_ | ||||
#define _LINUX_SCATTERLIST_H_ | #define _LINUX_SCATTERLIST_H_ | ||||
#include <linux/page.h> | #include <linux/page.h> | ||||
#include <linux/slab.h> | #include <linux/slab.h> | ||||
#include <linux/mm.h> | #include <linux/mm.h> | ||||
struct bus_dmamap; | |||||
struct scatterlist { | struct scatterlist { | ||||
unsigned long page_link; | unsigned long page_link; | ||||
#define SG_PAGE_LINK_CHAIN 0x1UL | #define SG_PAGE_LINK_CHAIN 0x1UL | ||||
#define SG_PAGE_LINK_LAST 0x2UL | #define SG_PAGE_LINK_LAST 0x2UL | ||||
#define SG_PAGE_LINK_MASK 0x3UL | #define SG_PAGE_LINK_MASK 0x3UL | ||||
unsigned int offset; | unsigned int offset; | ||||
unsigned int length; | unsigned int length; | ||||
dma_addr_t dma_address; | dma_addr_t dma_address; | ||||
unsigned int dma_length; | struct bus_dmamap *dma_map; /* FreeBSD specific */ | ||||
}; | }; | ||||
CTASSERT((sizeof(struct scatterlist) & SG_PAGE_LINK_MASK) == 0); | CTASSERT((sizeof(struct scatterlist) & SG_PAGE_LINK_MASK) == 0); | ||||
struct sg_table { | struct sg_table { | ||||
struct scatterlist *sgl; | struct scatterlist *sgl; | ||||
unsigned int nents; | unsigned int nents; | ||||
unsigned int orig_nents; | unsigned int orig_nents; | ||||
Show All 18 Lines | |||||
#define SG_END SG_PAGE_LINK_LAST | #define SG_END SG_PAGE_LINK_LAST | ||||
#define sg_is_chain(sg) ((sg)->page_link & SG_PAGE_LINK_CHAIN) | #define sg_is_chain(sg) ((sg)->page_link & SG_PAGE_LINK_CHAIN) | ||||
#define sg_is_last(sg) ((sg)->page_link & SG_PAGE_LINK_LAST) | #define sg_is_last(sg) ((sg)->page_link & SG_PAGE_LINK_LAST) | ||||
#define sg_chain_ptr(sg) \ | #define sg_chain_ptr(sg) \ | ||||
((struct scatterlist *) ((sg)->page_link & ~SG_PAGE_LINK_MASK)) | ((struct scatterlist *) ((sg)->page_link & ~SG_PAGE_LINK_MASK)) | ||||
#define sg_dma_address(sg) (sg)->dma_address | #define sg_dma_address(sg) (sg)->dma_address | ||||
#define sg_dma_len(sg) (sg)->dma_length | #define sg_dma_len(sg) (sg)->length | ||||
#define for_each_sg_page(sgl, iter, nents, pgoffset) \ | #define for_each_sg_page(sgl, iter, nents, pgoffset) \ | ||||
for (_sg_iter_init(sgl, iter, nents, pgoffset); \ | for (_sg_iter_init(sgl, iter, nents, pgoffset); \ | ||||
(iter)->sg; _sg_iter_next(iter)) | (iter)->sg; _sg_iter_next(iter)) | ||||
#define for_each_sg(sglist, sg, sgmax, iter) \ | #define for_each_sg(sglist, sg, sgmax, iter) \ | ||||
for (iter = 0, sg = (sglist); iter < (sgmax); iter++, sg = sg_next(sg)) | for (iter = 0, sg = (sglist); iter < (sgmax); iter++, sg = sg_next(sg)) | ||||
▲ Show 20 Lines • Show All 368 Lines • Show Last 20 Lines |