我正在开发一个可以访问分散-收集列表 (sg) 元素的设备驱动程序。我能够从中提取数据并使用 sg_copy_to_buffer 将其存储在分配的缓冲区中。现在,我的想法是创建一个新的 scatterlist 并从这个缓冲区复制到我创建的新 scatterlist 中(当然这是稍后完成的)并将这个新的 scatterlist 返回给内核。(这是用于性能指标等)我尝试在线搜索文档以使用 scatterlist 等,但无济于事。我通常在做什么:
char *buffer = kmalloc (***);
struct scatterlist *sglist = kmalloc (sizeof (struct scatterlist)...);
sg_init_one(sglist, buffer, BUFFER_SIZE);
sg_copy_to_buffer (inp_sglist, inp_sglist_len, buffer);
*** Later ***
sg_copy_from_buffer (sglist, 1, buffer);
是否有很好的文档可以帮助我将分散列表映射到虚拟缓冲区?我尝试查看http://lwn.net/Articles/256368/ http://www.linuxjournal.com/article/7104 等。
任何帮助或指示将不胜感激!