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规则文件以行为单位,每一行代表一个规则,一个规则分成一个或者多个的匹配部分
和赋值部分,分别用相应的关键字来表示,
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规则文件以行为单位,每一行代表一个规则,一个规则分成一个或者多个的匹配部分
和赋值部分,分别用相应的关键字来表示,