如何遍历linux内核中的文件地址空间的页面缓存树(基数树)
发布时间:2020-11-18 07:48:55 所属栏目:Linux 来源:互联网
导读:我需要获取打开文件的页面缓存统计信息.文件结构中有一个address_space指针(f_mapping),它又具有名为page_tree的基数树的根.我需要遍历该树以获取有关该打开文件的所有缓存页面的信息. 有一些函数,如radix_tree_for_each_chunk(迭代块),radix_tree_for_each_c
我需要获取打开文件的页面缓存统计信息.文件结构中有一个address_space指针(f_mapping),它又具有名为page_tree的基数树的根.我需要遍历该树以获取有关该打开文件的所有缓存页面的信息. 有一些函数,如radix_tree_for_each_chunk(迭代块),radix_tree_for_each_chunk_slot(迭代一个块中的插槽)等,使用这些功能可以实现.我不确定它的正确用法(参数).如果发布任何示例,将会很有帮助. 解决方法我从 Linux内核源代码中找到了它.struct file *file = filp_open("filename",O_RDONLY,0); struct address_space *file_addr_space = file->f_mapping; if(file_addr_space==NULL){ printk("error") } struct radix_tree_root file_page_tree_root = file_addr_space->page_tree; //contains all pages in page cache struct radix_tree_iter iter; void **slot; int num_dirty = 0; radix_tree_for_each_slot(slot,&file_page_tree_root,&iter,0){ struct page *page = radix_tree_deref_slot(slot); if(page!=NULL){ //printk("information about page"); } } (编辑:阜阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux 获取指定文件行数、文件字节数、文件字数
- linux 管道--转
- linux – [01000] [unixodBC] [Driver Manager]无法打开lib
- linux – 如何从多个文件中提取一列,并将这些列粘贴到一个文
- linux – 为什么clock_gettime(CLOCK_REALTIME,..)的调用延
- c – Visual Studio交叉编译到Linux
- linux – 如何在特定列中grep值小于0.2的行?
- linux – Systemd – 在ExecStopPost中检测服务是否退出而没
- 如何在Linux上安装Haskell Debian Wheezy?
- 是否可以让cmake构建文件(CMakeLists.txt)不在CLion的root中
推荐文章
站长推荐
- linux-kernel – 有人可以帮我替换块设备驱动程序
- linux – 如果有两个矩阵a和b,那么(b)在matlab中
- linux – DBus.ObjectManager.GetManagedObjects
- linux内核 – 在kmalloc标志中GFP的含义是什么?
- 如何在“system”命令中包含字符串变量(char *)
- linux – Ubuntu / Mint上的PhpStorm更新
- 命令行 – 在root文件拥有该文件后,有效用户ID不
- 我怎么知道我是在运行32位还是64位Linux?
- 如何在linux mint下的zsh中设置virtualenvwrappe
- linux – GCC处理不同优化级别的浮点数比较
热点阅读