案例

阅读 32

07-27 21:00

实现资源注册:

#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");

精彩评论(0)

0 0 举报