函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\locking\rwsem.c Create Date:2022-07-27 10:48:53
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:lease a write lock

函数原型:void up_write(struct rw_semaphore *sem)

返回类型:void

参数:

类型参数名称
struct rw_semaphore *sem
1586  rwsem_release( & dep_map, _RET_IP_)
1587  lock after writing
调用者
名称描述
mark_screen_rdonly
dup_mmap
SYSCALL_DEFINE2
SYSCALL_DEFINE2Only setdomainname; getdomainname can be implemented by calling* uname()
SYSCALL_DEFINE5
__usermodehelper_set_disable_depth__usermodehelper_set_disable_depth - Modify usermodehelper_disabled.*@depth: New value to assign to usermodehelper_disabled.* Change the value of usermodehelper_disabled (under umhelper_sem locked for* writing) and wakeup tasks waiting for it to change.
__usermodehelper_disable__usermodehelper_disable - Prevent new helpers from being started.*@depth: New value to assign to usermodehelper_disabled.* Set usermodehelper_disabled to @depth and wait for running helpers to exit.
blocking_notifier_chain_registerlocking_notifier_chain_register - Add notifier to a blocking notifier chain*@nh: Pointer to head of the blocking notifier chain*@n: New entry in notifier chain* Adds a notifier to a blocking notifier chain.* Must be called in process context.
blocking_notifier_chain_unregisterlocking_notifier_chain_unregister - Remove notifier from a blocking notifier chain*@nh: Pointer to head of the blocking notifier chain*@n: Entry to remove from notifier chain* Removes a notifier from a blocking notifier chain.
proc_sched_autogroup_set_nice
percpu_up_write
torture_rwsem_up_write
posix_clock_unregister
proc_do_uts_stringSpecial case of dostring for the UTS structure. This has locks* to observe. Should this be in kernel/sys.c ????
send_cpu_listenersSend taskstats data in @skb to listeners registered for @cpu's exit data
add_del_listener
register_trace_eventgister_trace_event - register output for an event type*@event: the event type to register* Event types are stored in a hash and this hash is used to* find a way to print an event
unregister_trace_eventregister_trace_event - remove a no longer used event*@event: the event to remove
trace_event_eval_update
trace_remove_event_callRemove an event_call
trace_module_remove_events
event_trace_add_tracervent_trace_add_tracer - add a instance of a trace_array to events*@parent: The parent dentry to place the files/directories for events in*@tr: The trace array associated with these events* When a new instance is created, it needs to set up its events
early_event_add_tracerThe top trace array already had its file descriptors created.* Now the files themselves need to be created.
event_trace_del_tracerMust be called with event_mutex held
bpf_prog_offload_init
bpf_prog_offload_destroy
bpf_map_offload_map_alloc
bpf_map_offload_map_free
bpf_offload_dev_netdev_register
bpf_offload_dev_netdev_unregister
bpf_offload_dev_create
consumer_add
consumer_delFor uprobe @uprobe, delete the consumer @uc.* Return true if the @uc is deleted successfully* or return false.
prepare_uprobe
register_for_each_vma
uprobe_unregisterprobe_unregister - unregister an already registered probe.*@inode: the file in which the probe has to be removed.*@offset: offset from the start of the file.*@uc: identify which probe if multiple probes are colocated.
__uprobe_register__uprobe_register - register a probe*@inode: the file in which the probe has to be placed
uprobe_applyprobe_apply - unregister an already registered probe.*@inode: the file in which the probe has to be removed.*@offset: offset from the start of the file.*@uc: consumer which wants to add more or remove some breakpoints*@add: add or remove the breakpoints
xol_add_vmaSlot allocation for XOL
unregister_memcg_shrinker
register_shrinker_prepared
unregister_shrinkerRemove one
account_locked_vmaccount_locked_vm - account locked pages to an mm's locked_vm*@mm: mm to account against, may be NULL*@pages: number of pages to account*@inc: %true if @pages should be considered positive, %false if not* Assumes a non-NULL @mm is valid (i
vm_mmap_pgoff
__vmalloc_user_flags
__put_nommu_regionlease a reference to a region* - the caller must hold the region semaphore for writing, which this releases* - the region may not have been added to the tree yet, in which case vm_top* will equal vm_start
do_mmaphandle mapping creation for uClinux
split_vmasplit a vma into two pieces at address 'addr', a new vma is allocated either* for the first part or the tail.
shrink_vmashrink a VMA by removing the specified chunk from either the beginning or* the end
vm_munmap
SYSCALL_DEFINE5
nommu_shrink_inode_mappingsmmu_shrink_inode_mappings - Shrink the shared mappings on an inode*@inode: The inode to check*@size: The current filesize of the inode*@newsize: The proposed filesize of the inode* Check the shared mappings on an inode on behalf of a shrinking truncate
do_mlock
SYSCALL_DEFINE2
SYSCALL_DEFINE1
sys_munlockall
SYSCALL_DEFINE1
__vm_munmap
SYSCALL_DEFINE5Emulation of deprecated remap_file_pages() syscall.
vm_brk_flags
exit_mmapRelease all mmaps.
do_mprotect_pkeypkey==-1 when doing a legacy mprotect()
SYSCALL_DEFINE5Expand (or shrink) an existing mapping, potentially moving it at the* same time (controlled by the MREMAP_MAYMOVE flag and available VM space)* MREMAP_FIXED option added 5-Dec-1999 by Benjamin LaHaise* This option implies MREMAP_MAYMOVE.
lock_anon_vma_rootThis is a useful helper function for locking the anon_vma root as* we traverse the vma->anon_vma_chain, looping over anon_vma's that* have the same vma.* Such anon_vma's should have the same root, so you'd expect to see
unlock_anon_vma_root
SYSCALL_DEFINE3The madvise(2) system call
mpol_rebind_mmRebind each vma in mm to new nodemask.* Call holding a reference to mm. Takes mm->mmap_sem during call.
do_mbind
mmu_notifier_registermmu_notifier_register - Register a notifier on a mm*@mn: The notifier to attach*@mm: The mm to attach the notifier to* Must not hold mmap_sem nor any other VM related lock when calling* this registration function
__ksm_exit
__khugepaged_exit
collapse_huge_page
ipcget_publicpcget_public - get an ipc object or create a new one*@ns: ipc namespace*@ids: ipc identifier set*@ops: the actual creation routine to call*@params: its parameters* This routine is called by sys_msgget, sys_semget() and sys_shmget()
msgctl_downThis function handles some msgctl commands which require the rwsem* to be held in write mode.* NOTE: no locks must be held, the rwsem is taken inside this function.
semctl_downThis function handles some semctl commands which require the rwsem* to be held in write mode.* NOTE: no locks must be held, the rwsem is taken inside this function.
shm_close
shm_destroy_orphaned
exit_shmLocking assumes this will only be called with task == current
shmctl_downThis function handles some shmctl commands which require the rwsem* to be held in write mode.* NOTE: no locks must be held, the rwsem is taken inside this function.
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.
ksys_shmdtdetach and kill segment if marked destroyed.* The work is done in shm_close.
free_ipcs_ipcs - free all ipcs of one type*@ns: the namespace to remove the ipcs from*@ids: the table of ipcs to free*@free: the function called to free each individual ipc* Called for each kind of ipc when an ipc_namespace exits.
key_set_timeout
__key_updateAttempt to update an existing key.* The key is given to us with an incremented refcount that we need to discard* if we get an error.
key_updatekey_update - Update a key's contents.*@key_ref: The pointer (plus possession flag) to the key.*@payload: The data to be used to update the key.*@plen: The length of @payload.* Attempt to update the contents of a key with the given payload data. The
key_revokekey_revoke - Revoke a key
key_invalidatekey_invalidate - Invalidate a key.*@key: The key to be invalidated.* Mark a key as being invalidated and have it cleaned up immediately. The key* is ignored by all searches and other operations from this point.
register_key_typegister_key_type - Register a type of key.*@ktype: The new key type.* Register a new key type.* Returns 0 on success or -EEXIST if a type of this name already exists.
keyring_restrictkeyring_restrict - Look up and apply a restriction to a keyring*@keyring_ref: The keyring to be restricted*@type: The key type that will provide the restriction checker.*@restriction: The restriction options to apply to the keyring
__key_link_endFinish linking a key into to a keyring.* Must be called with __key_link_begin() having being called.
__key_unlink_endFinish unlinking a key from to a keyring.
keyring_clearkeyring_clear - Clear a keyring*@keyring: The keyring to clear.* Clear the contents of the specified keyring.* Returns 0 if successful or -ENOTDIR if the keyring isn't a keyring.
keyring_gcGarbage collect pointers from a keyring.* Not called with any locks held. The keyring's key struct will not be* deallocated under us as only our caller may deallocate it.
keyring_restriction_gcGarbage collect restriction pointers from a keyring
keyctl_chown_keyChange the ownership of a key* The key must grant the caller Setattr permission for this to work, though* the key need not be fully instantiated yet. For the UID to be changed, or* for the GID to be changed to a group the caller is not a member of, the
keyctl_setperm_keyChange the permission mask on a key.* The key must grant the caller Setattr permission for this to work, though* the key need not be fully instantiated yet. If the caller does not have
get_user_registerGet or create a user register keyring.
look_up_user_keyringsLook up the user and user session keyrings for the current process's UID,* creating them if they don't exist.
key_fsuid_changedHandle the fsuid changing.
key_fsgid_changedHandle the fsgid changing.
key_get_persistentGet the persistent keyring for a specific UID and link it to the nominated* keyring.
deactivate_locked_superdeactivate_locked_super - drop an active reference to superblock*@s: superblock to deactivate* Drops an active reference to superblock, converting it into a temporary* one if there is no other active references left
grab_supergrab_super - acquire an active reference*@s: reference we are trying to make active* Tries to acquire an active reference. grab_super() is used when we* had just found a superblock in super_blocks or fs_type->fs_supers
generic_shutdown_supergeneric_shutdown_super - common helper for ->kill_sb()*@sb: superblock to kill* generic_shutdown_super() does all fs-independent work on superblock* shutdown
drop_super_exclusive
__get_super
__get_super_thawed
get_active_superget_active_super - get an active reference to the superblock of a device*@bdev: device to get the superblock for* Scans the superblock list and finds the superblock of the file system* mounted on the device given. Returns the superblock with an active
reconfigure_supergure_super - asks filesystem to change superblock parameters*@fc: The superblock and configuration* Alters the configuration parameters of a live superblock.
do_emergency_remount_callback
do_thaw_all_callback
get_tree_bdevget_tree_bdev - Get a superblock based on a single block device*@fc: The filesystem context holding the parameters*@fill_super: Helper to initialise a new superblock
mount_bdev
freeze_superze_super - lock the filesystem and force it into a consistent state*@sb: the super to lock* Syncs the super to make sure the filesystem is consistent and calls the fs's* freeze_fs. Subsequent calls to this without first thawing the fs will return* -EBUSY.
thaw_super_locked
__bprm_mm_init
setup_arg_pagesFinalizes the stack vm_area_struct. The flags and permissions are updated,* the stack is optionally relocated, and some extra space is added.
fc_mount
namespace_unlock
do_umount_root
do_reconfigure_mntHandle reconfiguration of the mountpoint only without alteration of the* superblock it refers to. This is triggered by specifying MS_REMOUNT|MS_BIND* to mount(2).
do_remounthange filesystem flags. dir should be a physical root of filesystem.* If you've mounted a non-root directory somewhere and want to do remount* on it - tough luck.
do_new_mount_fcCreate a new mount using a superblock configuration and request it* be added to the namespace tree.
vfs_fsconfig_lockedCheck the state and apply the configuration. Note that this function is* allowed to 'steal' the value by setting param->xxx to NULL before returning.
userfaultfd_event_wait_completion
userfaultfd_release
userfaultfd_register
userfaultfd_unregister
aio_setup_ring
add_existing_master_key
add_master_key
do_remove_keyTry to remove an fscrypt master encryption key
coredump_wait
v1_write_file_info
v2_write_file_infoWrite information header to quota file
v2_write_dquot
v2_release_dquot
do_concurrent_test
write_ldt
prealloc_memcg_shrinker
ipcget_newpcget_new - create a new ipc object*@ns: ipc namespace*@ids: ipc identifier set*@ops: the actual creation routine to call*@params: its parameters* This routine is called by sys_msgget, sys_semget() and sys_shmget()* when the key is IPC_PRIVATE.
del_gendisk
key_garbage_collectorReaper for unused keys.
destroy_unused_superFree a superblock that has never been seen by anyone