Linux---driver驱动理论详解
作者:网络转载 发布时间:[ 2013/12/27 10:31:21 ] 推荐标签:操作系统 Linux
驱动程序的描述结构体
struct device_driver {
const char *name;/*驱动程序的名称*/
struct bus_type *bus;/*驱动程序所在的总线*/
struct module *owner;
const char *mod_name; /* used for built-in modules */
bool suppress_bind_attrs; /* disables bind/unbind via sysfs */
#if defined(CONFIG_OF)
const struct of_device_id *of_match_table;
#endif
int (*probe) (struct device *dev);/*驱动处理函数*/
int (*remove) (struct device *dev);
void (*shutdown) (struct device *dev);
int (*suspend) (struct device *dev, pm_message_t state);
int (*resume) (struct device *dev);
const struct attribute_group **groups;
const struct dev_pm_ops *pm;
struct driver_private *p;
};
设备驱动注册
driver_register(struct device_driver *drv);
设备驱动注销
driver_unregister(struct device_driver *drv);
驱动属性描述结构体
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);//写入的时候 调用的函数
};
但是属性文件的创建都是使用下面的这个宏来创建
#define DRIVER_ATTR(_name, _mode, _show, _store)////////注意参数的意义:
struct driver_attribute driver_attr_##_name = //根据 宏的第一个参数 来创建名为driver_attr_name的属性文件
__ATTR(_name, _mode, _show, _store)//
创建属性文件的函数
driver_create_file(struct device_driver *driver,const struct driver_attribute *attr);//注意参数 第一个是 自己的定义驱动结构体,第二个是驱动属性文件
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11