函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\exit.c Create Date:2022-07-27 10:02:24
Last Modify:2020-03-17 11:17:32 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:Determine if a process group is "orphaned", according to the POSIX* definition in 2

函数原型:static int will_become_orphaned_pgrp(struct pid *pgrp, struct task_struct *ignored_task)

返回类型:int

参数:

类型参数名称
struct pid *pgrp
struct task_struct *ignored_task
275  循环
275  如果((pgrp) != NULL)则循环(({
275  循环(({}), (p) = ({
275  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 = (({
275  typeof(( * ((struct hlist_node * * )( & ( & (pgrp)->进程属性列[进程组])->first))))________p1 = ({
275  union{typeof(( * ((structhlist_node * * )( & first)))) __val;char __c[1];}__u
275  如果1则__read_once_size( & (( * ((structhlist_node * * )( & first)))), __c, *first的长度)
275  否则__read_once_size_nocheck( & (( * ((structhlist_node * * )( & first)))), __c, *first的长度)
275  循环
275  当0循环
275  __val
275  })
275  }))
275  ____ptr ? ({
275  __mptr等于____ptr
275  循环
275  当0循环
275  __mptr__builtin_offsetof(typeof( * ((p))), pid_links[进程组])
275  }) : NULL
275  循环(({}), (p) = ({});(p);(p) = ({
275  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 = (({
275  typeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[进程组])->next))))________p1 = ({
275  union{typeof(( * ((structhlist_node * * )( & next)))) __val;char __c[1];}__u
275  如果1则__read_once_size( & (( * ((structhlist_node * * )( & next)))), __c, *next的长度)
275  否则__read_once_size_nocheck( & (( * ((structhlist_node * * )( & next)))), __c, *next的长度)
275  循环
275  当0循环
275  __val
275  })
275  }))
275  ____ptr ? ({
275  __mptr等于____ptr
275  循环
275  当0循环
275  __mptr__builtin_offsetof(typeof( * ((p))), pid_links[进程组])
275  }) : NULL
275  }))
276  如果p恒等于ignored_task进程退出时状态thread_group_empty(p)或检查进程已初始化则继续下一循环
284  如果进程组恒等于单一进程退出
284  当0循环
286  返回:1
调用者
名称描述
is_current_pgrp_orphaned
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)