Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1e1859e authored by Ugo Yu's avatar Ugo Yu
Browse files

Rename and reset the proirity of HID host thread

* Rename the HH event polling thread to bt_hh_thread
* HH event polling thread is created by bt_main_thread
  with RT priority. Lower the thread priority since the
  tasks in this thread is not timing critical

Bug: 131787936
Test: Connect to a HID device
      Run "adb shell ps -A -T -Z -O rtprio"
Change-Id: Ibd983e96bc339393842d4c2e2aa226534095e225
parent 456aec0f
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -43,6 +43,8 @@ const char* dev_path = "/dev/uhid";
static tBTA_HH_RPT_CACHE_ENTRY sReportCache[BTA_HH_NV_LOAD_MAX];
#endif
#define GET_RPT_RSP_OFFSET 9
#define THREAD_NORMAL_PRIORITY 0
#define BT_HH_THREAD "bt_hh_thread"

void uhid_set_non_blocking(int fd) {
  int opts = fcntl(fd, F_GETFL);
@@ -208,6 +210,17 @@ static void* btif_hh_poll_event_thread(void* arg) {
  APPL_TRACE_DEBUG("%s: Thread created fd = %d", __func__, p_dev->fd);
  struct pollfd pfds[1];

  // This thread is created by bt_main_thread with RT priority. Lower the thread
  // priority here since the tasks in this thread is not timing critical.
  struct sched_param sched_params;
  sched_params.sched_priority = THREAD_NORMAL_PRIORITY;
  if (sched_setscheduler(gettid(), SCHED_OTHER, &sched_params)) {
    APPL_TRACE_ERROR("%s: Failed to set thread priority to normal", __func__);
    p_dev->hh_poll_thread_id = -1;
    return 0;
  }
  pthread_setname_np(pthread_self(), BT_HH_THREAD);

  pfds[0].fd = p_dev->fd;
  pfds[0].events = POLLIN;