- 博客(64)
- 问答 (1)
- 收藏
- 关注
原创 VFS:8.fd管理-fs/file.c源码阅读
源码基于4.19。之前因为工作需要,把fs/file.c的源码通读了一遍,拿出来与大家分享。file.c里主要是关于fd, fdtable的管理。读懂这个文件里的代码,对理解进程里关于文件的管理有很大的帮助。
2024-06-04 23:55:42
556
1
原创 内存管理:2. slub-create
slub的创建从kmem_cache_create->kmem_cache_create_usercopy都是一样的,从__kmem_cache_create开始区分。__kmem_cache_create的主要调用了kmem_cache_open来创建应的slab.计算一个slab对应page的oder,一个slab里存储对象的数量等。slub的创建,相对于slab来说要简单的多。
2023-03-12 23:05:56
246
原创 解决 水星(Mercury)UD6S-V1.0-Linux20210616驱动在5.15内核报错
解决 水星(Mercury)UD6S-V1.0-Linux20210616驱动在5.15内核报错
2023-01-07 19:31:49
1260
原创 Kernel源码笔记之文件系统:2. fuse——挂载
初始化函数里,主要创建了fuse_fs_context对象,每个挂载的上下文对象。在挂载fusefs的时候,必须要传fd, rootmod, user_id, group_id,这4个参数。然后就根据是否有设备,调用不同的vfs函数,核心工作都在fuse_fill_super里。在fuse_fill_super主要流程:下面是参数解析的相关代码:fuse_conn_init在fuse_conn_init设置了已连接状态和fiq->ops,这个ops默认是fuse_dev_operations,处理
2022-07-01 17:09:07
1052
原创 Kernel源码笔记之系统调用:1. splice
splice系统调用,把一个文件描述符的数据移到到另一个文件描述符里,其中至少有一个得是pipe。
2022-06-28 12:28:11
633
原创 Kernel源码笔记之VFS:7.写文件
写文件写文件的系统调用,以及前面几个函数和读文件差不多,我们直接从generic_perform_write开始看ssize_t generic_perform_write(struct file *file, struct iov_iter *i, loff_t pos){ struct address_space *mapping = file->f_mapping; const struct address_space_operations *a_ops = mapping-&
2022-03-30 08:49:27
510
原创 Kernel源码笔记之VFS:6.读文件
读文件源码基于stable-5.10.102/*fd: 文件描述符buf: 缓冲区count: 要读入的数量要读取的位置在file的f_pos里*/SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count){ return ksys_read(fd, buf, count);}ssize_t ksys_read(unsigned int fd, char __user *buf, size_
2022-03-30 08:45:18
782
原创 内核调试之kprobe
trace-kprobe简介在调试内核的时候要跟踪函数有没有执行或者返回值等等,kprobe可以实现这些,用代码写的kprobe模块还可以修改返回值。这篇主要介绍kprobe在trace下的使用。本文以 do_filp_open 函数为例,来看一下kprobe在trace里的基本使用,do_filp_open代码如下:struct file *do_filp_open(int dfd, struct filename *pathname, const struct open_flags *op)
2022-03-22 17:58:18
2003
原创 Kernel源码笔记之VFS:2.遍历路径
遍历路径遍历路径是一个很常用的操作,通过阅读遍历路径的代码可以把dentry,inode, vfsmnt这些数据结构联系起来,可以对文件系统做一个全面的了解。源码基于stable-5.10.108遍历路径的代码有好几种,原理大概都差不多,这里先path_lookupat。// 在遍历路径是保存遍历过程中的数据及结果struct nameidata { // 保存遍历过程中最后结点的dentry和vfsmount struct path path; // 最后结点的文件名? st
2022-03-15 17:16:30
1654
空空如也
shell脚本里能不能获取errno
2021-08-31
TA创建的收藏夹 TA关注的收藏夹
TA关注的人