函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:fs\fcntl.c Create Date:2022-07-29 10:35:59
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:send_sigurg

函数原型:int send_sigurg(struct fown_struct *fown)

返回类型:int

参数:

类型参数名称
struct fown_struct *fown
820  ret等于0
822  read_lock( & protects pid, uid, euid fields )
824  type等于 Kind of process group SIGIO should be sent to
825  pid等于 pid or -pgrp where SIGIO should be sent
826  如果非pid则转到:out_unlock_fown
829  ret等于1
831  如果type小于等于PIDTYPE_TGID
832  _read_lock() - mark the beginning of an RCU read-side critical section* When synchronize_rcu() is invoked on one CPU while other CPUs* are within RCU read-side critical sections, then the* synchronize_rcu() is guaranteed to block until after all the other
833  p等于pid_task(pid, 单一进程)
834  如果psend_sigurg_to_task(p, fown, type)
836  _read_unlock() - marks the end of an RCU read-side critical section.* In most situations, rcu_read_unlock() is immune from deadlock.* However, in kernels built with CONFIG_RCU_BOOST, rcu_read_unlock()
837  否则
838  read_lock( & tasklist_lock)
839  循环
839  如果((pid) != NULL)则循环(({
839  循环(({}), (p) = ({
839  typeof(({typeof(( * ((struct hlist_node * * )( & ( & (pid)->进程属性列[type])->first))))________p1 = ({union{typeof(( * ((struct hlist_node * * )( & ( & (pid)->进程属性列[type])->first))))__val;char __c[1];}__u;if (1)__read_once_size( & (( * ((struct hlist_node * * )( & ( & (pid)->进程属性列[type])->first)))), __u.__c, sizeof(( * ((struct hlist_node * * )( & ( & (pid)->进程属性列[type])->first)))));否则 __read_once_size_nocheck( & (( * ((struct hlist_node * * )( & ( & (pid)->进程属性列[type])->first)))), __u.__c, sizeof(( * ((struct hlist_node * * )( & ( & (pid)->进程属性列[type])->first)))));循环{}while (0);__u.__val;});((typeof( * ( * ((struct hlist_node * * )( & ( & (pid)->进程属性列[type])->first)))) * )(________p1));}))____ptr = (({
839  typeof(( * ((struct hlist_node * * )( & ( & (pid)->进程属性列[type])->first))))________p1 = ({
839  union{typeof(( * ((structhlist_node * * )( & first)))) __val;char __c[1];}__u
839  如果1则__read_once_size( & (( * ((structhlist_node * * )( & first)))), __c, *first的长度)
839  否则__read_once_size_nocheck( & (( * ((structhlist_node * * )( & first)))), __c, *first的长度)
839  循环
839  当0循环
839  __val
839  })
839  }))
839  ____ptr ? ({
839  __mptr等于____ptr
839  循环
839  当0循环
839  __mptr__builtin_offsetof(typeof( * ((p))), pid_links[type])
839  }) : NULL
839  循环(({}), (p) = ({});(p);(p) = ({
839  typeof(({typeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[type])->next))))________p1 = ({union{typeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[type])->next))))__val;char __c[1];}__u;if (1)__read_once_size( & (( * ((struct hlist_node * * )( & ( & ((p))->pid_links[type])->next)))), __u.__c, sizeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[type])->next)))));否则 __read_once_size_nocheck( & (( * ((struct hlist_node * * )( & ( & ((p))->pid_links[type])->next)))), __u.__c, sizeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[type])->next)))));循环{}while (0);__u.__val;});((typeof( * ( * ((struct hlist_node * * )( & ( & ((p))->pid_links[type])->next)))) * )(________p1));}))____ptr = (({
839  typeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[type])->next))))________p1 = ({
839  union{typeof(( * ((structhlist_node * * )( & next)))) __val;char __c[1];}__u
839  如果1则__read_once_size( & (( * ((structhlist_node * * )( & next)))), __c, *next的长度)
839  否则__read_once_size_nocheck( & (( * ((structhlist_node * * )( & next)))), __c, *next的长度)
839  循环
839  当0循环
839  __val
839  })
839  }))
839  ____ptr ? ({
839  __mptr等于____ptr
839  循环
839  当0循环
839  __mptr__builtin_offsetof(typeof( * ((p))), pid_links[type])
839  }) : NULL
839  }))
841  如果type恒等于单一进程退出
841  当0循环
842  read_unlock( & tasklist_lock)
844  out_unlock_fown :
845  read_unlock( & protects pid, uid, euid fields )
846  返回:ret