Function report

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:ipc\shm.c Create Date:2022-07-28 16:46:32
Last Modify:2020-03-17 22:58:32 Copyright©Brick
home page Tree
Annotation kernel can get tool activityDownload SCCTChinese

Name:shm_lock_(check_) routines are called in the paths where the rwsem* is not necessarily held.

Proto:static inline struct shmid_kernel *shm_lock(struct ipc_namespace *ns, int id)

Type:struct shmid_kernel

Parameter:

TypeParameterName
struct ipc_namespace *ns
intid
184  _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
185  ipcp = pc_obtain_object_idr*@ids: ipc identifier set*@id: ipc id to look for* Look for an id in the ipc ids idr and return associated ipc object.* Call inside the RCU critical section.* The ipc object is *not* locked on exit.
186  If IS_ERR(ipcp) Then Go to err
189  ipc_lock_object(ipcp)
196  If pc_valid_object() - helper to sort out IPC_RMID races for codepaths* where the respective ipc_ids.rwsem is not being held down.* Checks whether the ipc object is still around or if it's gone already, as Then
198  Return container_of - cast a member of a structure out to the containing structure*@ptr: the pointer to the member.*@type: the type of the container struct this is embedded in.*@member: the name of the member within the struct.(ipcp, structshmid_kernel, shm_perm)
201  ipc_unlock_object(ipcp)
202  ipcp = ERR_PTR( - EIDRM)
203  err :
204  _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()
209  Return ERR_CAST - Explicitly cast an error-valued pointer to another pointer type*@ptr: The pointer to cast.* Explicitly cast an error-valued pointer to another pointer type in such a* way as to make it clear that's what's going on.
Caller
NameDescribe
__shm_open
shm_close
do_shmatFix shmaddr, allocate descriptor, map shm, add attach descriptor to lists.* NOTE! Despite the name, this is NOT a direct system call entrypoint. The* "raddr" thing points to kernel space, and there has to be a wrapper around* this.