1
0
mirror of https://github.com/lvgl/lvgl.git synced 2025-02-04 07:13:00 +08:00

fix(os): add support for thread names (#7579)

Signed-off-by: Cristian Stoica <cristianmarian.stoica@nxp.com>
This commit is contained in:
cristian-stoica 2025-01-15 08:31:05 +02:00 committed by GitHub
parent 9f4df225c8
commit b1728f85b3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 42 additions and 28 deletions

View File

@ -75,7 +75,7 @@ handle the supported draw tasks.
.. code-block:: c
#if LV_USE_PXP_DRAW_THREAD
lv_thread_init(&draw_pxp_unit->thread, LV_THREAD_PRIO_HIGH, _pxp_render_thread_cb, 2 * 1024, draw_pxp_unit);
lv_thread_init(&draw_pxp_unit->thread, "pxpdraw", LV_THREAD_PRIO_HIGH, _pxp_render_thread_cb, 2 * 1024, draw_pxp_unit);
#endif
If `LV_USE_PXP_DRAW_THREAD` is not defined, then no additional draw thread will be created
@ -274,7 +274,7 @@ handle the supported draw tasks.
.. code-block:: c
#if LV_USE_VGLITE_DRAW_THREAD
lv_thread_init(&draw_vglite_unit->thread, LV_THREAD_PRIO_HIGH, _vglite_render_thread_cb, 2 * 1024, draw_vglite_unit);
lv_thread_init(&draw_vglite_unit->thread, "vglitedraw", LV_THREAD_PRIO_HIGH, _vglite_render_thread_cb, 2 * 1024, draw_vglite_unit);
#endif
If `LV_USE_VGLITE_DRAW_THREAD` is not defined, then no additional draw thread will be created

View File

@ -36,10 +36,11 @@
* GLOBAL FUNCTIONS
**********************/
lv_result_t lv_thread_init(lv_thread_t * thread, lv_thread_prio_t prio, void (*callback)(void *), size_t stack_size,
lv_result_t lv_thread_init(lv_thread_t * thread, const char * const name, lv_thread_prio_t prio, void (*callback)(void *), size_t stack_size,
void * user_data)
{
LV_UNUSED(thread);
LV_UNUSED(name);
LV_UNUSED(callback);
LV_UNUSED(prio);
LV_UNUSED(stack_size);

View File

@ -51,7 +51,8 @@ void lv_example_osal(void)
LV_LOG_ERROR("Error initializing thread sync");
}
if(lv_thread_init(&increment_thread, LV_THREAD_PRIO_MID, increment_thread_entry, 2048, NULL) != LV_RESULT_OK) {
if(lv_thread_init(&increment_thread, "inc_th", LV_THREAD_PRIO_MID, increment_thread_entry, 2048,
NULL) != LV_RESULT_OK) {
LV_LOG_ERROR("Error initializing thread");
}
}

View File

@ -69,7 +69,8 @@ void lv_draw_dma2d_init(void)
#if LV_DRAW_DMA2D_ASYNC
g_unit = draw_dma2d_unit;
lv_result_t res = lv_thread_init(&draw_dma2d_unit->thread, LV_THREAD_PRIO_HIGH, thread_cb, 2 * 1024, draw_dma2d_unit);
lv_result_t res = lv_thread_init(&draw_dma2d_unit->thread, "dma2d", LV_THREAD_PRIO_HIGH, thread_cb, 2 * 1024,
draw_dma2d_unit);
LV_ASSERT(res == LV_RESULT_OK);
#endif

View File

@ -116,7 +116,7 @@ void lv_draw_nema_gfx_init(void)
#if LV_USE_OS
lv_thread_init(&draw_nema_gfx_unit->thread, LV_THREAD_PRIO_HIGH, nema_gfx_render_thread_cb, 2 * 1024,
lv_thread_init(&draw_nema_gfx_unit->thread, "nemagfx", LV_THREAD_PRIO_HIGH, nema_gfx_render_thread_cb, 2 * 1024,
draw_nema_gfx_unit);
#endif
}

View File

@ -95,7 +95,7 @@ void lv_draw_pxp_init(void)
draw_pxp_unit->base_unit.name = "NXP_PXP";
#if LV_USE_PXP_DRAW_THREAD
lv_thread_init(&draw_pxp_unit->thread, LV_THREAD_PRIO_HIGH, _pxp_render_thread_cb, 2 * 1024, draw_pxp_unit);
lv_thread_init(&draw_pxp_unit->thread, "pxpdraw", LV_THREAD_PRIO_HIGH, _pxp_render_thread_cb, 2 * 1024, draw_pxp_unit);
#endif
#endif /*LV_USE_DRAW_PXP*/
}

View File

@ -118,7 +118,8 @@ void lv_draw_vglite_init(void)
draw_vglite_unit->base_unit.name = "NXP_VGLITE";
#if LV_USE_VGLITE_DRAW_THREAD
lv_thread_init(&draw_vglite_unit->thread, LV_THREAD_PRIO_HIGH, _vglite_render_thread_cb, 2 * 1024, draw_vglite_unit);
lv_thread_init(&draw_vglite_unit->thread, "vglitedraw", LV_THREAD_PRIO_HIGHEST, _vglite_render_thread_cb, 2 * 1024,
draw_vglite_unit);
#endif
}

View File

@ -99,7 +99,8 @@ void lv_draw_dave2d_init(void)
lv_ll_init(&_ll_Dave2D_Tasks, 4);
#if LV_USE_OS
lv_thread_init(&draw_dave2d_unit->thread, LV_THREAD_PRIO_HIGH, _dave2d_render_thread_cb, 8 * 1024, draw_dave2d_unit);
lv_thread_init(&draw_dave2d_unit->thread, "dave2d", LV_THREAD_PRIO_HIGH, _dave2d_render_thread_cb, 8 * 1024,
draw_dave2d_unit);
#endif
}

View File

@ -85,7 +85,8 @@ void lv_draw_sw_init(void)
draw_sw_unit->base_unit.name = "SW";
#if LV_USE_OS
lv_thread_init(&draw_sw_unit->thread, LV_THREAD_PRIO_HIGH, render_thread_cb, LV_DRAW_THREAD_STACK_SIZE, draw_sw_unit);
lv_thread_init(&draw_sw_unit->thread, "swdraw", LV_THREAD_PRIO_HIGH, render_thread_cb, LV_DRAW_THREAD_STACK_SIZE,
draw_sw_unit);
#endif
}

View File

@ -42,9 +42,11 @@
* GLOBAL FUNCTIONS
**********************/
lv_result_t lv_thread_init(lv_thread_t * thread, lv_thread_prio_t prio, void (*callback)(void *), size_t stack_size,
lv_result_t lv_thread_init(lv_thread_t * thread, const char * const name, lv_thread_prio_t prio,
void (*callback)(void *), size_t stack_size,
void * user_data)
{
LV_UNUSED(name);
static const osPriority_t prio_map[] = {
[LV_THREAD_PRIO_LOWEST] = osPriorityLow,
[LV_THREAD_PRIO_LOW] = osPriorityBelowNormal,

View File

@ -26,9 +26,6 @@
*********************/
#define ulMAX_COUNT 10U
#ifndef pcTASK_NAME
#define pcTASK_NAME "lvglDraw"
#endif
#define globals LV_GLOBAL_DEFAULT()
@ -85,7 +82,8 @@ static void prvTestAndDecrement(lv_thread_sync_t * pxCond,
* GLOBAL FUNCTIONS
**********************/
lv_result_t lv_thread_init(lv_thread_t * pxThread, lv_thread_prio_t xSchedPriority,
lv_result_t lv_thread_init(lv_thread_t * pxThread, const char * const name,
lv_thread_prio_t xSchedPriority,
void (*pvStartRoutine)(void *), size_t usStackSize,
void * xAttr)
{
@ -94,7 +92,7 @@ lv_result_t lv_thread_init(lv_thread_t * pxThread, lv_thread_prio_t xSchedPriori
BaseType_t xTaskCreateStatus = xTaskCreate(
prvRunThread,
pcTASK_NAME,
name,
(configSTACK_DEPTH_TYPE)(usStackSize / sizeof(StackType_t)),
(void *)pxThread,
tskIDLE_PRIORITY + xSchedPriority,

View File

@ -37,7 +37,8 @@
* GLOBAL FUNCTIONS
**********************/
lv_result_t lv_thread_init(lv_thread_t * thread, lv_thread_prio_t prio, void (*callback)(void *), size_t stack_size,
lv_result_t lv_thread_init(lv_thread_t * thread, const char * const name, lv_thread_prio_t prio,
void (*callback)(void *), size_t stack_size,
void * user_data)
{
TASK_TEMPLATE_STRUCT task_template;
@ -47,7 +48,7 @@ lv_result_t lv_thread_init(lv_thread_t * thread, lv_thread_prio_t prio, void (*c
task_template.TASK_ADDRESS = (TASK_FPTR)callback;
task_template.TASK_STACKSIZE = stack_size;
task_template.TASK_PRIORITY = _sched_get_min_priority(0) - prio;
task_template.TASK_NAME = "lvglDraw";
task_template.TASK_NAME = name;
task_template.CREATION_PARAMETER = (uint32_t)user_data;
*thread = _task_create(0, 0, (uint32_t)&task_template);

View File

@ -70,13 +70,15 @@ typedef enum {
/**
* Create a new thread
* @param thread a variable in which the thread will be stored
* @param name the name of the thread
* @param prio priority of the thread
* @param callback function of the thread
* @param stack_size stack size in bytes
* @param user_data arbitrary data, will be available in the callback
* @return LV_RESULT_OK: success; LV_RESULT_INVALID: failure
*/
lv_result_t lv_thread_init(lv_thread_t * thread, lv_thread_prio_t prio, void (*callback)(void *), size_t stack_size,
lv_result_t lv_thread_init(lv_thread_t * thread, const char * const name,
lv_thread_prio_t prio, void (*callback)(void *), size_t stack_size,
void * user_data);
/**
@ -187,11 +189,11 @@ void lv_unlock(void);
* optimizations and avoid the call overhead of the OS API to ensure no performance penalty.
*/
static inline lv_result_t lv_thread_init(lv_thread_t * thread, lv_thread_prio_t prio, void (*callback)(void *),
size_t stack_size,
void * user_data)
static inline lv_result_t lv_thread_init(lv_thread_t * thread, const char * const name, lv_thread_prio_t prio,
void (*callback)(void *), size_t stack_size, void * user_data)
{
LV_UNUSED(thread);
LV_UNUSED(name);
LV_UNUSED(callback);
LV_UNUSED(prio);
LV_UNUSED(stack_size);

View File

@ -38,9 +38,11 @@ static void * generic_callback(void * user_data);
* GLOBAL FUNCTIONS
**********************/
lv_result_t lv_thread_init(lv_thread_t * thread, lv_thread_prio_t prio, void (*callback)(void *), size_t stack_size,
lv_result_t lv_thread_init(lv_thread_t * thread, const char * const name, lv_thread_prio_t prio,
void (*callback)(void *), size_t stack_size,
void * user_data)
{
LV_UNUSED(name);
LV_UNUSED(prio);
pthread_attr_t attr;
pthread_attr_init(&attr);

View File

@ -38,10 +38,11 @@
* GLOBAL FUNCTIONS
**********************/
lv_result_t lv_thread_init(lv_thread_t * thread, lv_thread_prio_t prio, void (*callback)(void *), size_t stack_size,
lv_result_t lv_thread_init(lv_thread_t * thread, const char * const name, lv_thread_prio_t prio,
void (*callback)(void *), size_t stack_size,
void * user_data)
{
thread->thread = rt_thread_create("thread",
thread->thread = rt_thread_create(name,
callback,
user_data,
stack_size,

View File

@ -38,13 +38,13 @@ static int generic_callback(void * user_data);
* GLOBAL FUNCTIONS
**********************/
lv_result_t lv_thread_init(lv_thread_t * thread, lv_thread_prio_t prio, void (*callback)(void *), size_t stack_size,
void * user_data)
lv_result_t lv_thread_init(lv_thread_t * thread, const char * const name, lv_thread_prio_t prio,
void (*callback)(void *), size_t stack_size, void * user_data)
{
LV_UNUSED(prio);
thread->callback = callback;
thread->user_data = user_data;
thread->thread = SDL_CreateThreadWithStackSize(generic_callback, "LVGL", stack_size, thread);
thread->thread = SDL_CreateThreadWithStackSize(generic_callback, name, stack_size, thread);
if(thread->thread == NULL) {
LV_LOG_ERROR("Error: %s", SDL_GetError());
return LV_RESULT_INVALID;

View File

@ -46,11 +46,13 @@ static unsigned __stdcall thread_start_routine(void * parameter);
lv_result_t lv_thread_init(
lv_thread_t * thread,
const char * const name,
lv_thread_prio_t prio,
void (*callback)(void *),
size_t stack_size,
void * user_data)
{
LV_UNUSED(name);
if(!thread) {
return LV_RESULT_INVALID;
}