Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\exit.c Create Date:2022-07-28 09:02:43
Last Modify:2020-03-17 11:17:32 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:Determine if a process group is "orphaned", according to the POSIX* definition in 2

Proto:static int will_become_orphaned_pgrp(struct pid *pgrp, struct task_struct *ignored_task)

Type:int

Parameter:

TypeParameterName
struct pid *pgrp
struct task_struct *ignored_task
275  Do
275  If ((pgrp) != NULL) Then cycle (({
275  cycle (({}), (p) = ({
275  typeof(({typeof(( * ((struct hlist_node * * )( & ( & (pgrp)-> lists of tasks that use this pid [PIDTYPE_PGID])->first))))________p1 = ({union{typeof(( * ((struct hlist_node * * )( & ( & (pgrp)-> lists of tasks that use this pid [PIDTYPE_PGID])->first))))__val;char __c[1];}__u;if (1)__read_once_size( & (( * ((struct hlist_node * * )( & ( & (pgrp)-> lists of tasks that use this pid [PIDTYPE_PGID])->first)))), __u.__c, sizeof(( * ((struct hlist_node * * )( & ( & (pgrp)-> lists of tasks that use this pid [PIDTYPE_PGID])->first)))));Else  __read_once_size_nocheck( & (( * ((struct hlist_node * * )( & ( & (pgrp)-> lists of tasks that use this pid [PIDTYPE_PGID])->first)))), __u.__c, sizeof(( * ((struct hlist_node * * )( & ( & (pgrp)-> lists of tasks that use this pid [PIDTYPE_PGID])->first)))));Do{}while (0);__u.__val;});((typeof( * ( * ((struct hlist_node * * )( & ( & (pgrp)-> lists of tasks that use this pid [PIDTYPE_PGID])->first)))) * )(________p1));}))____ptr = (({
275  typeof(( * ((struct hlist_node * * )( & ( & (pgrp)-> lists of tasks that use this pid [PIDTYPE_PGID])->first))))________p1 = ({
275  union{typeof(( * ((structhlist_node * * )( & first)))) __val;char __c[1];}__u
275  If 1 Then __read_once_size( & (( * ((structhlist_node * * )( & first)))), __c, size of *first )
275  Else __read_once_size_nocheck( & (( * ((structhlist_node * * )( & first)))), __c, size of *first )
275  Do
275  When 0 cycle
275  __val
275  })
275  }))
275  ____ptr ? ({
275  __mptr = ____ptr
275  Do
275  When 0 cycle
275  __mptr - __builtin_offsetof(typeof( * ((p))), pid_links[PIDTYPE_PGID])
275  }) : NULL
275  cycle (({}), (p) = ({});(p);(p) = ({
275  typeof(({typeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[PIDTYPE_PGID])->next))))________p1 = ({union{typeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[PIDTYPE_PGID])->next))))__val;char __c[1];}__u;if (1)__read_once_size( & (( * ((struct hlist_node * * )( & ( & ((p))->pid_links[PIDTYPE_PGID])->next)))), __u.__c, sizeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[PIDTYPE_PGID])->next)))));Else  __read_once_size_nocheck( & (( * ((struct hlist_node * * )( & ( & ((p))->pid_links[PIDTYPE_PGID])->next)))), __u.__c, sizeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[PIDTYPE_PGID])->next)))));Do{}while (0);__u.__val;});((typeof( * ( * ((struct hlist_node * * )( & ( & ((p))->pid_links[PIDTYPE_PGID])->next)))) * )(________p1));}))____ptr = (({
275  typeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[PIDTYPE_PGID])->next))))________p1 = ({
275  union{typeof(( * ((structhlist_node * * )( & next)))) __val;char __c[1];}__u
275  If 1 Then __read_once_size( & (( * ((structhlist_node * * )( & next)))), __c, size of *next )
275  Else __read_once_size_nocheck( & (( * ((structhlist_node * * )( & next)))), __c, size of *next )
275  Do
275  When 0 cycle
275  __val
275  })
275  }))
275  ____ptr ? ({
275  __mptr = ____ptr
275  Do
275  When 0 cycle
275  __mptr - __builtin_offsetof(typeof( * ((p))), pid_links[PIDTYPE_PGID])
275  }) : NULL
275  }))
284  If PIDTYPE_PGID == PIDTYPE_PID Then Break
284  When 0 cycle
286  Return 1
Caller
NameDescribe
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)