Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

Name:has_stopped_jobs

Proto:static bool has_stopped_jobs(struct pid *pgrp)

Type:bool

Parameter:

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