소스 검색

[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>
Fan Yang 2 년 전
부모
커밋
48557de148
3개의 변경된 파일45개의 추가작업 그리고 0개의 파일을 삭제
  1. 3 0
      include/rtthread.h
  2. 24 0
      src/object.c
  3. 18 0
      src/thread.c

+ 3 - 0
include/rtthread.h

@@ -60,6 +60,7 @@ void rt_object_delete(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_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
 /* custom object */
@@ -169,6 +170,8 @@ void rt_thread_wakeup_set(struct rt_thread *thread, rt_wakeup_func_t func, void*
 #endif
 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
 void rt_thread_alloc_sig(rt_thread_t tid);
 void rt_thread_free_sig(rt_thread_t tid);

+ 24 - 0
src/object.c

@@ -635,6 +635,30 @@ rt_object_t rt_object_find(const char *name, rt_uint8_t type)
     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
 /**
  * This function will create a custom object

+ 18 - 0
src/thread.c

@@ -1142,4 +1142,22 @@ rt_thread_t rt_thread_find(char *name)
 
 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);
+
 /**@}*/