devfs,也叫设备文件系统(DeviceFilesystem),设计它的唯一目的就是提供一种更理性的方式管理位于/dev的所有块设备和字符设备。典型的/dev树包含数百个块特殊文件和字符特殊文件,它们全都在根文件系统上。每个特殊文件都可以让用户空间进程轻松地与内核设备实现交互。这种文件管理方式,相对linux2.4之前的操作系统,是一种革新。它具有以下优势: l 可以通过程序在设备初始化时在/dev目录下创建设备文件,卸载设备时将它删除。 l 设备驱动程序可以指定设备名、所有者和权限位,用户空间程序仍可以修改所有者和权限位。 l 不再需要为设备驱动程序分配主次设备号,在程序中可以通过register_chrdev()和devfs_register()函数自动分配主次设备号。 驱动程序可通过下面的函数来进行设备文件的创建和删除工作: - /*创建设备目录*/
- devfs_handle_t devfs_mk_dir(devfs_ handle_t dir, const char *name, void *info);
- /*创建设备文件*/
- devfs_handle_t devfs_register(devfs_handle_t dir, const char *name,unsigned int flags, unsigned int major, unsigned int minor, umode_t mode, void *ops, void *info);
- /*撤销设备文件*/
- void devfs_unregister(devfs_handle_ t de);
复制代码 通常会在模块加载和卸载函数中创建和撤销设备文件,在下一章节我们将会以LED驱动为例,讲解devfs设备文件系统的编写。
|