Explorar o código

!501 gdb在多核上绑定被调试任务到0核
Merge pull request !501 from jesven/gdb_bind_cpu0

bernard %!s(int64=3) %!d(string=hai) anos
pai
achega
6c89ed98cc
Modificáronse 2 ficheiros con 11 adicións e 0 borrados
  1. 1 0
      components/lwp/lwp.c
  2. 10 0
      components/lwp/lwp_syscall.c

+ 1 - 0
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);
 

+ 10 - 0
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);