mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-22 17:20:48 +08:00
score: Add _Thread_Set_name()
Add configuration option CONFIGURE_MAXIMUM_THREAD_NAME_SIZE. Update #2858.
This commit is contained in:
@@ -3199,6 +3199,10 @@ extern rtems_initialization_tasks_table Initialization_tasks[];
|
||||
CONFIGURE_HEAP_HANDLER_OVERHEAD \
|
||||
)
|
||||
|
||||
#ifndef CONFIGURE_MAXIMUM_THREAD_NAME_SIZE
|
||||
#define CONFIGURE_MAXIMUM_THREAD_NAME_SIZE 16
|
||||
#endif
|
||||
|
||||
#ifdef CONFIGURE_INIT
|
||||
typedef union {
|
||||
Scheduler_Node Base;
|
||||
@@ -3232,6 +3236,8 @@ extern rtems_initialization_tasks_table Initialization_tasks[];
|
||||
const size_t _Scheduler_Node_size = sizeof( Configuration_Scheduler_node );
|
||||
#endif
|
||||
|
||||
const size_t _Thread_Maximum_name_size = CONFIGURE_MAXIMUM_THREAD_NAME_SIZE;
|
||||
|
||||
typedef struct {
|
||||
Thread_Control Control;
|
||||
#if CONFIGURE_MAXIMUM_USER_EXTENSIONS > 0
|
||||
@@ -3242,6 +3248,9 @@ extern rtems_initialization_tasks_table Initialization_tasks[];
|
||||
#ifdef RTEMS_POSIX_API
|
||||
POSIX_API_Control API_POSIX;
|
||||
#endif
|
||||
#if CONFIGURE_MAXIMUM_THREAD_NAME_SIZE > 1
|
||||
char name[ CONFIGURE_MAXIMUM_THREAD_NAME_SIZE ];
|
||||
#endif
|
||||
#if !defined(RTEMS_SCHEDSIM) \
|
||||
&& defined(RTEMS_NEWLIB) \
|
||||
&& !defined(CONFIGURE_DISABLE_NEWLIB_REENTRANCY)
|
||||
@@ -3270,6 +3279,15 @@ extern rtems_initialization_tasks_table Initialization_tasks[];
|
||||
),
|
||||
offsetof( Configuration_Thread_control, Newlib )
|
||||
}
|
||||
#if CONFIGURE_MAXIMUM_THREAD_NAME_SIZE > 1
|
||||
, {
|
||||
offsetof(
|
||||
Configuration_Thread_control,
|
||||
Control.Join_queue.Queue.name
|
||||
),
|
||||
offsetof( Configuration_Thread_control, name )
|
||||
}
|
||||
#endif
|
||||
#ifdef RTEMS_POSIX_API
|
||||
, {
|
||||
offsetof(
|
||||
|
||||
@@ -115,6 +115,8 @@ typedef enum {
|
||||
STATUS_BUILD( STATUS_CLASSIC_OBJECT_WAS_DELETED, EINVAL ),
|
||||
STATUS_RESOURCE_IN_USE =
|
||||
STATUS_BUILD( STATUS_CLASSIC_RESOURCE_IN_USE, EBUSY ),
|
||||
STATUS_RESULT_TOO_LARGE =
|
||||
STATUS_BUILD( STATUS_CLASSIC_UNSATISFIED, ERANGE ),
|
||||
STATUS_SUCCESSFUL =
|
||||
STATUS_BUILD( STATUS_CLASSIC_SUCCESSFUL, 0 ),
|
||||
STATUS_TIMEOUT =
|
||||
|
||||
@@ -907,6 +907,14 @@ extern const size_t _Thread_Control_add_on_count;
|
||||
*/
|
||||
extern const size_t _Thread_Control_size;
|
||||
|
||||
/**
|
||||
* @brief Maximum size of a thread name in characters (including the
|
||||
* terminating '\0' character).
|
||||
*
|
||||
* This value is provided via <rtems/confdefs.h>.
|
||||
*/
|
||||
extern const size_t _Thread_Maximum_name_size;
|
||||
|
||||
/**@}*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -1951,6 +1951,11 @@ RTEMS_INLINE_ROUTINE void _Thread_Remove_timer_and_unblock(
|
||||
#endif
|
||||
}
|
||||
|
||||
Status_Control _Thread_Set_name(
|
||||
Thread_Control *the_thread,
|
||||
const char *name
|
||||
);
|
||||
|
||||
size_t _Thread_Get_name(
|
||||
const Thread_Control *the_thread,
|
||||
char *buffer,
|
||||
|
||||
@@ -14,6 +14,26 @@
|
||||
|
||||
#include <string.h>
|
||||
|
||||
Status_Control _Thread_Set_name(
|
||||
Thread_Control *the_thread,
|
||||
const char *name
|
||||
)
|
||||
{
|
||||
size_t length;
|
||||
|
||||
length = strlcpy(
|
||||
the_thread->Join_queue.Queue.name,
|
||||
name,
|
||||
_Thread_Maximum_name_size
|
||||
);
|
||||
|
||||
if ( length >= _Thread_Maximum_name_size ) {
|
||||
return STATUS_RESULT_TOO_LARGE;
|
||||
}
|
||||
|
||||
return STATUS_SUCCESSFUL;
|
||||
}
|
||||
|
||||
size_t _Thread_Get_name(
|
||||
const Thread_Control *the_thread,
|
||||
char *buffer,
|
||||
|
||||
Reference in New Issue
Block a user