From 80b8e87c96401553c909e3b4f534fbaac300b730 Mon Sep 17 00:00:00 2001 From: Arthur Ishiguro Date: Mon, 18 Sep 2023 17:42:07 +0000 Subject: [PATCH] Revert "Revert "Increase HidRawSensor thread priority to reduce latency"" This reverts commit 371bc828557989bf81e0eedd2a2907f810ea75f6. Reason for revert: CL not determined to be culprit of b/300512496 Change-Id: Idf0a692a8dec80f684e47e0be24cb158c10030fc --- .../sensors/dynamic_sensor/HidRawSensorDevice.cpp | 12 +++++++++++- modules/sensors/dynamic_sensor/HidRawSensorDevice.h | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/sensors/dynamic_sensor/HidRawSensorDevice.cpp b/modules/sensors/dynamic_sensor/HidRawSensorDevice.cpp index 8aa4cf92..5bc4abc2 100644 --- a/modules/sensors/dynamic_sensor/HidRawSensorDevice.cpp +++ b/modules/sensors/dynamic_sensor/HidRawSensorDevice.cpp @@ -35,6 +35,15 @@ using namespace Hid::Sensor::PropertyUsage; const std::unordered_set HidRawSensorDevice::sInterested{ ACCELEROMETER_3D, GYROMETER_3D, COMPASS_3D, CUSTOM}; +void HidRawSensorDevice::enableSchedFifoMode() { + constexpr int kHidRawSensorPriority = 10; // Matches with sensor service priority + struct sched_param param = {0}; + param.sched_priority = kHidRawSensorPriority; + if (sched_setscheduler(getTid(), SCHED_FIFO | SCHED_RESET_ON_FORK, ¶m) != 0) { + ALOGE("Couldn't set SCHED_FIFO for HidRawSensor thread: %s", strerror(errno)); + } +} + sp HidRawSensorDevice::create(const std::string &devName) { sp device(new HidRawSensorDevice(devName)); // offset +1 strong count added by constructor @@ -74,7 +83,8 @@ HidRawSensorDevice::HidRawSensorDevice(const std::string &devName) return; } - run("HidRawSensor"); + run("HidRawSensor", PRIORITY_URGENT_DISPLAY); + enableSchedFifoMode(); mValid = true; } diff --git a/modules/sensors/dynamic_sensor/HidRawSensorDevice.h b/modules/sensors/dynamic_sensor/HidRawSensorDevice.h index 06d435e7..7818bf16 100644 --- a/modules/sensors/dynamic_sensor/HidRawSensorDevice.h +++ b/modules/sensors/dynamic_sensor/HidRawSensorDevice.h @@ -41,6 +41,7 @@ private: // constructor will result in +1 strong count explicit HidRawSensorDevice(const std::string &devName); + void enableSchedFifoMode(); // implement function of Thread virtual bool threadLoop() override; std::unordered_map> mSensors;