Browse Source

简化信号响应时进程和线程的中止流程

shaojinchun 4 years ago
parent
commit
5f45f59a35
1 changed files with 2 additions and 19 deletions
  1. 2 19
      components/lwp/lwp_signal.c

+ 2 - 19
components/lwp/lwp_signal.c

@@ -278,7 +278,6 @@ lwp_sighandler_t lwp_sighandler_get(int sig)
     lwp_sighandler_t func = RT_NULL;
     lwp_sighandler_t func = RT_NULL;
     struct rt_lwp *lwp;
     struct rt_lwp *lwp;
     rt_thread_t thread;
     rt_thread_t thread;
-    rt_thread_t main_thread;
     rt_base_t level;
     rt_base_t level;
 
 
     if (sig == 0 || sig > _LWP_NSIG)
     if (sig == 0 || sig > _LWP_NSIG)
@@ -294,22 +293,6 @@ lwp_sighandler_t lwp_sighandler_get(int sig)
             {
             {
                 goto out;
                 goto out;
             }
             }
-            lwp = (struct rt_lwp*)thread->lwp;
-            main_thread = rt_list_entry(lwp->t_grp.prev, struct rt_thread, sibling);
-            if (thread == main_thread)
-            {
-                rt_thread_t sub_thread;
-                rt_list_t *s_list = lwp->t_grp.next;
-                rt_list_t *m_list = lwp->t_grp.prev;
-
-                while (s_list != m_list)
-                {
-                    sub_thread = rt_list_entry(s_list, struct rt_thread, sibling);
-                    /* kill all sub threads */
-                    s_list = sub_thread->sibling.next;
-                    lwp_thread_kill(sub_thread, SIGKILL);
-                }
-            }
             sys_exit(0);
             sys_exit(0);
         }
         }
     }
     }
@@ -323,8 +306,8 @@ lwp_sighandler_t lwp_sighandler_get(int sig)
             {
             {
                 goto out;
                 goto out;
             }
             }
-            main_thread = rt_list_entry(lwp->t_grp.prev, struct rt_thread, sibling);
-            lwp_thread_kill(main_thread, SIGKILL);
+            lwp_terminate(lwp);
+            sys_exit(0);
         }
         }
     }
     }
 out:
 out: