1 #ifndef __ASM_GENERIC_SCATTERLIST_H 2 #define __ASM_GENERIC_SCATTERLIST_H 3 4 #include <linux/types.h> 5 6 struct 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