/dev和/sys/class文件的区别
时间: 2023-08-09 22:08:40 浏览: 72
/dev和/sys/class是Linux操作系统中的两个特殊目,用于访问设备和设备类的信息。
/dev目录包含了系统中的设备文件设备文件是与硬件备或其他内核模块进行通信的口。例如,硬盘、键盘、鼠标设备都可以在/dev目录中找到对应的设备文件。读写这些设备,用户程序可以与设备进行交互。
/sys/class目录则提供了一种以类别方式组织设备的方法。每个设备类别都在/sys/class目录下有一个对应的子目录。例如,/sys/class/net目录包含了系统中所有的网络接口设备(如eth0、wlan0等)的信息,/sys/class/block目录包含了系统中所有块设备(如硬盘、光驱等)的信息。通过在这些子目录中的文件中读取或写入数据,可以获取或配置设备的相关信息。
总结起来,/dev目录提供了对设备文件的直接访问,而/sys/class目录则提供了一种以类别方式组织设备信息的方法。
相关问题
led驱动哪行代码会生成 /sys/class/leds/sys-led/trigger文件
LED驱动会在内核初始化时执行probe函数来进行设备的初始化,其中会调用led_classdev_register函数来注册字符设备,生成/sys/class/leds目录,并在该目录下创建trigger文件。具体来说,生成/sys/class/leds/sys-led/trigger文件的代码如下:
```c
static int led_sysfs_register(struct led_classdev *led_cdev,
struct device *parent,
const char *name)
{
struct device *dev;
int err;
dev = device_create_with_groups(led_class, parent, 0, led_cdev,
led_groups, name);
if (IS_ERR(dev)) {
err = PTR_ERR(dev);
dev_err(parent, "Failed to create LED class device: %d\n", err);
return err;
}
return 0;
}
```
其中led_class是/sys/class/leds目录的class,led_groups是/sys/class/leds/sys-led目录下的文件属性组。在这个函数中,调用了device_create_with_groups函数来创建/sys/class/leds/sys-led目录,并在该目录下创建了trigger文件。
如何创建/dev/sdb
/dev/sdb是系统自动分配给硬盘的设备名称,你不能手动创建/dev/sdb。如果你想要使用一个新的硬盘,你需要将它插入到计算机中,并确保硬盘被正确识别。通常情况下,Linux系统会自动识别新硬盘并为其分配设备名称。如果你的系统没有自动识别新硬盘,你可以尝试重新启动计算机或者使用以下命令强制重新扫描新硬盘:
```
echo "- - -" > /sys/class/scsi_host/hostX/scan
```
其中,X是你的主机控制器的编号,通常是0、1、2等。你可以使用ls /sys/class/scsi_host/命令来查看主机控制器的编号。执行以上命令后,你可以使用fdisk命令或者lsblk命令来查看新硬盘的设备名称。