Android内核printk()和clock_gettime(CLOCK_BOOTTIME)时间反转60ms

问题描述 投票:0回答:1

我需要测量鼠标 HID 事件的 Android 内核和框架处理时间。

  • USB 鼠标设备端,我使用 Arduino Micro 和 HID 鼠标示例。 它每 10 毫秒发送一次 HID 事件。
  • Linux 内核,我把 prink() 放在 hid-core.c 中的 hid_irq_in()、hid_input_report()
  • Android框架,我添加logcat InputReader::process 上的clock_gettime(CLOCK_BOOTTIME)。
  • Android 示例应用程序,我把 View.OnTouchListener 上的 Log.d() elapsedRealtimeNanos()

问题:App端onTouchListner时间比内核hid_irq_in()早60ms。内核IRQ应该在onTouchListener之前1-2ms。

我不知道为什么时间会倒转。如果我使用不准确的方式来获取时间,请告诉我。

android linux-kernel printk
1个回答
0
投票

“dmesg”添加 printk() 消息的时间戳。但该时间与用户空间中的clock_gettime(CLOCK_BOOTTIME)不同步。

我需要在内核代码中调用 ktime_get_boottime() 然后调用 printk() 。该时间与用户态中的clock_gettime(CLOCK_BOOTTIME) 同步。

通过这个测量,我发现在内核和框架中处理鼠标左键单击事件需要 3ms。

© www.soinside.com 2019 - 2024. All rights reserved.