Linux驱动attribute

本文详细介绍了 Linux 中的设备模型,包括 device 和 driver 的概念及其与总线的关系。此外,还探讨了 udev 如何根据内核发送的 uevent 动态创建和删除设备文件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

device_driver 和 device分别表示驱动和设备,而这两者都必须依赖于一种总线,因此都包含
struct bus_type指针,总线,这杯和驱动都会被落实为sysfs中的一个目录,总线,设备和驱动中的
attribute则直接落实为sysfs中的1个文件,
attribute,bus_attribute,driver_attribute和device_attribute.
struct attribute{
const char *name;
umode_t mode;
#ifdef CONFIG_DEBUG_LOCK_ALLOC
bool ignore_lockdep:1;
struct lock_class_key *key;
struct lock_class_key skey;
#endif
};

struct bus_attribute{
struct attribute attr;
ssize_t(* show)(struct bus_type *bus,cchar *buf);
ssize_t(* store)(struct bus_type *bus,const char *buf,size_t count);
}
struct driver_attribute{
struct attribute attr;
ssize_t (*show)(struct device_driver *driver,char *buf);
ssize_t (*store)(struct device_driver *driver,const char *buf,size_t count);
};
struct device_attribute{
struct attribute attr;
sszie_t (* show)(struct device *dev,struct device_attribute *attr, char *buf);
ssize_t (* store)(strucT device *dev,struct device_attribute *attr,const char *buf,size_t count);
};

udev的组成
udev目前和systmed项目合并在一起,udev在用户空间中执行,动态建立、删除设备文件。
udev的工作过程如下
当内核检测到系统中出现新设备后,内核会通过netlink套接字发送uevent。
udev获取内核发送的信息,进行规则的匹配,匹配的事物包括:
SUBSYSTEM
ACTION
attribute
内个提供的名称
其他的环境变量。
udev规则文件以行为单位,每一行代表一个规则,一个规则分成一个或者多个的匹配部分
和赋值部分,分别用相应的关键字来表示,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值