[英]How to know/change buffer size in fuse readdir function?
我正在為Linux中的FUSE文件系統編寫readdir
函數。 我的想法是在緩沖區中放置任意數量的目錄條目,以在列出目錄時避免來自外部程序的getdents
syscalls調用(避免為每個文件調用)。
該函數的buffer參數由FUSE提供,並指向保險絲類型為fuse_fill_dir_t
的filler
輔助函數的指針,該函數知道如何處理該緩沖區。
問題是我不知道如何獲取或更改此緩沖區的大小,並且當緩沖區已滿時, filler
函數將返回1 。
請注意,我正在使用偏移量來調用filler
函數,而使用0則不是一個選擇,因為我不想只在一個getdents
調用中返回所有目錄項。
filler(buf, d->d_name, NULL, next_offset);
測試會為緩沖區拋出102個固定的最大條目數,但是我不想依靠“不可思議”的數字,而且我也不知道該數字來自何處。
根據getdents()
手冊頁 ,緩沖區由調用應用程序提供:
getdents()
The system call getdents() reads several linux_dirent structures from the directory referred to by the open file descriptor fd into the buffer pointed to by dirp. The argument count specifies the size of that buffer.
因此, getdents()
系統調用的數量getdents()
執行調用的應用程序確定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.