linux 文件系统 api,文件系统 – Linux内核API may_umount_tree

may_umount_tree函数在Linux内核中用于检查vfsmount结构体及其子结构是否忙碌。如果存在打开的文件、pwd或子vfsmount,返回0表示忙碌,否则返回1。在测试实例中,通过当前进程的vfsmount结构体调用该函数,返回0,表明结构体正忙,因为进程仍在运行。
摘要由CSDN通过智能技术生成

may_umount_tree()函数的功能是检查文件装载树中的mnt结构体以及该结构体的子vfsmount结构体是否处于忙的状态。如果在文件装载树上有打开的文件、pwd结构体或者子vfsmount结构体,则表示其处于“忙”状态。

may_umount_tree文件包含

#include

may_umount_tree函数定义

在内核源码中的位置:linux-3.19.3/fs/namespace.c

函数定义格式:

int may_umount_tree(struct vfsmount *mnt)

may_umount_tree输入参数说明

mnt:要被检查的vfsmount结构体,其定义及详细说明参考本教程中__mnt_is_readonly()函数的参数说明部分。

may_umount_tree返回参数说明

may_umount_tree()函数的返回值为0或者1,若返回0,则表示该vfsmount结构体正忙;若返回1,则表示该vfsmount结构体不忙。

may_umount_tree实例解析

编写测试文件:may_umount_tree.c

头文件声明如下:

#include

#include

#include

#include

#include

#include

#include

#include

#include

MODULE_LICENSE("GPL");

模块初始化函数:

int may_umount_tree_init(void)

{

struct vfsmount *mnt;

mnt = current->fs->pwd.mnt; //获取当前文件的vfsmount结构体

// 检查文件装载树mnt是否处于忙状态

int data1 = may_umount_tree(mnt);

printk("After \"may_umount_tree\", the returned value is :%d\n", data1);

// 显示函数调用结果

return 0;

}

模块退出函数:

void may_umount_tree_exit(void)

{

printk("Goodbye may_umount_tree\n");

}

模块初始化及退出函数调用:

module_init(may_umount_tree_init);

module_exit(may_umount_tree_exit);

实例运行结果及分析:

首先编译模块,执行命令insmod may_umount_tree.ko插入模块,然后执行命令dmesg-c,会出现如图所示的结果。

4d57c9f11e0359226cd4cc73a66fc0a3.png

结果分析:

将当前文件的vfsmount结构体当做参数传入may_umount_tree()函数中,获得的测试结果为0,表示该vfsmount结构体正忙。由于当前进程正在进行中,处于“忙”状态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值