[include][src] Add API to get object name and thread name (#7507)

Signed-off-by: Fan YANG <fan.yang@hpmicro.com>
Co-authored-by: Man, Jianting (Meco) <920369182@qq.com>
This commit is contained in:
Fan Yang 2023-05-17 17:40:18 +08:00 committed by GitHub
parent 065a3e1b3a
commit 48557de148
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 45 additions and 0 deletions

View File

@ -60,6 +60,7 @@ void rt_object_delete(rt_object_t object);
rt_bool_t rt_object_is_systemobject(rt_object_t object); rt_bool_t rt_object_is_systemobject(rt_object_t object);
rt_uint8_t rt_object_get_type(rt_object_t object); rt_uint8_t rt_object_get_type(rt_object_t object);
rt_object_t rt_object_find(const char *name, rt_uint8_t type); rt_object_t rt_object_find(const char *name, rt_uint8_t type);
rt_err_t rt_object_get_name(rt_object_t object, char *name, rt_uint8_t name_size);
#ifdef RT_USING_HEAP #ifdef RT_USING_HEAP
/* custom object */ /* custom object */
@ -169,6 +170,8 @@ void rt_thread_wakeup_set(struct rt_thread *thread, rt_wakeup_func_t func, void*
#endif #endif
void rt_thread_timeout(void *parameter); void rt_thread_timeout(void *parameter);
rt_err_t rt_thread_get_name(rt_thread_t thread, char *name, rt_uint8_t name_size);
#ifdef RT_USING_SIGNALS #ifdef RT_USING_SIGNALS
void rt_thread_alloc_sig(rt_thread_t tid); void rt_thread_alloc_sig(rt_thread_t tid);
void rt_thread_free_sig(rt_thread_t tid); void rt_thread_free_sig(rt_thread_t tid);

View File

@ -635,6 +635,30 @@ rt_object_t rt_object_find(const char *name, rt_uint8_t type)
return RT_NULL; return RT_NULL;
} }
/**
* @brief This function will return the name of the specified object container
*
* @param object the specified object to be get name
* @param name buffer to store the object name string
* @param name_size maximum size of the buffer to store object name
*
* @return -RT_EINVAL if any parameter is invalid or RT_EOK if the operation is successfully executed
*
* @note this function shall not be invoked in interrupt status
*/
rt_err_t rt_object_get_name(rt_object_t object, char *name, rt_uint8_t name_size)
{
rt_err_t result = -RT_EINVAL;
if ((object != RT_NULL) && (name != RT_NULL) && (name_size != 0U))
{
const char *obj_name = object->name;
(void) rt_strncpy(name, obj_name, (rt_size_t)name_size);
result = RT_EOK;
}
return result;
}
#ifdef RT_USING_HEAP #ifdef RT_USING_HEAP
/** /**
* This function will create a custom object * This function will create a custom object

View File

@ -1142,4 +1142,22 @@ rt_thread_t rt_thread_find(char *name)
RTM_EXPORT(rt_thread_find); RTM_EXPORT(rt_thread_find);
/**
* @brief This function will return the name of the specified thread
*
* @note Please don't invoke this function in interrupt status
*
* @param thread the thread to retrieve thread name
* @param name buffer to store the thread name string
* @param name_size maximum size of the buffer to store the thread name
*
* @return If the return value is RT_EOK, the function is successfully executed
* If the return value is -RT_EINVAL, it means this operation failed
*/
rt_err_t rt_thread_get_name(rt_thread_t thread, char *name, rt_uint8_t name_size)
{
return (thread == RT_NULL) ? -RT_EINVAL : rt_object_get_name(&thread->parent, name, name_size);
}
RTM_EXPORT(rt_thread_get_name);
/**@}*/ /**@}*/