logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

linux内核之chdir分析

今天我们看一些在linux系统里边经常使用的cd命令对应的内核实现,就是sys_chdir函数的实现。sys_chdir函数在fs/open.c里,定义如下asmlinkage long sys_chdir(const char __user * filename){/*路径名查找函数*/struct nameidata nd;int error;/*之前我们分析过,根据

#文件系统#linux#c语言
linux内核file结构

linux内核中file结构体并不是物理上存在于硬盘上的,而是用于描述进程与文件的关系和操作的。每当进程打开一个文件的时候,linux内核就会建立一个file结构体,而task_struct里的指向file的链表就会添加一个已经打开的文件。文件定义在include/linux/fs.h,定义如下,为了方便观看,直接在代码里以注释格式解析。。struct file {/** fu_

linux内核container_of宏解析

在看linux内核的源代码的时候,经常会看到一个宏,就是container_of,它的作用是由一个结构体的成员指针得到这个结构体的指针。看的多了,就想搞明白这是怎么个东西,打开source insight一看,这个宏定义在include/linux/kernel.h这个头文件里边,打开一看,定义如下/*** container_of - cast a member of a structu

#c语言
linux内核setuid分析

最近在看linux内核文件系统的代码,发现有关权限管理的代码好多,最近索性一次性解决,一劳永逸。我们先看一个我们在用户空间经常使用的一个setuid函数,这个函数就是变更当前进程的uid,对应的内核函数首先是sys_setuid,这个函数定义在kernel/sys.c,定义如下asmlinkage long sys_setuid(uid_t uid){/*保存以前的euid,就是有效

#文件系统
linux内核list解析

在linux内核里又有一个非常重要的数据结构,他就是双向循环链表list,定义在linux/list.h,这个数据结构可以说是linux内核中使用最广泛的数据结构了,list的理解对于我们阅读和理解内核有重大的意义,接下来我们一起看一下list.h,看一下这个神奇的数据结构吧。首先看一下这个数据结构的定义struct list_head {struct list_head *next,

#数据结构
linux内核权限控制之vfs_permission分析

在linux文件系统的各种操作里,很重要的一个东西就是权限控制,我们来一起追溯内核源代码,弄清楚内核的权限之谜。在VFS(linux虚拟文件系统)里,权限控制都是通过vfs_permission来实现的,我们从vfs_permission来看,vfs_permission函数定义在fs/namei.c,定义如下int vfs_permission(struct nameidata *nd,

#文件系统
linux内核follow_link分析

在linux内核文件系统源代码里,有一个很重要的函数,就是do_follow_link函数,这个函数对应着用户空间的软链接文件的索引操作,有着很广泛的应用,我们今天来看一下他的来龙去脉。首先我们从vfs_follow_link函数看起,vfs_follow_link函数定义在fs/namei.c,定义如下int vfs_follow_link(struct nameidata *nd, c

#文件系统#linux
linux内核mount源代码剖析

mount命令是大家在平时使用linux的时候经常使用的一个命令,相信很多人都很熟悉这个命令,它的作用是把一个设备挂载到根文件系统的某一个目录上边去,但是有没有人对他的内部实现有过一些了解的呢,我今天就像从linux的源代码剖析,一层一层的剥开它实现的奥秘。首先mount是一个系统调用,在用户空间使用mount函数以后,会调用软中断,进入内核空间。然后根据传入的参数,调用对应的中端门,随后进入

#文件系统#linux
linux内核read操作源代码分析

read操作是任何操作系统里的基本操作,我们来看一下在linux内核里,read文件是怎样实现的。read函数在用户空间是由read系统调用实现的,由编译器编译成软中断int 0x80来进入内核空间,然后在中端门上进入函数sys_read,从而进入内核空间执行read操作。sys_read函数定义在fs/read_write.c文件,定义如下asmlinkage ssize_t sys

#文件系统#linux
linux内核umount源代码分析

之前我们讲过mount的内核源代码,今天我们来一起看一下umount系统调用的内核源代码实现吧。首先看sys_umount函数,定义在fs/namespace.c,定义如下asmlinkage long sys_umount(char __user * name, int flags){struct nameidata nd;int retval;/*之前讲过的,格局传入的路

#文件系统
    共 22 条
  • 1
  • 2
  • 3
  • 请选择