Я работаю над модулем ядра Linux, который требует от меня проверки данных непосредственно перед записью на локальный диск. Данные, которые нужно записать, извлекаются с удаленного диска. Поэтому я знаю, что данные из выборки хранятся в кеше страницы. Я также знаю, что Linux имеет структуру данных, которая управляет блочными вводами-выводами в полете, называемыми биоструктурой.Доступ к данным буфера из bio struct в Linux
Биоструктура содержит список структур, называемых bio_vecs.
struct bio_vec {
/* pointer to the physical page on which this buffer resides */
struct page *bv_page;
/* the length in bytes of this buffer */
unsigned int bv_len;
/* the byte offset within the page where the buffer resides */
unsigned int bv_offset;
};
У этого есть список из них, поскольку представление блока в памяти не может быть физически смежным. То, что я хочу сделать, это захватить каждую часть буфера, используя список bio_vecs, и собрать их вместе, чтобы я мог взять хэш MD5 блока. Как использовать указатель на страницу, длину буфера и его смещение, чтобы получить необработанные данные в буфере? Существуют ли уже функции для этого или я должен написать свои собственные?
ли вы посмотреть на LWN? Есть хорошая статья, которая появляется в поиске Google ... http://lwn.net/Articles/26404/ – granquet
Вы смогли найти информацию об этом? – aminfar