我最近开始使用系统编程,想知道iterate_dir是如何工作的。
我写了一些东西,我不知道为什么我会得到错误。 我的代码在大约190k-210k的迭代中开始失败。
struct dir_context context2 = { actor2,0 }; for (i = 0; i < 1000000; i++) { file = filp_open("/",O_RDONLY,0); if (IS_ERR(file)) { printk(KERN_ALERT "ERR: %d",file); break; } if (iterate_dir(file,&context2)) { printk(KERN_ALERT "iterate_dir Failed"); break; } filp_close(file,0); }
这个错误总是一样的(ENFILE,File table overflow),但是我打开并closures了这个文件,而actor2什么都不做。 有时会打印vfs file-max limit xxx reached 。
static int actor2(struct dir_context *ctx,const char *name,int namlen,loff_t offset,u64 ino,unsigned int d_type) { return 0; }
或者,也许我必须closuresactor2内的文件(但没有filep?!)。
如何重新加载修改的内核模块
Linux内核构build:以非交互方式执行“make localmodconfig”
如何用QEMUdebuggingLinux内核模块?
如何find编译的内核模块的版本?
Android和内核模块
最好的linux发行版来做内核模块编程
警告构build使用导出符号的内核模块
如何写一个正在写入特定设备的杯栅格驱动程序
为什么我的内核模块中的探测function没有被调用?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。