lvgl: Flush thread can have preemptive priority

The LVGL flush thread was hard-coded to be cooperative.
For long-running actions like data transfer to the display,
this is problematic as it might block high-frequency actions like
USB or input events.

Hence, make it configurable to be preemptive, and rename it to match the
similar Kconfig values like CONFIG_SDL_THREAD_PRIORITY.

Signed-off-by: Martin Stumpf <finomnis@gmail.com>
This commit is contained in:
Martin Stumpf 2024-11-18 16:38:30 +01:00 committed by Anas Nashif
parent 0f1f01f9f4
commit 50509c34cc
3 changed files with 9 additions and 6 deletions

View file

@ -36,6 +36,10 @@ Trusted Firmware-M
LVGL
====
* The config option :kconfig:option:`CONFIG_LV_Z_FLUSH_THREAD_PRIO` is now called
:kconfig:option:`CONFIG_LV_Z_FLUSH_THREAD_PRIORITY` and its value is now interpreted as an
absolute priority instead of a cooperative one.
Device Drivers and Devicetree
*****************************

View file

@ -103,11 +103,11 @@ config LV_Z_FLUSH_THREAD_STACK_SIZE
help
Stack size for LVGL flush thread, which will call display_write
config LV_Z_FLUSH_THREAD_PRIO
config LV_Z_FLUSH_THREAD_PRIORITY
int "LVGL flush thread priority"
default 0
default -1
help
Cooperative priority of LVGL flush thread.
Priority of LVGL flush thread.
endif # LV_Z_FLUSH_THREAD

View file

@ -34,9 +34,8 @@ void lvgl_flush_thread_entry(void *arg1, void *arg2, void *arg3)
}
}
K_THREAD_DEFINE(lvgl_flush_thread, CONFIG_LV_Z_FLUSH_THREAD_STACK_SIZE,
lvgl_flush_thread_entry, NULL, NULL, NULL,
K_PRIO_COOP(CONFIG_LV_Z_FLUSH_THREAD_PRIO), 0, 0);
K_THREAD_DEFINE(lvgl_flush_thread, CONFIG_LV_Z_FLUSH_THREAD_STACK_SIZE, lvgl_flush_thread_entry,
NULL, NULL, NULL, CONFIG_LV_Z_FLUSH_THREAD_PRIORITY, 0, 0);
void lvgl_wait_cb(lv_disp_drv_t *disp_drv)