forked from kofal.net/zmk
refactor: use low priority workqueue for underglow and battery reporting
Blocking operations on the high priority system workqueue may result in deadlocks, particularly when Bluetooth is in use.
This commit is contained in:
committed by
Pete Johanson
parent
f743d57ff1
commit
9a963abfc8
27
app/src/workqueue.c
Normal file
27
app/src/workqueue.c
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright (c) 2023 The ZMK Contributors
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#include <zephyr/kernel.h>
|
||||
#include <zephyr/device.h>
|
||||
|
||||
#include <zmk/workqueue.h>
|
||||
|
||||
K_THREAD_STACK_DEFINE(lowprio_q_stack, CONFIG_ZMK_LOW_PRIORITY_THREAD_STACK_SIZE);
|
||||
|
||||
static struct k_work_q lowprio_work_q;
|
||||
|
||||
struct k_work_q *zmk_workqueue_lowprio_work_q() {
|
||||
return &lowprio_work_q;
|
||||
}
|
||||
|
||||
static int workqueue_init() {
|
||||
static const struct k_work_queue_config queue_config = {.name = "Low Priority Work Queue"};
|
||||
k_work_queue_start(&lowprio_work_q, lowprio_q_stack, K_THREAD_STACK_SIZEOF(lowprio_q_stack),
|
||||
CONFIG_ZMK_LOW_PRIORITY_THREAD_PRIORITY, &queue_config);
|
||||
return 0;
|
||||
}
|
||||
|
||||
SYS_INIT(workqueue_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
|
||||
Reference in New Issue
Block a user