函数逻辑报告 | 
Source Code:fs\exec.c | 
Create Date:2022-07-29 10:33:50 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| 首页 | 函数Tree | 
| 注解内核,赢得工具 | 下载SCCT | English | 
函数名称:This function makes sure the current process has its own signal table,* so that flush_signal_handlers can later reset the handlers without* disturbing other processes. (Other processes might share the signal* table via the CLONE_SIGHAND option to clone().)
函数原型:static int de_thread(struct task_struct *tsk)
返回类型:int
参数:
| 类型 | 参数 | 名称 | 
|---|---|---|
| struct task_struct * | tsk | 
| 1063 | oldsighand等于sighand | 
| 1066 | 如果thread_group_empty(tsk)则转到:no_thread_group | 
| 1072 | spin_lock_irq(lock) | 
| 1078 | spin_unlock_irq(lock) | 
| 1079 | 返回:负EAGAIN | 
| 1082 | group_exit_task等于tsk | 
| 1089 | spin_unlock_irq(lock) | 
| 1090 | 进程调度 | 
| 1091 | 如果__fatal_signal_pending(tsk)则转到:killed | 
| 1093 | spin_lock_irq(lock) | 
| 1095 | spin_unlock_irq(lock) | 
| 1102 | 如果非thread_group_leader(tsk)则 | 
| 1103 | leader等于group_leader | 
| 1105 | 循环 | 
| 1106 | 开始摘除线程组 | 
| 1107 | write_lock_irq( & tasklist_lock) | 
| 1113 | 如果此条件成立可能性大(为编译器优化)(exit_state)则退出 | 
| 1116 | write_unlock_irq( & tasklist_lock) | 
| 1117 | 摘除线程组完成 | 
| 1118 | 进程调度 | 
| 1119 | 如果__fatal_signal_pending(tsk)则转到:killed | 
| 1133 | start_time等于start_time | 
| 1134 | start_boottime等于start_boottime | 
| 1136 | BUG_ON(!same_thread_group(leader, tsk)) | 
| 1137 | BUG_ON(Do to the insanities of de_thread it is possible for a process* to have the pid of the thread group leader without actually being* the thread group leader) | 
| 1151 | change_pid(tsk, PIDTYPE_PID, task_pid(leader)) | 
| 1156 | 更新RCU锁项 | 
| 1157 | list_replace_init( & sibling, & sibling) | 
| 1159 | group_leader等于tsk | 
| 1160 | group_leader等于tsk | 
| 1162 | exit_signal等于SIGCHLD | 
| 1163 | exit_signal等于负1 | 
| 1165 | BUG_ON(exit_state != EXIT_ZOMBIE) | 
| 1173 | 如果此条件成立可能性小(为编译器优化)(ptrace)则__wake_up_parent(leader, parent) | 
| 1175 | write_unlock_irq( & tasklist_lock) | 
| 1176 | 摘除线程组完成 | 
| 1178 | release_task(leader) | 
| 1181 | group_exit_task = NULL | 
| 1184 | no_thread_group : | 
| 1186 | exit_signal等于SIGCHLD | 
| 1199 | newsighand等于分配高速缓存区 | 
| 1200 | 如果非newsighand则返回:负ENOMEM | 
| 1207 | write_lock_irq( & tasklist_lock) | 
| 1208 | 加自旋锁 | 
| 1210 | 自旋锁解锁 | 
| 1211 | write_unlock_irq( & tasklist_lock) | 
| 1213 | __cleanup_sighand(oldsighand) | 
| 1216 | BUG_ON(!thread_group_leader(tsk)) | 
| 1217 | 返回:0 | 
| 1219 | killed : | 
| 1221 | read_lock( & tasklist_lock) | 
| 1222 | group_exit_task = NULL | 
| 1224 | read_unlock( & tasklist_lock) | 
| 1225 | 返回:负EAGAIN | 
| 名称 | 描述 | 
|---|---|
| flush_old_exec | Calling this is the point of no return. None of the failures will be* seen by userspace since either the process is already taking a fatal* signal (via de_thread() or coredump), or will have SEGV raised | 
| 源代码转换工具 开放的插件接口  | X | 
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码  |