Я работаю над драйвером устройства, имеющим доступ к элементу списка рассеяния (sg). Я могу извлечь данные из него и сохранить его в выделенном буфере с помощью sg_copy_to_buffer. Теперь, моя идея - создать новый список рассеяния и скопировать из этого буфера в новый список рассеяния, который я создаю (конечно, это делается позже) и вернуть этот новый список рассеяния обратно в ядро. (Это для показателей производительности и т. Д.) Я пробовал искать в Интернете документацию, чтобы использовать список рассылок и т. Д., Но безрезультатно. Что я обычно делаю:Список рассыпных сборок в драйвере драйвера ядра Linux
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);
Есть хорошая документация, чтобы помочь мне карту мой scatterlist в виртуальный буфер? Я пытался смотреть на http://lwn.net/Articles/256368/ http://www.linuxjournal.com/article/7104 т.д.
Любая помощь или указатели будут оценены!