Kaynağa Gözat

[finsh] feat: add finsh thread entry hook

Signed-off-by: Shell <smokewood@qq.com>
Shell 1 yıl önce
ebeveyn
işleme
22106bb8de
2 değiştirilmiş dosya ile 22 ekleme ve 0 silme
  1. 18 0
      components/finsh/shell.c
  2. 4 0
      components/finsh/shell.h

+ 18 - 0
components/finsh/shell.c

@@ -448,10 +448,28 @@ static void shell_push_history(struct finsh_shell *shell)
 }
 #endif
 
+#ifdef RT_USING_HOOK
+static void (*_finsh_thread_entry_hook)(void);
+
+/**
+ * @ingroup finsh
+ *
+ * @brief This function set a hook function at the entry of finsh thread
+ *
+ * @param hook the function point to be called
+ */
+void finsh_thread_entry_sethook(void (*hook)(void))
+{
+    _finsh_thread_entry_hook = hook;
+}
+#endif /* RT_USING_HOOK */
+
 static void finsh_thread_entry(void *parameter)
 {
     int ch;
 
+    RT_OBJECT_HOOK_CALL(_finsh_thread_entry_hook, ());
+
     /* normal is echo mode */
 #ifndef FINSH_ECHO_DISABLE_DEFAULT
     shell->echo_mode = 1;

+ 4 - 0
components/finsh/shell.h

@@ -102,4 +102,8 @@ void finsh_set_prompt_mode(rt_uint32_t prompt_mode);
     const char *finsh_get_password(void);
 #endif
 
+#ifdef RT_USING_HOOK
+void finsh_thread_entry_sethook(void (*hook)(void));
+#endif /* RT_USING_HOOK */
+
 #endif