| 函数逻辑报告 | 
| Source Code: kernel\signal.c | Create Date:2022-07-27 10:15:37 | 
| Last Modify:2020-03-17 13:28:47 | Copyright©Brick | 
| 首页 | 函数Tree | 
| 注解内核,赢得工具 | 下载SCCT | English | 
函数名称:__send_signal
函数原型:static int __send_signal(int sig, struct kernel_siginfo *info, struct task_struct *t, enum pid_type type, bool force)
返回类型:int
参数:
| 类型 | 参数 | 名称 | 
|---|---|---|
| int | sig | |
| struct kernel_siginfo * | info | |
| struct task_struct * | t | |
| enum pid_type | type | |
| bool | force | 
| 1071 | ret等于0 | 
| 1073 | assert_spin_locked( & siglock) | 
| 1075 | result等于TRACE_SIGNAL_IGNORED | 
| 1079 | pending等于如果type不等于单一进程则shared_pending否则待处理信号 | 
| 1086 | 如果legacy_queue(pending, sig)则转到:ret | 
| 1089 | result等于TRACE_SIGNAL_DELIVERED | 
| 1093 | 如果sig恒等于SIGKILL或任务标志按位与I am a kernel thread 则转到:out_set | 
| 1105 | 如果sig小于These should not be considered constants from userland. 则override_rlimit等于is_si_special(info)或si_code大于等于0 | 
| 1107 | 否则override_rlimit等于0 | 
| 1110 | q等于allocate a new signal queue record* - this may be called without locks if and only if t == current, otherwise an* appropriate lock must be held to stop the target task from exiting | 
| 1111 | 如果q则 | 
| 1112 | 添加链表项 | 
| 1115 | clear_siginfo( & info) | 
| 1117 | si_errno等于0 | 
| 1119 | si_pid等于task_tgid_nr_ns(当前进程, task_active_pid_ns(t)) | 
| 1122 | si_uid等于from_kuid_munged(task_cred_xxx(t, user_ns), current_uid()) | 
| 1126 | 退出 | 
| 1127 | 当:info恒等于SEND_SIG_PRIV | 
| 1135 | 默认 | 
| 1136 | copy_siginfo( & info, info) | 
| 1137 | 退出 | 
| 1149 | 否则 | 
| 1154 | result等于TRACE_SIGNAL_LOSE_INFO | 
| 1157 | out_set : | 
| 1162 | 如果type大于PIDTYPE_TGID则 | 
| 1167 | 如果sig恒等于SIGCONT则sigdelsetmask(signal, SIG_KERNEL_STOP_MASK) | 
| 1169 | 否则如果sig_kernel_stop(sig)则sigdelset(signal, SIGCONT) | 
| 1175 | complete_signal(sig, t, type) | 
| 1176 | ret : | 
| 1178 | 返回:ret | 
| 名称 | 描述 | 
|---|---|
| send_signal | |
| kill_pid_usb_asyncio | The usb asyncio usage of siginfo is wrong | 
| 源代码转换工具 开放的插件接口 | X | 
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |