subsys_initcall(input_init) /* 在kernel启动时候加载,进入input_init函数*/
static int __init input_init(void) /* input系统的入口函数*/
/*input_init分析之第1部分*/
1、err = class_register(&input_class); /*注册class类*/
__class_register(class, &__key);
/*__class_register主要包含以下部分*/
struct subsys_private *cp = kzalloc(sizeof(*cp), GFP_KERNEL);/*分配内存;subsys_private结构体用于描述系统中所有的设备集合 的合集,现在是用来描述sys/devices/目录下的设备*/
error = kset_register(&cp->subsys);/*注册kset,kset用于描述subsys和kobject之间的桥梁*/
......... /*构造需要创建的cls类结构体参数*/
error = add_class_attrs(class_get(cls));/*创建class类*/
/*input_init分析之第2部分*/
err = input_proc_init(); /*创建proc信息;主要包含下面三个部分*/
proc_bus_input_dir = proc_mkdir("bus/input", NULL); /*proc_bus_input_dir proc目录结构体指针,创建proc/bus/input目录 */
entry =
Linux input子系统框架分析
最新推荐文章于 2022-09-24 15:51:42 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)