diff --git a/components/lwp/lwp.c b/components/lwp/lwp.c index d586d33bac2f6f3652300665bf2beab3aff2ad79..c842e831db4f339266b46b4094c8b069964b7571 100644 --- a/components/lwp/lwp.c +++ b/components/lwp/lwp.c @@ -1245,6 +1245,7 @@ pid_t lwp_execve(char *filename, int debug, int argc, char **argv, char **envp) if (debug && rt_dbg_ops) { lwp->debug = debug; + rt_thread_control(thread, RT_THREAD_CTRL_BIND_CPU, (void*)0); } rt_hw_interrupt_enable(level); diff --git a/components/lwp/lwp_syscall.c b/components/lwp/lwp_syscall.c index a2c456d29e674a631bebed320fa136890a45c77b..e02fd6f070def12483bd159ba006e66c655a6cfb 100644 --- a/components/lwp/lwp_syscall.c +++ b/components/lwp/lwp_syscall.c @@ -1368,6 +1368,11 @@ rt_thread_t sys_thread_create(void *arg[]) thread->tid = tid; lwp_tid_set_thread(tid, thread); + if (lwp->debug) + { + rt_thread_control(thread, RT_THREAD_CTRL_BIND_CPU, (void*)0); + } + level = rt_hw_interrupt_disable(); rt_list_insert_after(&lwp->t_grp, &thread->sibling); rt_hw_interrupt_enable(level); @@ -1509,6 +1514,11 @@ long _sys_clone(void *arg[]) thread->clear_child_tid = (int *)arg[4]; } + if (lwp->debug) + { + rt_thread_control(thread, RT_THREAD_CTRL_BIND_CPU, (void*)0); + } + level = rt_hw_interrupt_disable(); rt_list_insert_after(&lwp->t_grp, &thread->sibling); rt_hw_interrupt_enable(level);