首页 > 解决方案 > 从缓冲区创建结构散点列表数组

问题描述

我正在尝试从虚拟内核地址指向的缓冲区构建一个“struct scatterlist”类型的数组(我知道缓冲区的字节大小,但它可能很大)。理想情况下,我希望拥有像 init_sg_array_from_buf 这样的功能:

void my_function(void *buffer, int buffer_length)
{
    struct scatterlist *sg;
    int sg_count;

    sg_count = init_sg_array_from_buf(buffer, buffer_length, sg);
}

scatterlist api中的哪个函数有类似的功能?目前我看到的唯一可能性是手动确定缓冲区跨越的页面数量。Windows 有一个名为“ADDRESS_AND_SIZE_TO_SPAN_PAGES”的内核宏,但我什至没能在 linux 内核中找到类似的东西。

标签: linux-kernellinux-device-driver

解决方案


推荐阅读