- 参考: http://blog.csdn.net/gxfan/article/details/3079766
- http://bbs.chinaunix.net/thread-4103398-1-1.html
- 在linux内核中,每一种注册了的文件系统都由一个类型为file_system_type的结构体来代表,该结构体中含有一个类型为file_system_type*的域next,linux正是通过这个next域把所有注册了的文件系统连接起来的,同时,linux内核还定义了一个指向链表中第一个元素的全局指针file_systems和一个用来用来防止并发访问该链表的读/写自旋锁file_systems_lock。
- //查找file_systems中指定name的文件系统类型是否存在,若在,则返回指针,否则返回file_systems末尾的next指针
- static struct file_system_type **find_filesystem(const char *name, unsigned len)
- {
- struct file_system_type **p;
- for (p=&file_systems; *p; p=&(*p)->next)
- if (strlen((*p)->name) == len &&
- strncmp((*p)->name, name, len) == 0)
- break;
- return p;
- }
-
- /**
- * register_filesystem - register a new filesystem
- * @fs: the file system structure
Linux 文件系统注册register_filesystem与注销unregister_filesystem源码详解
最新推荐文章于 2024-07-16 16:44:21 发布
本文详细解析了Linux内核中注册和注销文件系统的实现。通过file_system_type结构体,内核维护了一个文件系统链表,并使用read/write自旋锁file_systems_lock保护。register_filesystem函数会检查文件系统名的唯一性并添加到链表中,而unregister_filesystem则从链表中移除已注册的文件系统。这两个函数是Linux系统管理文件系统的关键操作。
摘要由CSDN通过智能技术生成