Linux内核如何知道将输入事件写入哪个文件描述符?

时间:2019-02-09 20:27:13

标签: c linux linux-kernel operating-system kernel

我想知道Linux内核知道向哪个文件描述符(例如/ dev / input / eventX)写入输入的机制。例如,我知道当用户单击鼠标时,会发生中断,该中断由驱动程序处理,并通过input_event(drivers / input / input.c)传播到Linux输入核心,最终被写入适当的文件中。在/ dev / input /中。具体来说,我想知道我需要检查哪些源文件,以基于有关输入事件的信息来了解内核如何知道要写入哪个文件。我的目标是看在内核将它们写入/ dev / input / eventX字符文件之前,是否可以确定与特定输入事件代码相对应的文件描述符。

1 个答案:

答案 0 :(得分:0)

您可能需要检查两个文件: 驱动程序/输入/输入 驱动程序/输入/evdev.c 在evdev.c中,evdev_init()将调用input_register_handler()来初始化input_handler_list。

然后在输入设备驱动程序中,初始化input_dev后,它将调用:    input_register_device(input_dev)      ->获取设备kobj路径,例如/devices/soc/78ba000.i2c/i2c-6/6-0038/input/input2      ->输入_attach_handler()      ->处理程序->连接(handler,dev,id);      -> evdev_connect()

在evdev_connect()中,它将执行以下操作:    1.动态地为新的evdev分配一个次要的。    2. dev_set_name(&evdev-> dev,“ event%d”,dev_no);    3.调用input_register_handle()来连接input_dev和evdev-> handle。    4.创建一个cdev,并调用device_add()。

此后,您将找到输入节点/ dev / input / eventX,X是dev_no的值。