input子系统的搭建要点:
核心层为事件驱动层和设备驱动层的注册提供API的实现、核心层为设备驱动层上报事件提供API的实现 、事件驱动层为应用层提供API的实现 。(1)核心层:提供事件驱动层和设备驱动层所需的函数接口(为input dev和input handler建立联)
drivers/input/input.c:
##主要接口函数一览:##
①为事件驱动层提供的:
注册API:
int input_register_handler(struct input_handler *handler);②为设备驱动层提供的:
void input_unregister_handler(struct input_handler *handler);
注册API:
struct input_dev *input_allocate_device(void);设备驱动要用到的上报输入事件函数API:
void input_free_device(struct input_dev *dev);
int input_register_device(struct input_dev *dev);
void input_unregister_device(struct input_dev *dev);
void input_event(struct input_dev *dev,unsigned int type, unsigned int code, int value);//下面是这个函数的特殊定义##上面这些接口函数的实现过程几乎就是input子系统的框架搭建过程:##
static inline void input_report_key(struct input_dev *dev, unsigned int code, int value);
static inline void input_report_rel(struct input_dev *dev, unsigned int code, int value);
static inline void input_report_abs(struct input_dev *dev, unsigned int code, int value);
①先来分析input_register