ILD

data structures in vfs
2025-1-12
Inodes - indexing files and directories存储文件和和目录的节点信息。定义在include/linux/fs.h。重点关注文件系统操作相关的成员,文件的属性,只列了一个i_uid。struct inode { kuid_t

strace print payload as hexdecimal format
2025-1-13
使用-x选项,比如:$ strace -s 1000 -x -e getxattr,setxattr setfacl -m g:user1:rwx sbgetxattr("sb", "system.posix_acl_access", "\x02\x00\x00\x00\x01\x00\x07\x0

printf non null terminated string
2025-1-14
打印一段字符,这段字符没有0结尾,但是知道长度,如何实现呢:printf("%.8s", str)或者len = 8;printf("%.*s", len, str);前者是常量形式,后者可以是变量。https://stackoverflow.com/questions/2239519/is-the

generic netlink kernel module development
2025-2-5
本文分析了5.15内核的genl代码。genl的内核文件主要有:include/net/genetlink.hnet/netlink/genetlink.c1 注册genl family首先得定义一个struct genl_family类型的全局变量。然后调用 int genl_register_f

--disable-nls
2025-2-7
编译util-linux的时候报错了:et.po: warning: Charset "ISO-8859-15" is not supported. msgfmt relies on iconv(), and iconv() does not support "ISO-

get hard disk serial number
2025-2-7
在nas设备上,使用lsblk发现serial为空:# lsblk --json -o NAME,MODEL,SERIAL /dev/sda{ "blockdevices": [ { "name": "sda", "model": "WDC WD40EF

libfuse splice support
2025-2-12
libfuse支持splice,来实现文件读写时,fuse内核模块和fuse server的零拷贝支持。只有读写涉及到大缓存,才需要零拷贝。其它的消息如unlink等,显然不需要splice。fuse还支持passthrough,passthrough模式和splice不一样。passthrough

fuse direct io mode
2025-2-12
使用fuse实现一个控制接口文件,先写入命令,然后读取结果。读取的时候发现一直返回0。控制命令如下:fd = open(NAS_MNT "/album/control", O_RDWR);write(fd, "reload\n", 7);lseek(fd, 0, SEEK_SET);ret = re

kernel mount related data struct
2025-2-12
学习vfs,可以先从挂载点入手,了解mount相关数据结构。代码分析我们查看mount通常是cat /proc/self/mounts。所以先从这块相关的代码开始。内核版本是6.12.1======================================fs/proc/base.c有一个条目

fs related systemcall
2025-2-16
文件操作系统调用文件操作相关的系统调用,都在在内核源码的fs目录下的.c文件中。可以搜索一下$ grep -nr SYSCALL_DEFINE fs/*.c整理如下:fs/aio.cio_setup()io_destroy()io_submit()io_cancel()io_getevents()i

Copyright © linuxdev.cc 2017-2024. Some Rights Reserved.