//my_bus_drv.c#include<linux/module.h>#include<linux/init.h>#include<linux/kernel.h>#include<linux/kobject.h>#include<linux/slab.h>#include<linux/sysfs.h>#include<linux/device.h>#include"my_bus_drv.h"#if0intdriver_register(structdevice_driver*drv)structdevice_driver{constchar*name;structbus_type*bus;structmodule*owner;constchar*mod_name;/* used for built-in modules */bool suppress_bind_attrs;/* disables bind/unbind via sysfs */enumprobe_type probe_type;conststructof_device_id*of_match_table;conststructacpi_device_id*acpi_match_table;int(*probe)(structdevice*dev);int(*remove)(structdevice*dev);void(*shutdown)(structdevice*dev);int(*suspend)(structdevice*dev,pm_message_t state);int(*resume)(structdevice*dev);conststructattribute_group**groups;conststructdev_pm_ops*pm;structdriver_private*p;};#endifexternstructbus_type my_bus;structdevice_driver my_bus_drv ={.name ="my_bus_dev",.bus =&my_bus,.remove = my_bus_drv_remove,.probe = my_bus_drv_probe,};staticintmy_bus_drv_probe(structdevice*dev){printk("this is in my_bus_dev_probe\n");return0;}staticintmy_bus_drv_remove(structdevice*dev){printk("this is in my_bus_dev_remove\n");return0;}staticintmy_bus_drv_init(void){int ret;ret =driver_register(&my_bus_drv);return ret;}staticvoidmy_bus_drv_exit(void){driver_unregister(&my_bus_drv);}module_init(my_bus_drv_init);module_exit(my_bus_drv_exit);MODULE_LICENSE("GPL");