当前位置: 技术问答>linux和unix
关于设备文件系统
来源: 互联网 发布时间:2015-06-10
本文导语: 在usb_skeleton.c里有这样一段代码: sprintf(name, "skel%d", dev->minor); dev->devfs = devfs_register (usb_devfs_handle, name, DEVFS_FL_DEFAULT, USB_MAJOR, USB_SKEL_MINOR_BASE + dev->minor, S_IFCHR | S_IRUSR | S_IWUSR | ...
在usb_skeleton.c里有这样一段代码:
sprintf(name, "skel%d", dev->minor);
dev->devfs = devfs_register (usb_devfs_handle, name,
DEVFS_FL_DEFAULT, USB_MAJOR,
USB_SKEL_MINOR_BASE + dev->minor,
S_IFCHR | S_IRUSR | S_IWUSR |
S_IRGRP | S_IWGRP | S_IROTH,
&skel_fops, NULL);
在这段代码里是不是在设备文件系统增加了一个节点"skel200"(假设dev->minor的值是200)?我怎样才能打开这个文件?他的全名是什么?麻烦熟悉devfs的大哥给小弟详细讲解,不胜感激!!
sprintf(name, "skel%d", dev->minor);
dev->devfs = devfs_register (usb_devfs_handle, name,
DEVFS_FL_DEFAULT, USB_MAJOR,
USB_SKEL_MINOR_BASE + dev->minor,
S_IFCHR | S_IRUSR | S_IWUSR |
S_IRGRP | S_IWGRP | S_IROTH,
&skel_fops, NULL);
在这段代码里是不是在设备文件系统增加了一个节点"skel200"(假设dev->minor的值是200)?我怎样才能打开这个文件?他的全名是什么?麻烦熟悉devfs的大哥给小弟详细讲解,不胜感激!!
|
因为Linux原来的设备实际上都在dev目录下,是平坦而非树行结构,所谓平坦是指在dev下面就没有子目录了,所有设备文件都并列在dev目录下。随着设备的增多,这种情况已经不合适了,所以引入devfs,用于管理树行的设备文件系统。其创建就通过devfs_register来完成
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)
其中的第一个参数dir为该设备文件的目录,如果指定为null,则是/dev/目录,第二个就是设备的名字了。其他的不说了。
而如你程序创建的实际上就是在/dev/usb/目录下,完成名称为"/dev/usb/skel200"
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)
其中的第一个参数dir为该设备文件的目录,如果指定为null,则是/dev/目录,第二个就是设备的名字了。其他的不说了。
而如你程序创建的实际上就是在/dev/usb/目录下,完成名称为"/dev/usb/skel200"