@@ -29,12 +29,7 @@ typedef struct {
2929
3030typedef struct {
3131 TaskHandle_t task ;
32- } THREAD_HANDLE_T ;
33-
34- typedef struct {
35- THREAD_FUNC_T entry ;
36- void * arg ;
37- } THREAD_ENTRY_CTX_T ;
32+ } RAM_THREAD_HANDLE_T ;
3833
3934#define PSRAM_THREAD_MAGIC 0x5053524DU
4035
@@ -71,27 +66,9 @@ static TaskHandle_t __tkl_thread_get_task_handle(const TKL_THREAD_HANDLE thread)
7166 return psram_handle -> task ;
7267 }
7368
74- return ((THREAD_HANDLE_T * )thread )-> task ;
69+ return ((RAM_THREAD_HANDLE_T * )thread )-> task ;
7570}
7671
77- static void __tkl_thread_entry (void * arg )
78- {
79- THREAD_ENTRY_CTX_T * ctx = (THREAD_ENTRY_CTX_T * )arg ;
80- THREAD_FUNC_T entry = NULL ;
81- void * entry_arg = NULL ;
82-
83- if (ctx != NULL ) {
84- entry = ctx -> entry ;
85- entry_arg = ctx -> arg ;
86- free (ctx );
87- }
88-
89- if (entry != NULL ) {
90- entry (entry_arg );
91- }
92-
93- vTaskDelete (NULL );
94- }
9572// --- END: user defines and implements ---
9673
9774/**
@@ -116,31 +93,20 @@ OPERATE_RET tkl_thread_create(TKL_THREAD_HANDLE* thread,
11693 void * const arg )
11794{
11895 // --- BEGIN: user implements ---
119- THREAD_HANDLE_T * handle = NULL ;
120- THREAD_ENTRY_CTX_T * entry_ctx = NULL ;
96+ RAM_THREAD_HANDLE_T * handle = NULL ;
12197
12298 if ((thread == NULL ) || (func == NULL )) {
12399 return OPRT_INVALID_PARM ;
124100 }
125101
126- handle = (THREAD_HANDLE_T * )malloc (sizeof (THREAD_HANDLE_T ));
102+ handle = (RAM_THREAD_HANDLE_T * )malloc (sizeof (RAM_THREAD_HANDLE_T ));
127103 if (handle == NULL ) {
128104 return OPRT_MALLOC_FAILED ;
129105 }
130106
131- entry_ctx = (THREAD_ENTRY_CTX_T * )malloc (sizeof (THREAD_ENTRY_CTX_T ));
132- if (entry_ctx == NULL ) {
133- free (handle );
134- return OPRT_MALLOC_FAILED ;
135- }
136-
137- entry_ctx -> entry = func ;
138- entry_ctx -> arg = arg ;
139-
140107 stack_size = __tkl_thread_adjust_stack_size (stack_size );
141108
142- if (xTaskCreate (__tkl_thread_entry , name , stack_size / sizeof (portSTACK_TYPE ), (void * const )entry_ctx , priority , & handle -> task ) != pdPASS ) {
143- free (entry_ctx );
109+ if (xTaskCreate (func , name , stack_size / sizeof (portSTACK_TYPE ), arg , priority , & handle -> task ) != pdPASS ) {
144110 free (handle );
145111 return OPRT_OS_ADAPTER_THRD_CREAT_FAILED ;
146112 }
@@ -163,7 +129,7 @@ OPERATE_RET tkl_thread_release(const TKL_THREAD_HANDLE thread)
163129{
164130 // --- BEGIN: user implements ---
165131 PSRAM_THREAD_HANDLE_T * psram_handle = __tkl_thread_get_psram_handle (thread );
166- THREAD_HANDLE_T * handle = (THREAD_HANDLE_T * )thread ;
132+ RAM_THREAD_HANDLE_T * handle = (RAM_THREAD_HANDLE_T * )thread ;
167133
168134 if (psram_handle != NULL ) {
169135 vTaskDelete (psram_handle -> task );
@@ -226,13 +192,13 @@ OPERATE_RET tkl_thread_get_watermark(const TKL_THREAD_HANDLE thread, uint32_t* w
226192OPERATE_RET tkl_thread_get_id (TKL_THREAD_HANDLE * thread )
227193{
228194 // --- BEGIN: user implements ---
229- THREAD_HANDLE_T * handle = NULL ;
195+ RAM_THREAD_HANDLE_T * handle = NULL ;
230196
231197 if (thread == NULL ) {
232198 return OPRT_INVALID_PARM ;
233199 }
234200
235- handle = (THREAD_HANDLE_T * )malloc (sizeof (THREAD_HANDLE_T ));
201+ handle = (RAM_THREAD_HANDLE_T * )malloc (sizeof (RAM_THREAD_HANDLE_T ));
236202 if (handle == NULL ) {
237203 return OPRT_MALLOC_FAILED ;
238204 }
@@ -400,7 +366,6 @@ OPERATE_RET tkl_thread_create_in_psram(TKL_THREAD_HANDLE* thread,
400366 uint32_t adjusted_stack_size = __tkl_thread_adjust_stack_size (stack_size );
401367 uint32_t stack_depth = adjusted_stack_size / sizeof (StackType_t );
402368 PSRAM_THREAD_HANDLE_T * handle = NULL ;
403- THREAD_ENTRY_CTX_T * entry_ctx = NULL ;
404369
405370 if (stack_depth == 0 ) {
406371 return OPRT_INVALID_PARM ;
@@ -411,48 +376,27 @@ OPERATE_RET tkl_thread_create_in_psram(TKL_THREAD_HANDLE* thread,
411376 return OPRT_MALLOC_FAILED ;
412377 }
413378
414- entry_ctx = (THREAD_ENTRY_CTX_T * )malloc (sizeof (THREAD_ENTRY_CTX_T ));
415- if (entry_ctx == NULL ) {
416- free (handle );
417- return OPRT_MALLOC_FAILED ;
418- }
419-
420- entry_ctx -> entry = func ;
421- entry_ctx -> arg = arg ;
422-
423379 handle -> stack_buffer = (StackType_t * )heap_caps_malloc (stack_depth * sizeof (StackType_t ), MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT );
424380 if (handle -> stack_buffer == NULL ) {
425- free (entry_ctx );
426381 free (handle );
427382 return OPRT_MALLOC_FAILED ;
428383 }
429384
430385 handle -> task_buffer = (StaticTask_t * )malloc (sizeof (StaticTask_t ));
431386 if (handle -> task_buffer == NULL ) {
432387 free (handle -> stack_buffer );
433- free (entry_ctx );
434388 free (handle );
435389 return OPRT_MALLOC_FAILED ;
436390 }
437391
438- handle -> task = xTaskCreateStatic (__tkl_thread_entry , name , stack_depth , ( void * const ) entry_ctx , priority , handle -> stack_buffer ,
392+ handle -> task = xTaskCreateStatic (func , name , stack_depth , arg , priority , handle -> stack_buffer ,
439393 handle -> task_buffer );
440394 if (handle -> task == NULL ) {
441395 free (handle -> task_buffer );
442396 free (handle -> stack_buffer );
443- free (entry_ctx );
444397 free (handle );
445398 return OPRT_OS_ADAPTER_THRD_CREAT_FAILED ;
446399 }
447- printf ("create in psram success\n" );
448- printf ("handle->task: %p\n" , handle -> task );
449- printf ("handle->stack_buffer: %p\n" , handle -> stack_buffer );
450- printf ("handle->task_buffer: %p\n" , handle -> task_buffer );
451- printf ("entry_ctx: %p\n" , entry_ctx );
452- printf ("handle: %p\n" , handle );
453- printf ("name: %s\n" , name );
454- printf ("stack_size: %lu\n" , stack_size );
455- printf ("priority: %lu\n" , priority );
456400
457401 handle -> magic = PSRAM_THREAD_MAGIC ;
458402 * thread = (TKL_THREAD_HANDLE )handle ;
0 commit comments