1#ifndef __ASM_GENERIC_SCATTERLIST_H 2#define __ASM_GENERIC_SCATTERLIST_H 3 4#include <linux/types.h> 5 6struct scatterlist { 7#ifdef CONFIG_DEBUG_SG 8 unsigned long sg_magic; 9#endif 10 unsigned long page_link; 11 unsigned int offset; 12 unsigned int length; 13 dma_addr_t dma_address; 14#ifdef CONFIG_NEED_SG_DMA_LENGTH 15 unsigned int dma_length; 16#endif 17}; 18 19/* 20 * These macros should be used after a dma_map_sg call has been done 21 * to get bus addresses of each of the SG entries and their lengths. 22 * You should only work with the number of sg entries pci_map_sg 23 * returns, or alternatively stop on the first sg_dma_len(sg) which 24 * is 0. 25 */ 26#define sg_dma_address(sg) ((sg)->dma_address) 27 28#ifdef CONFIG_NEED_SG_DMA_LENGTH 29#define sg_dma_len(sg) ((sg)->dma_length) 30#else 31#define sg_dma_len(sg) ((sg)->length) 32#endif 33 34#endif /* __ASM_GENERIC_SCATTERLIST_H */ 35