函数逻辑报告 |
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 插件可实现:逻辑报告 代码生成和批量转换代码 |