由mount引入的相关Linux分析

本文介绍了Linux系统下的文件操作,包括sys_open函数的具体实现,解释了asmlinkage和__user宏的作用,并探讨了O_DIRECT参数的应用场景。此外,还讨论了异步poll读文件的方法及mount的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.文件操作,文件结构
http://www.ibm.com/developerworks/cn/linux/l-cn-read/


清单1 sys_open 函数代码
asmlinkage long sys_open(const char __user * filename, int flags, int mode)
{
 ……
 fd = get_unused_fd();
 if (fd >= 0) {
 struct file *f = filp_open(tmp, flags, mode);
 fd_install(fd, f);
 }
 ……
 return fd;
 ……
}

asmlinkage:asmlinkage大都用在系统调用中。有一些情况下是需要明确的告诉编译器,我们是使用stack来传递参数的,比如X86中的系统调用,是先将参数压入stack以后调用sys_*函数的,所以所有的sys_*函数都有asmlinkage来告诉编译器不要使用寄存器来编译。

__user:__user宏简单告诉编译器(通过 noderef)不应该解除这个指针的引用(因为在当前地址空间中它是没有意义的)。(void __user *)arg 指的是arg值是一个用户空间的地址,不能直接进行拷贝等,要使用例如copy_from_user,copy_to_user等函数。默认是内核空间,因为这是驱动,是在内核空间运行的,直接拷贝不了,因为一个是在用户空间,一个是在内核空间

 aio异步写文件:http://blog.chinaunix.net/uid-8566031-id-2018931.html

open参数O_DIRECT:

http://www.w2bc.com/Article/19913

二.异步poll读文件

http://blog.youkuaiyun.com/fansongy/article/details/6853395

三.mount原理


四.读写错误

http://lobert.iteye.com/blog/1705861













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值