1#ifndef __LINUX_SCATTERLIST_H__
2#define __LINUX_SCATTERLIST_H__
45#include <linux/kernel.h>
184static inline void* sg_virt(
const struct scatterlist* sg)
186 return (
void*)sg->
buf;
189static inline unsigned int sg_len(
const struct scatterlist* sg)
234static inline void __sg_page_iter_start(
struct sg_page_iter* pgi,
236 unsigned int nents,
unsigned int pgoff)
246static inline int __sg_page_iter_next(
struct sg_page_iter* pgi)
255#define for_each_sg_page(sglist, pgi, nents, pgoff) \
256 for (__sg_page_iter_start(pgi, sglist, nents, pgoff); \
257 __sg_page_iter_next(pgi);)
259#define for_each_sgtable_page(sgt, pgi, pgoff) \
260 for_each_sg_page((sgt)->sgl, pgi, (sgt)->orig_nents, pgoff)
271#define sg_dma_address(sg) ((sg)->dma_address)
272#define sg_dma_len(sg) ((sg)->dma_length)
282#define for_each_sg_dma(sglist, sg, nents, i) \
283 for ((i) = 0; (i) < (nents) && ((sg) = &(sglist)[(i)]); (i)++)
285#define for_each_sgtable_dma_sg(sgt, sg, i) \
286 for_each_sg_dma((sgt)->sgl, sg, (sgt)->nents, i)
299#define for_each_sg(sglist, sg, nents, i) \
300 for ((i) = 0; (i) < (nents) && ((sg) = &(sglist)[(i)]); (i)++)
302#define for_each_sgtable_sg(sgt, sg, i) \
303 for_each_sg((sgt)->sgl, sg, (sgt)->orig_nents, i)
342static inline unsigned int
348#define for_each_sgtable_dma_page(sgt, pgi, pgoff) \
349 for_each_sg_page((sgt)->sgl, &(pgi)->base, (sgt)->nents, pgoff)
369 struct page**
pages,
unsigned int n_pages,
371 unsigned int max_segment,
gfp_t gfp_mask);
size_t pages
Definition audrv.c:83
size_t size
Definition drm_bridge.h:1299
size_t size_t offset
Definition drm_bridge.h:1299
size_t len
Definition initial.c:23
uintptr_t dma_addr_t
Definition kernel.h:42
unsigned int gfp_t
Definition kernel.h:56
int sg_alloc_table(struct sg_table *sgt, unsigned int nents, gfp_t gfp)
void sg_init_table(struct scatterlist *sgl, unsigned int n)
#define sg_dma_address(sg)
Definition scatterlist.h:271
struct page * sg_page(const struct scatterlist *sg)
dma_addr_t sg_phys(const struct scatterlist *sg)
#define sg_dma_len(sg)
Definition scatterlist.h:272
int sg_alloc_table_from_pages_segment(struct sg_table *sgt, struct page **pages, unsigned int n_pages, unsigned int offset, unsigned long size, unsigned int max_segment, gfp_t gfp_mask)
void sg_free_table(struct sg_table *sgt)
void sg_set_page(struct scatterlist *sg, struct page *page, unsigned int len, unsigned int offset)
Definition scatterlist.h:73
dma_addr_t dma_address
Definition scatterlist.h:102
struct page * page
Definition scatterlist.h:87
unsigned int dma_length
Definition scatterlist.h:103
void * buf
Definition scatterlist.h:74
unsigned int len
Definition scatterlist.h:84
unsigned int length
Definition scatterlist.h:85
Definition scatterlist.h:330
struct sg_page_iter base
Definition scatterlist.h:331
unsigned int __sg_dma_page_accum
Definition scatterlist.h:333
dma_addr_t dma_address
Definition scatterlist.h:332
Definition scatterlist.h:213
unsigned int offset
Definition scatterlist.h:218
unsigned int __sg_page_nents
Definition scatterlist.h:219
unsigned int __sg_page_accum
Definition scatterlist.h:215
struct scatterlist * sg
Definition scatterlist.h:214
unsigned int entry
Definition scatterlist.h:217
unsigned int __sg_page_index
Definition scatterlist.h:216
Definition scatterlist.h:135
struct scatterlist * sgl
Definition scatterlist.h:136
unsigned int orig_nents
Definition scatterlist.h:138
unsigned int nents
Definition scatterlist.h:137