Procházet zdrojové kódy

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

bernard před 3 roky
rodič
revize
6c89ed98cc
2 změnil soubory, kde provedl 11 přidání a 0 odebrání
  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)
             if (debug && rt_dbg_ops)
             {
             {
                 lwp->debug = debug;
                 lwp->debug = debug;
+                rt_thread_control(thread, RT_THREAD_CTRL_BIND_CPU, (void*)0);
             }
             }
             rt_hw_interrupt_enable(level);
             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;
     thread->tid = tid;
     lwp_tid_set_thread(tid, thread);
     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();
     level = rt_hw_interrupt_disable();
     rt_list_insert_after(&lwp->t_grp, &thread->sibling);
     rt_list_insert_after(&lwp->t_grp, &thread->sibling);
     rt_hw_interrupt_enable(level);
     rt_hw_interrupt_enable(level);
@@ -1509,6 +1514,11 @@ long _sys_clone(void *arg[])
         thread->clear_child_tid = (int *)arg[4];
         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();
     level = rt_hw_interrupt_disable();
     rt_list_insert_after(&lwp->t_grp, &thread->sibling);
     rt_list_insert_after(&lwp->t_grp, &thread->sibling);
     rt_hw_interrupt_enable(level);
     rt_hw_interrupt_enable(level);