实现资源注册:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/platform_device.h>
#include <mach/devices.h> //PAD_GPIO_A
static struct resource key_resource[] = {
[0] = {
.start = PAD_GPIO_A + 28,
.end = PAD_GPIO_A + 28,
.flags = IORESOURCE_MEM
},
};
static struct platform_device key_plat_device = {
.name = "key",
.num_resources = ARRAY_SIZE(key_resource),
.resource = key_resource,
};
/*模块加载函数*/
int __init demo_module_init (void) {
printk(KERN_WARNING "demo_module_init is running\n");
//注册资源
platform_device_register(&key_plat_device);
return 0;
}
/*模块卸载函数*/
void __exit demo_module_exit (void) {
printk("<4>" "demo_module_exit is running\n");
//注销资源
platform_device_unregister(&key_plat_device);
}
/*声明模块加载函数宏*/
module_init(demo_module_init);
/*声明模块卸载函数宏*/
module_exit(demo_module_exit);
/*声明模块作者*/
MODULE_AUTHOR("qf.net");
/*模块许可证明,描述内核模块的许可权限*/
MODULE_LICENSE("GPL");