diff --git a/.clang-format b/.clang-format index ea0eac2783a5..c6df1e675972 100644 --- a/.clang-format +++ b/.clang-format @@ -10,7 +10,7 @@ AccessModifierOffset: -1 AlignAfterOpenBracket: Align AlignArrayOfStructures: None AlignConsecutiveAssignments: - Enabled: false + Enabled: true AcrossEmptyLines: false AcrossComments: false AlignCompound: true @@ -22,10 +22,11 @@ AlignConsecutiveBitFields: AlignCompound: true PadOperators: true AlignConsecutiveDeclarations: - Enabled: false + Enabled: true AcrossEmptyLines: false AcrossComments: false AlignCompound: false + AlignFunctionPointers: true PadOperators: false AlignConsecutiveMacros: Enabled: true @@ -41,17 +42,17 @@ AlignConsecutiveShortCaseStatements: AlignEscapedNewlines: Left AlignOperands: Align AlignTrailingComments: - Kind: Leave - OverEmptyLines: 1 + Kind: Always + OverEmptyLines: 0 AllowAllArgumentsOnNextLine: false AllowAllParametersOfDeclarationOnNextLine: false AllowShortBlocksOnASingleLine: false AllowShortCaseLabelsOnASingleLine: false AllowShortEnumsOnASingleLine: false -AllowShortFunctionsOnASingleLine: Inline +AllowShortFunctionsOnASingleLine: None AllowShortIfStatementsOnASingleLine: false -AllowShortLambdasOnASingleLine: All -AllowShortLoopsOnASingleLine: true +AllowShortLambdasOnASingleLine: None +AllowShortLoopsOnASingleLine: false AlwaysBreakAfterDefinitionReturnType: None AlwaysBreakAfterReturnType: None AlwaysBreakBeforeMultilineStrings: false @@ -67,7 +68,7 @@ BraceWrapping: AfterClass: true AfterControlStatement: Always AfterEnum: true - AfterExternBlock: false + AfterExternBlock: true AfterFunction: true AfterNamespace: true AfterObjCDeclaration: true @@ -75,8 +76,8 @@ BraceWrapping: AfterUnion: true BeforeCatch: true BeforeElse: true - BeforeLambdaBody: false - BeforeWhile: false + BeforeLambdaBody: true + BeforeWhile: true IndentBraces: false SplitEmptyFunction: true SplitEmptyRecord: true @@ -130,7 +131,7 @@ IndentCaseBlocks: false IndentCaseLabels: false IndentExternBlock: NoIndent IndentGotoLabels: true -IndentPPDirectives: None +IndentPPDirectives: BeforeHash IndentRequiresClause: true IndentWidth: 4 IndentWrappedFunctionNames: false @@ -152,7 +153,7 @@ LambdaBodyIndentation: Signature LineEnding: DeriveLF MacroBlockBegin: "" MacroBlockEnd: "" -MaxEmptyLinesToKeep: 2 +MaxEmptyLinesToKeep: 1 NamespaceIndentation: All ObjCBinPackProtocolList: Auto ObjCBlockIndentWidth: 2 diff --git a/src/thread.c b/src/thread.c index 0c4a645eac01..f335c07d04f5 100644 --- a/src/thread.c +++ b/src/thread.c @@ -41,13 +41,13 @@ #include #include -#define DBG_TAG "kernel.thread" -#define DBG_LVL DBG_INFO +#define DBG_TAG "kernel.thread" +#define DBG_LVL DBG_INFO #include #if defined(RT_USING_HOOK) && defined(RT_HOOK_USING_FUNC_PTR) static void (*rt_thread_suspend_hook)(rt_thread_t thread); -static void (*rt_thread_resume_hook) (rt_thread_t thread); +static void (*rt_thread_resume_hook)(rt_thread_t thread); /** * @brief This function sets a hook function when the system suspend a thread. @@ -79,10 +79,10 @@ RT_OBJECT_HOOKLIST_DEFINE(rt_thread_inited); #ifdef RT_USING_MUTEX static void _thread_detach_from_mutex(rt_thread_t thread) { - rt_list_t *node; - rt_list_t *tmp_list; + rt_list_t *node; + rt_list_t *tmp_list; struct rt_mutex *mutex; - rt_base_t level; + rt_base_t level; level = rt_spin_lock_irqsave(&thread->spinlock); @@ -91,7 +91,7 @@ static void _thread_detach_from_mutex(rt_thread_t thread) (rt_object_get_type(thread->pending_object) == RT_Object_Class_Mutex)) { /* remove it from its waiting list */ - struct rt_mutex *mutex = (struct rt_mutex*)thread->pending_object; + struct rt_mutex *mutex = (struct rt_mutex *)thread->pending_object; rt_mutex_drop_thread(mutex, thread); thread->pending_object = RT_NULL; } @@ -111,13 +111,15 @@ static void _thread_detach_from_mutex(rt_thread_t thread) #else -static void _thread_detach_from_mutex(rt_thread_t thread) {} +static void _thread_detach_from_mutex(rt_thread_t thread) +{ +} #endif static void _thread_exit(void) { struct rt_thread *thread; - rt_base_t critical_level; + rt_base_t critical_level; /* get current thread */ thread = rt_thread_self(); @@ -145,7 +147,7 @@ static void _thread_exit(void) */ static void _thread_timeout(void *parameter) { - struct rt_thread *thread; + struct rt_thread *thread; rt_sched_lock_level_t slvl; thread = (struct rt_thread *)parameter; @@ -178,7 +180,7 @@ static void _thread_timeout(void *parameter) static rt_err_t _thread_init(struct rt_thread *thread, const char *name, - void (*entry)(void *parameter), + void (*entry)(void *parameter), void *parameter, void *stack_start, rt_uint32_t stack_size, @@ -197,7 +199,7 @@ static rt_err_t _thread_init(struct rt_thread *thread, thread->wakeup_handle.func = RT_NULL; #endif - thread->entry = (void *)entry; + thread->entry = (void *)entry; thread->parameter = parameter; /* stack init */ @@ -225,7 +227,7 @@ static rt_err_t _thread_init(struct rt_thread *thread, #endif #ifdef RT_USING_EVENT - thread->event_set = 0; + thread->event_set = 0; thread->event_info = 0; #endif /* RT_USING_EVENT */ @@ -254,18 +256,18 @@ static rt_err_t _thread_init(struct rt_thread *thread, thread->sig_mask = 0x00; thread->sig_pending = 0x00; -#ifndef RT_USING_SMP - thread->sig_ret = RT_NULL; -#endif /* RT_USING_SMP */ + #ifndef RT_USING_SMP + thread->sig_ret = RT_NULL; + #endif /* RT_USING_SMP */ thread->sig_vectors = RT_NULL; thread->si_list = RT_NULL; #endif /* RT_USING_SIGNALS */ #ifdef RT_USING_SMART thread->tid_ref_count = 0; - thread->lwp = RT_NULL; + thread->lwp = RT_NULL; thread->susp_recycler = RT_NULL; - thread->robust_list = RT_NULL; + thread->robust_list = RT_NULL; rt_list_init(&(thread->sibling)); /* lwp thread-signal init */ @@ -276,15 +278,15 @@ static rt_err_t _thread_init(struct rt_thread *thread, rt_memset(&thread->user_ctx, 0, sizeof thread->user_ctx); /* initialize user_time and system_time */ - thread->user_time = 0; + thread->user_time = 0; thread->system_time = 0; #endif #ifdef RT_USING_CPU_USAGE_TRACER - thread->user_time = 0; - thread->system_time = 0; + thread->user_time = 0; + thread->system_time = 0; thread->total_time_prev = 0; - thread->cpu_usage = 0; + thread->cpu_usage = 0; #endif /* RT_USING_CPU_USAGE_TRACER */ #ifdef RT_USING_PTHREADS @@ -348,7 +350,7 @@ static rt_err_t _thread_init(struct rt_thread *thread, */ rt_err_t rt_thread_init(struct rt_thread *thread, const char *name, - void (*entry)(void *parameter), + void (*entry)(void *parameter), void *parameter, void *stack_start, rt_uint32_t stack_size, @@ -388,12 +390,12 @@ rt_thread_t rt_thread_self(void) #ifndef RT_USING_SMP return rt_cpu_self()->current_thread; -#elif defined (ARCH_USING_HW_THREAD_SELF) +#elif defined(ARCH_USING_HW_THREAD_SELF) return rt_hw_thread_self(); -#else /* !ARCH_USING_HW_THREAD_SELF */ +#else /* !ARCH_USING_HW_THREAD_SELF */ rt_thread_t self; - rt_base_t lock; + rt_base_t lock; lock = rt_hw_local_irq_disable(); self = rt_cpu_self()->current_thread; @@ -447,7 +449,7 @@ RTM_EXPORT(rt_thread_startup); rt_err_t rt_thread_close(rt_thread_t thread) { rt_sched_lock_level_t slvl; - rt_uint8_t thread_status; + rt_uint8_t thread_status; /* forbid scheduling on current core if closing current thread */ RT_ASSERT(thread != rt_thread_self() || rt_critical_level()); @@ -505,7 +507,7 @@ RTM_EXPORT(rt_thread_detach); static rt_err_t _thread_detach(rt_thread_t thread) { - rt_err_t error; + rt_err_t error; rt_base_t critical_level; /** @@ -558,7 +560,7 @@ static rt_err_t _thread_detach(rt_thread_t thread) * If the return value is `RT_NULL`, it means this operation failed. */ rt_thread_t rt_thread_create(const char *name, - void (*entry)(void *parameter), + void (*entry)(void *parameter), void *parameter, rt_uint32_t stack_size, rt_uint8_t priority, @@ -568,12 +570,14 @@ rt_thread_t rt_thread_create(const char *name, RT_ASSERT(tick != 0); struct rt_thread *thread; - void *stack_start; + void *stack_start; thread = (struct rt_thread *)rt_object_allocate(RT_Object_Class_Thread, name); if (thread == RT_NULL) + { return RT_NULL; + } stack_start = (void *)RT_KERNEL_MALLOC(stack_size); if (stack_start == RT_NULL) @@ -652,8 +656,8 @@ RTM_EXPORT(rt_thread_yield); static rt_err_t _thread_sleep(rt_tick_t tick) { struct rt_thread *thread; - rt_base_t critical_level; - int err; + rt_base_t critical_level; + int err; if (tick == 0) { @@ -693,7 +697,9 @@ static rt_err_t _thread_sleep(rt_tick_t tick) /* clear error number of this thread to RT_EOK */ if (thread->error == -RT_ETIMEOUT) + { thread->error = RT_EOK; + } } else { @@ -731,8 +737,8 @@ RTM_EXPORT(rt_thread_delay); rt_err_t rt_thread_delay_until(rt_tick_t *tick, rt_tick_t inc_tick) { struct rt_thread *thread; - rt_tick_t cur_tick; - rt_base_t critical_level; + rt_tick_t cur_tick; + rt_base_t critical_level; RT_ASSERT(tick != RT_NULL); @@ -752,8 +758,8 @@ rt_err_t rt_thread_delay_until(rt_tick_t *tick, rt_tick_t inc_tick) { rt_tick_t left_tick; - *tick += inc_tick; - left_tick = *tick - cur_tick; + *tick += inc_tick; + left_tick = *tick - cur_tick; /* suspend thread */ rt_thread_suspend_with_flag(thread, RT_UNINTERRUPTIBLE); @@ -832,56 +838,56 @@ rt_err_t rt_thread_control(rt_thread_t thread, int cmd, void *arg) switch (cmd) { - case RT_THREAD_CTRL_CHANGE_PRIORITY: - { - rt_err_t error; - rt_sched_lock_level_t slvl; - rt_sched_lock(&slvl); - error = rt_sched_thread_change_priority(thread, *(rt_uint8_t *)arg); - rt_sched_unlock(slvl); - return error; - } + case RT_THREAD_CTRL_CHANGE_PRIORITY: + { + rt_err_t error; + rt_sched_lock_level_t slvl; + rt_sched_lock(&slvl); + error = rt_sched_thread_change_priority(thread, *(rt_uint8_t *)arg); + rt_sched_unlock(slvl); + return error; + } - case RT_THREAD_CTRL_RESET_PRIORITY: - { - rt_err_t error; - rt_sched_lock_level_t slvl; - rt_sched_lock(&slvl); - error = rt_sched_thread_reset_priority(thread, *(rt_uint8_t *)arg); - rt_sched_unlock(slvl); - return error; - } + case RT_THREAD_CTRL_RESET_PRIORITY: + { + rt_err_t error; + rt_sched_lock_level_t slvl; + rt_sched_lock(&slvl); + error = rt_sched_thread_reset_priority(thread, *(rt_uint8_t *)arg); + rt_sched_unlock(slvl); + return error; + } + + case RT_THREAD_CTRL_STARTUP: + { + return rt_thread_startup(thread); + } - case RT_THREAD_CTRL_STARTUP: + case RT_THREAD_CTRL_CLOSE: + { + rt_err_t rt_err = -RT_EINVAL; + + if (rt_object_is_systemobject((rt_object_t)thread) == RT_TRUE) { - return rt_thread_startup(thread); + rt_err = rt_thread_detach(thread); } - - case RT_THREAD_CTRL_CLOSE: +#ifdef RT_USING_HEAP + else { - rt_err_t rt_err = -RT_EINVAL; - - if (rt_object_is_systemobject((rt_object_t)thread) == RT_TRUE) - { - rt_err = rt_thread_detach(thread); - } - #ifdef RT_USING_HEAP - else - { - rt_err = rt_thread_delete(thread); - } - #endif /* RT_USING_HEAP */ - rt_schedule(); - return rt_err; + rt_err = rt_thread_delete(thread); } +#endif /* RT_USING_HEAP */ + rt_schedule(); + return rt_err; + } - case RT_THREAD_CTRL_BIND_CPU: - { - rt_uint8_t cpu; + case RT_THREAD_CTRL_BIND_CPU: + { + rt_uint8_t cpu; - cpu = (rt_uint8_t)(rt_size_t)arg; - return rt_sched_thread_bind_cpu(thread, cpu); - } + cpu = (rt_uint8_t)(rt_size_t)arg; + return rt_sched_thread_bind_cpu(thread, cpu); + } default: break; @@ -892,7 +898,7 @@ rt_err_t rt_thread_control(rt_thread_t thread, int cmd, void *arg) RTM_EXPORT(rt_thread_control); #ifdef RT_USING_SMART -#include + #include #endif /* Convert suspend_flag to corresponding thread suspend state value */ @@ -915,7 +921,7 @@ static void _thread_set_suspend_state(struct rt_thread *thread, int suspend_flag rt_uint8_t stat; RT_ASSERT(thread != RT_NULL); - stat = _thread_get_suspend_state(suspend_flag); + stat = _thread_get_suspend_state(suspend_flag); RT_SCHED_CTX(thread).stat = stat | (RT_SCHED_CTX(thread).stat & ~RT_THREAD_STAT_MASK); } @@ -947,7 +953,7 @@ static void _thread_set_suspend_state(struct rt_thread *thread, int suspend_flag */ rt_err_t rt_thread_suspend_to_list(rt_thread_t thread, rt_list_t *susp_list, int ipc_flags, int suspend_flag) { - rt_base_t stat; + rt_base_t stat; rt_sched_lock_level_t slvl; /* parameter check */ @@ -1112,7 +1118,7 @@ RTM_EXPORT(rt_thread_suspend); rt_err_t rt_thread_resume(rt_thread_t thread) { rt_sched_lock_level_t slvl; - rt_err_t error; + rt_err_t error; /* parameter check */ RT_ASSERT(thread != RT_NULL); @@ -1159,14 +1165,14 @@ RTM_EXPORT(rt_thread_resume); rt_err_t rt_thread_wakeup(rt_thread_t thread) { rt_sched_lock_level_t slvl; - rt_err_t ret; - rt_wakeup_func_t func = RT_NULL; + rt_err_t ret; + rt_wakeup_func_t func = RT_NULL; RT_ASSERT(thread != RT_NULL); RT_ASSERT(rt_object_get_type((rt_object_t)thread) == RT_Object_Class_Thread); rt_sched_lock(&slvl); - func = thread->wakeup_handle.func; + func = thread->wakeup_handle.func; thread->wakeup_handle.func = RT_NULL; rt_sched_unlock(slvl); @@ -1182,7 +1188,7 @@ rt_err_t rt_thread_wakeup(rt_thread_t thread) } RTM_EXPORT(rt_thread_wakeup); -void rt_thread_wakeup_set(struct rt_thread *thread, rt_wakeup_func_t func, void* user_data) +void rt_thread_wakeup_set(struct rt_thread *thread, rt_wakeup_func_t func, void *user_data) { rt_sched_lock_level_t slvl; @@ -1190,7 +1196,7 @@ void rt_thread_wakeup_set(struct rt_thread *thread, rt_wakeup_func_t func, void* RT_ASSERT(rt_object_get_type((rt_object_t)thread) == RT_Object_Class_Thread); rt_sched_lock(&slvl); - thread->wakeup_handle.func = func; + thread->wakeup_handle.func = func; thread->wakeup_handle.user_data = user_data; rt_sched_unlock(slvl); }