Linux中继学习–按键驱动(使用中断方式)
/* 执行"insmod mini2440_buttons.ko"命令时就会调用这个函数*/
static int __init mini2440_buttons_init (void)
{
int ret;
/*这里主要是注册设备驱动程序,参数为主设备号,如果BUTTON_MAJOR设为0,表示由内核自动分配主设备号,设备的名字,file_operations结构,操作主调和号为BUTTON_MAJOR的设备文件时,就会调用mini2440_buttons_fops中的相关成员函数*/
ret = register_chrdev(BUTTON_MAJOR,DEVICE_NAME,&mini2440_buttons_fops);
if(ret < 0)
{
printk(DEVICE_NAME "can't register major number\n");
return ret ;
}
printk(DEVICE_NAME"initialized\n");
return 0;
}
/* 执行 rmmod mini2440_buttons.ko0 命令时就会调用这个函数 */
static void __exit mini2440_buttons_exit(void)
{//卸载驱动程序
unregister_chrdev(BUTTON_MAJOR,DEVICE_NAME)