Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:fs\fcntl.c Create Date:2022-07-28 20:06:04
Last Modify:2020-03-12 14:18:49 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:send_sigurg

Proto:int send_sigurg(struct fown_struct *fown)

Type:int

Parameter:

TypeParameterName
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  If Not pid Then Go to out_unlock_fown
829  ret = 1
831  If type <= PIDTYPE_TGID Then
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, PIDTYPE_PID)
834  If p Then send_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  Else
838  read_lock( & tasklist_lock)
839  Do
839  If ((pid) != NULL) Then cycle (({
839  cycle (({}), (p) = ({
839  typeof(({typeof(( * ((struct hlist_node * * )( & ( & (pid)-> lists of tasks that use this pid [type])->first))))________p1 = ({union{typeof(( * ((struct hlist_node * * )( & ( & (pid)-> lists of tasks that use this pid [type])->first))))__val;char __c[1];}__u;if (1)__read_once_size( & (( * ((struct hlist_node * * )( & ( & (pid)-> lists of tasks that use this pid [type])->first)))), __u.__c, sizeof(( * ((struct hlist_node * * )( & ( & (pid)-> lists of tasks that use this pid [type])->first)))));Else  __read_once_size_nocheck( & (( * ((struct hlist_node * * )( & ( & (pid)-> lists of tasks that use this pid [type])->first)))), __u.__c, sizeof(( * ((struct hlist_node * * )( & ( & (pid)-> lists of tasks that use this pid [type])->first)))));Do{}while (0);__u.__val;});((typeof( * ( * ((struct hlist_node * * )( & ( & (pid)-> lists of tasks that use this pid [type])->first)))) * )(________p1));}))____ptr = (({
839  typeof(( * ((struct hlist_node * * )( & ( & (pid)-> lists of tasks that use this pid [type])->first))))________p1 = ({
839  union{typeof(( * ((structhlist_node * * )( & first)))) __val;char __c[1];}__u
839  If 1 Then __read_once_size( & (( * ((structhlist_node * * )( & first)))), __c, size of *first )
839  Else __read_once_size_nocheck( & (( * ((structhlist_node * * )( & first)))), __c, size of *first )
839  Do
839  When 0 cycle
839  __val
839  })
839  }))
839  ____ptr ? ({
839  __mptr = ____ptr
839  Do
839  When 0 cycle
839  __mptr - __builtin_offsetof(typeof( * ((p))), pid_links[type])
839  }) : NULL
839  cycle (({}), (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)))));Else  __read_once_size_nocheck( & (( * ((struct hlist_node * * )( & ( & ((p))->pid_links[type])->next)))), __u.__c, sizeof(( * ((struct hlist_node * * )( & ( & ((p))->pid_links[type])->next)))));Do{}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  If 1 Then __read_once_size( & (( * ((structhlist_node * * )( & next)))), __c, size of *next )
839  Else __read_once_size_nocheck( & (( * ((structhlist_node * * )( & next)))), __c, size of *next )
839  Do
839  When 0 cycle
839  __val
839  })
839  }))
839  ____ptr ? ({
839  __mptr = ____ptr
839  Do
839  When 0 cycle
839  __mptr - __builtin_offsetof(typeof( * ((p))), pid_links[type])
839  }) : NULL
839  }))
841  If type == PIDTYPE_PID Then Break
841  When 0 cycle
842  read_unlock( & tasklist_lock)
844  out_unlock_fown :
845  read_unlock( & protects pid, uid, euid fields )
846  Return ret