seq_file
僅爲閱讀文件提供助手。沒有類似的助手可供編寫,但手動執行.write
可迭代數據回調並不困難:
與閱讀不同,您可以放棄.write回調中的文件位置處理,假設用戶始終寫入開始,或者可選地結束(使用O_APPEND文件的控制標誌)。第二,與閱讀不同,你可以假設用戶一次寫入1,2或更多元素的內容,但不是半元素。
最簡單的方法是允許單一的元素來寫:
size_t write(struct file* file, const char __user* buf, size_t size, loff_t* pos)
{
copy_from_user(str, buf, size); // Copy string from user space
my_elem = my_parse(str, size); // Parse string
if(file->f_flags & O_APPEND) {
list_add_tail(my_elem, &my_list);//Append element to the end of list
}
else {
clear_my_list(); // Clear old content of the list
list_add_tail(my_elem, &my_list);// Add single element to it.
}
(void)pos; //Do not use file position at all
return count; // Return number of bytes passed by the user
}
如果用戶想要寫一些元素,例如,從硬盤上的文件,任何外殼能夠通過,例如,這個文件拆分,新行,以及一行一行地將您的proc文件添加到Feed中。