1、 驱动描述
struct device_driver {
const char *name;
struct bus_type *bus;
struct module
*owner;
const char
*mod_name;
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);
struct attribute_group **groups;
struct dev_pm_ops *pm;
struct driver_private *p;
}
2、 驱动注册/注册
3、 驱动属性
struct driver_attribute {
struct attribute attr;
ssize_t (*show)(struct device_driver *drv,
char *buf);
ssize_t (*store)(struct device_driver *drv,
const char *buf, size_t count);
}
4、 实例分析
#include <linux/device.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/string.h>
MODULE_AUTHOR("David Xie");
MODULE_LICENSE("Dual BSD/GPL");
extern struct bus_type my_bus_type;
static int my_probe(struct device *dev)
{
}
static int my_remove(struct device *dev)
{
}
struct device_driver my_driver = {
};
static ssize_t mydriver_show(struct device_driver *driver, char *buf)
{
}
static DRIVER_ATTR(drv, S_IRUGO, mydriver_show, NULL);
static int __init my_driver_init(void)
{
}
static void my_driver_exit(void)
{
}
module_init(my_driver_init);
module_exit(my_driver_exit);
5、 试验结果