|
我建立了一个sg数组,假设是sg[4];那么我在为每个sg指针分配page以后,sg_dma_address(&sg[1])得到的地址与sg[1]的地址一样!
那么:
struct scatterlist {
struct page *page;
unsigned int offset;
unsigned int length;
dma_addr_t dma_address;
__u32 dma_length;
};
结构中的dma_address究竟是指向哪谁的?
更奇怪的是page_address(sg[1].page)的地址是0,而如果把page_address(sg[1].page)的值赋给unsigned char *buffer,用buffer可以正确取出值,这是怎么会事情? |
|