#include <linux/init.h>
#include <linux/module.h>
#include "simple.h"
// 在虛擬總線simple bus上邊添加一個設備,並添加其驅動
int probe (struct simple_device *dev)
{
printk(KERN_ALERT "simple_device probe.\n");
return 0;
}
// simple bus上的設備
struct simple_device device =
{
.name = "simpledev",
.class_id = {.class_id = 0x10},
};
struct simple_class_id class_id[] =
{
{.class_id = 0x10},
{.class_id = SIMPLE_CLASS_END}
};
// simple bus上設備的驅動
struct simple_driver driver = {
.name = "simpledrv",
.classes = class_id,
.probe = probe,
};
static int __init simple_init(void)
{
int ret = 0;
//向總線註冊設備
if ((ret = simple_register_device(&device)))
{
printk(KERN_ALERT "simple_register_device failed.\n");
goto err_reg_dev;
}
//向總線註冊驅動
if ((ret = simple_register_driver(&driver)))
{
printk(KERN_ALERT "simple_register_driver failed.\n");
goto err_reg_drv;
}
return ret;
err_reg_drv:
simple_unregister_device(&device);
err_reg_dev:
return ret;
}
static void __exit simple_exit(void)
{
simple_unregister_driver(&driver);
simple_unregister_device(&device);
}
module_init(simple_init);
module_exit(simple_exit);
MODULE_LICENSE("GPL");
Linux驅動3_總線設備(二)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.