发布时间:2015-01-07 11:50:23
在文件成功打开之后,进程将使用内核提供的read和write系统调用,来读取或修改文件的数据。内核中文件读写操作的系统调用实现基本都一样,下面我们看看文件的读取。 /*sys_read()*/ SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count) { struct file *file; ssiz.........【阅读全文】
发布时间:2015-01-07 11:27:35
在文件读写之前,我们必须先打开文件。从应用程序的角度来看,这是通过标准库的open函数完成的,该函数返回一个文件描述符。内核中是由系统调用sys_open()函数完成。 /*sys_open*/ SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, int, mode) { long ret; /*检查是否应.........【阅读全文】
发布时间:2015-01-07 11:26:08
Linux中卸载文件系统由umount系统调用实现,入口函数为sys_umount()。较于文件系统的安装较为简单,下面是具体的实现。 /*sys_umont系统调用*/ SYSCALL_DEFINE2(umount, char __user *, name, int, flags) { struct path path; int retval; /*找到装载点的vfsmount........【阅读全文】
发布时间:2015-01-07 11:24:38
对于前面的根目录文件系统的安装中涉及到了mount系统调用的调用,这里我们考虑一个文件系统将被安装在一个已经安装文件系统之上的情形,即调用mount系统调用实现。mount系统调用被用来安装一个普通文件系统,他的服务例程为sys_mount()。 /*sys_mount系统调用*/ /*dev_name为待安装设备的路径名; dir_name为安装点的路径名......【阅读全文】
发布时间:2015-01-07 11:23:16
前面对linux虚拟文件系统的架构以及设计到的数据结构有了一个整体的认识,这里看看linux内核怎么根据给定的文件路径名在内存中找到和建立代表着目标文件或目录的dentry结构和inode结构。文件路径的搜索是文件系统中最基本也是最重要的一部分之一,后面我们会看到,文件的打开、关闭等等操作都将涉及到文件路径的搜索。下面我们看看linux内核中时怎么实现的。 一、搜索中所用数据结构 /*这个数据........【阅读全文】