[input] Linux 输入子系统(二)

来源:互联网 发布:知乎电力系统仿真书籍 编辑:程序博客网 时间:2024/06/05 10:12

注册一个INPUT设备

hwm_obj->idev = input_allocate_device(); //申请input_dev结构if (!hwm_obj->idev){err = -ENOMEM;HWM_ERR("unable to allocate input device!\n");goto exit_alloc_input_dev_failed;}set_bit(EV_REL, hwm_obj->idev->evbit);set_bit(EV_SYN, hwm_obj->idev->evbit);input_set_capability(hwm_obj->idev, EV_REL, EVENT_TYPE_SENSOR);  //记录本设备对于哪些事件感兴趣(对其进行处理)hwm_obj->idev->name = HWM_INPUTDEV_NAME;if((err = input_register_device(hwm_obj->idev)))  //注册输入设备,并和对应的handler处理函数挂钩{HWM_ERR("unable to register input device!\n");goto exit_input_register_device_failed;}input_set_drvdata(hwm_obj->idev, hwm_obj);hwm_obj->mdev.minor = MISC_DYNAMIC_MINOR;hwm_obj->mdev.name  = HWM_SENSOR_DEV_NAME;hwm_obj->mdev.fops  = &hwmsen_fops;if((err = misc_register(&hwm_obj->mdev))){HWM_ERR("unable to register sensor device!!\n");goto exit_misc_register_failed;}dev_set_drvdata(hwm_obj->mdev.this_device, hwm_obj);if(hwmsen_create_attr(hwm_obj->mdev.this_device) != 0){HWM_ERR("unable to create attributes!!\n");goto exit_hwmsen_create_attr_failed;}

这里调用了input_register_device()函数注册输入设备结构体,input_register_device()函数原型:

                 int input_register_device(struct input_dev *dev)  

input_register_device()函数是输入子系统核心(input core)提供的函数。该函数将input_dev结构体注册到输入子系统核心中,input_dev结构体必须由前面讲的input_allocate_device()函数来分配。input_register_device()函数如果注册失败,必须调用input_free_device()函数释放分配的空间。如果该函数注册成功,在卸载函数中应该调用input_unregister_device()函数来注销输入设备结构体。


相关内容:

 [input] linux输入子系统(一)

原创粉丝点击