【问题标题】:How does the Linux Kernel know which file descriptor to write input events to?Linux 内核如何知道将输入事件写入哪个文件描述符?
【发布时间】:2019-07-03 18:12:09
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

您可能会浏览两个文件: 驱动程序/输入/输入.c 驱动程序/输入/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 -> input_attach_handler() ->处理程序->连接(处理程序,开发,ID); -> evdev_connect()

在 evdev_connect() 中,它将执行以下操作: 1.为新的evdev动态分配一个minor。 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的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 2010-09-20
    相关资源
    最近更新 更多