函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\signal.c Create Date:2022-07-27 10:16:05
Last Modify:2020-03-17 13:28:47 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:__kill_pgrp_info() sends a signal to a process group: this is what the tty* control characters do (^C, ^Z etc)* - the caller must hold at least a readlock on tasklist_lock

函数原型:int __kill_pgrp_info(int sig, struct kernel_siginfo *info, struct pid *pgrp)

返回类型:int

参数:

类型参数名称
intsig
struct kernel_siginfo *info
struct pid *pgrp
1420  struct task_struct * p = NULL
1423  success等于0
1424  retval等于负ESRCH
1425  循环
1425  如果((pgrp) != NULL)则循环(({
1425  循环(({}), (p) = ({
1425  typeof(({typeof(( * ((struct hlist_node * * )( & ( & (pgrp)->进程属性列[进程组])->first))))________p1 = ({union{typeof(( * ((struct hlist_node * * )( & ( & (pgrp)->进程属性列[进程组])->first))))__val;char __c[1];}__u;if (1)__read_once_size( & (( * ((struct hlist_node * * )( & ( & (pgrp)->进程属性列[进程组])->first)))), __u.__c, sizeof(( * ((struct hlist_node * * )( & ( & (pgrp)->进程属性列[进程组])->first)))));否则 __read_once_size_nocheck( & (( * ((struct hlist_node * * )( & ( & (pgrp)->进程属性列[进程组])->first)))), __u.__c, sizeof(( * ((struct hlist_node * * )( & ( & (pgrp)->进程属性列[进程组])->first)))));循环{}while (0);__u.__val;});((typeof( * ( * ((struct hlist_node * * )( & ( & (pgrp)->进程属性列[进程组])->first)))) * )(________p1));}))____ptr = (({
1425  typeof(( * ((struct hlist_node * * )( & ( & (pgrp)->进程属性列[进程组])->first))))________p1 = ({
1425  union{typeof(( * ((structhlist_node * * )( & first)))) __val;char __c[1];}__u
1425  如果1则__read_once_size( & (( * ((structhlist_node * * )( & first)))), __c, *first的长度)
1425  否则__read_once_size_nocheck( & (( * ((structhlist_node * * )( & first)))), __c, *first的长度)
1425  循环
1425  当0循环
1425  __val
1425  })
1425  }))
1425  ____ptr ? ({
1425  __mptr等于____ptr
1425  循环
1425  当0循环
1425  __mptr__builtin_offsetof(typeof( * ((p))), pid_links[进程组])
1425  }) : NULL
1425  循环(({}), (p) = ({});(p);(p) = ({
1425  typeof(({typeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[进程组])->next))))________p1 = ({union{typeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[进程组])->next))))__val;char __c[1];}__u;if (1)__read_once_size( & (( * ((struct hlist_node * * )( & ( & ((p))->pid_links[进程组])->next)))), __u.__c, sizeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[进程组])->next)))));否则 __read_once_size_nocheck( & (( * ((struct hlist_node * * )( & ( & ((p))->pid_links[进程组])->next)))), __u.__c, sizeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[进程组])->next)))));循环{}while (0);__u.__val;});((typeof( * ( * ((struct hlist_node * * )( & ( & ((p))->pid_links[进程组])->next)))) * )(________p1));}))____ptr = (({
1425  typeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[进程组])->next))))________p1 = ({
1425  union{typeof(( * ((structhlist_node * * )( & next)))) __val;char __c[1];}__u
1425  如果1则__read_once_size( & (( * ((structhlist_node * * )( & next)))), __c, *next的长度)
1425  否则__read_once_size_nocheck( & (( * ((structhlist_node * * )( & next)))), __c, *next的长度)
1425  循环
1425  当0循环
1425  __val
1425  })
1425  }))
1425  ____ptr ? ({
1425  __mptr等于____ptr
1425  循环
1425  当0循环
1425  __mptr__builtin_offsetof(typeof( * ((p))), pid_links[进程组])
1425  }) : NULL
1425  }))
1427  success或等于非err
1428  retval等于err
1429  如果进程组恒等于单一进程退出
1429  当0循环
1430  返回:如果success则0否则retval
调用者
名称描述
kill_orphaned_pgrpCheck to see if any process groups have become orphaned as* a result of our exiting, and if they have any stopped jobs,* send them a SIGHUP and then a SIGCONT. (POSIX 3.2.2.2)
kill_something_infokill_something_info() interprets pid in interesting ways just like kill(2).* POSIX specifies that kill(-1,sig) is unspecified, but what we have* is probably wrong. Should make it like BSD or SYSV.
kill_pgrp