mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-21 10:36:04 +08:00
[kenel] add static name for rt_object (#6422)
增加静态object 名字,用户可以根据内存实际使用情况决定使用动态还是静态。适用于资源极度受限的情况下使用。该功能在RT-Thread完整版本中不常用,主要用于RT-Thread Nano,以缩减对内存的占用。由于没有动态拼接支持,在静态名字下,空闲线程的名字在多核时将命名成相同的名字。
This commit is contained in:
+2
-1
@@ -3,11 +3,12 @@ menu "RT-Thread Kernel"
|
||||
|
||||
config RT_NAME_MAX
|
||||
int "The maximal size of kernel object name"
|
||||
range 2 32
|
||||
range 0 64
|
||||
default 8
|
||||
help
|
||||
Each kernel object, such as thread, timer, semaphore etc, has a name,
|
||||
the RT_NAME_MAX is the maximal size of this object name.
|
||||
If RT_NAME_MAX sets as 0, the name will be const.
|
||||
|
||||
config RT_USING_ARCH_DATA_TYPE
|
||||
bool "Use the data types defined in ARCH_CPU"
|
||||
|
||||
+9
-1
@@ -306,13 +306,21 @@ static void rt_thread_system_entry(void *parameter)
|
||||
void rt_thread_idle_init(void)
|
||||
{
|
||||
rt_ubase_t i;
|
||||
#if RT_NAME_MAX > 0
|
||||
char idle_thread_name[RT_NAME_MAX];
|
||||
#endif /* RT_NAME_MAX > 0 */
|
||||
|
||||
for (i = 0; i < _CPUS_NR; i++)
|
||||
{
|
||||
rt_sprintf(idle_thread_name, "tidle%d", i);
|
||||
#if RT_NAME_MAX > 0
|
||||
rt_snprintf(idle_thread_name, RT_NAME_MAX, "tidle%d", i);
|
||||
#endif /* RT_NAME_MAX > 0 */
|
||||
rt_thread_init(&idle_thread[i],
|
||||
#if RT_NAME_MAX > 0
|
||||
idle_thread_name,
|
||||
#else
|
||||
"tidle",
|
||||
#endif /* RT_NAME_MAX > 0 */
|
||||
idle_thread_entry,
|
||||
RT_NULL,
|
||||
&idle_thread_stack[i][0],
|
||||
|
||||
+10
-4
@@ -387,8 +387,11 @@ void rt_object_init(struct rt_object *object,
|
||||
/* initialize object's parameters */
|
||||
/* set object type to static */
|
||||
object->type = type | RT_Object_Class_Static;
|
||||
/* copy name */
|
||||
rt_strncpy(object->name, name, RT_NAME_MAX);
|
||||
#if RT_NAME_MAX > 0
|
||||
rt_strncpy(object->name, name, RT_NAME_MAX); /* copy name */
|
||||
#else
|
||||
object->name = name;
|
||||
#endif /* RT_NAME_MAX > 0 */
|
||||
|
||||
RT_OBJECT_HOOK_CALL(rt_object_attach_hook, (object));
|
||||
|
||||
@@ -483,8 +486,11 @@ rt_object_t rt_object_allocate(enum rt_object_class_type type, const char *name)
|
||||
/* set object flag */
|
||||
object->flag = 0;
|
||||
|
||||
/* copy name */
|
||||
rt_strncpy(object->name, name, RT_NAME_MAX);
|
||||
#if RT_NAME_MAX > 0
|
||||
rt_strncpy(object->name, name, RT_NAME_MAX); /* copy name */
|
||||
#else
|
||||
object->name = name;
|
||||
#endif /* RT_NAME_MAX > 0 */
|
||||
|
||||
RT_OBJECT_HOOK_CALL(rt_object_attach_hook, (object));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user