函数逻辑报告 |
Source Code:kernel\locking\rwsem.c |
Create Date:2022-07-27 10:48:51 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:lock for writing
函数原型:void __sched down_write(struct rw_semaphore *sem)
返回类型:void
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| struct rw_semaphore * | sem |
| 1533 | might_sleep() |
| 1534 | rwsem_acquire( & dep_map, 0, 0, _RET_IP_) |
| 名称 | 描述 |
|---|---|
| SYSCALL_DEFINE2 | Only setdomainname; getdomainname can be implemented by calling* uname() |
| __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_register | locking_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_unregister | locking_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_down_write | |
| torture_rwsem_down_write | |
| posix_clock_unregister | |
| proc_do_uts_string | Special case of dostring for the UTS structure. This has locks* to observe. Should this be in kernel/sys.c ???? |
| send_cpu_listeners | Send taskstats data in @skb to listeners registered for @cpu's exit data |
| add_del_listener | |
| register_trace_event | gister_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_event | register_trace_event - remove a no longer used event*@event: the event to remove |
| trace_event_eval_update | |
| trace_remove_event_call | Remove an event_call |
| trace_module_remove_events | |
| event_trace_add_tracer | vent_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_tracer | The top trace array already had its file descriptors created.* Now the files themselves need to be created. |
| event_trace_del_tracer | Must 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_del | For uprobe @uprobe, delete the consumer @uc.* Return true if the @uc is deleted successfully* or return false. |
| prepare_uprobe | |
| register_for_each_vma | |
| uprobe_unregister | probe_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_apply | probe_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 |
| unregister_memcg_shrinker | |
| register_shrinker_prepared | |
| unregister_shrinker | Remove one |
| account_locked_vm | account_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 |
| __vmalloc_user_flags | |
| put_nommu_region | lease a reference to a region |
| do_mmap | handle mapping creation for uClinux |
| split_vma | split a vma into two pieces at address 'addr', a new vma is allocated either* for the first part or the tail. |
| shrink_vma | shrink a VMA by removing the specified chunk from either the beginning or* the end |
| vm_munmap | |
| SYSCALL_DEFINE5 | |
| nommu_shrink_inode_mappings | mmu_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 |
| exit_mmap | Release all mmaps. |
| lock_anon_vma_root | This 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 |
| mpol_rebind_mm | Rebind each vma in mm to new nodemask.* Call holding a reference to mm. Takes mm->mmap_sem during call. |
| do_mbind | |
| mmu_notifier_register | mmu_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_public | pcget_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_down | This 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_down | This 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_shm | Locking assumes this will only be called with task == current |
| shmctl_down | This 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_shmat | Fix 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. |
| 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_update | Attempt 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_update | key_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 |
| register_key_type | gister_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. |
| unregister_key_type | register_key_type - Unregister a type of key.*@ktype: The key type.* Unregister a key type and mark all the extant keys of this type as dead.* Those keys of this type are then destroyed to get rid of their payloads and |
| keyring_restrict | keyring_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_lock | Lock keyring for link. |
| __key_move_lock | Lock keyrings for move (link/unlink combination). |
| __key_unlink_lock | Lock a keyring for unlink. |
| keyring_clear | keyring_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_gc | Garbage 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_gc | Garbage collect restriction pointers from a keyring |
| keyctl_chown_key | Change 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_key | Change 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_register | Get or create a user register keyring. |
| look_up_user_keyrings | Look up the user and user session keyrings for the current process's UID,* creating them if they don't exist. |
| key_fsuid_changed | Handle the fsuid changing. |
| key_fsgid_changed | Handle the fsgid changing. |
| key_get_persistent | Get the persistent keyring for a specific UID and link it to the nominated* keyring. |
| grab_super | grab_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 |
| __get_super | |
| reconfigure_super | gure_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_bdev | get_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_super | ze_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 | |
| namespace_lock | |
| do_umount_root | |
| do_reconfigure_mnt | Handle 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_remount | hange 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. |
| mount_subtree | |
| vfs_fsconfig_locked | Check 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 | |
| add_existing_master_key | |
| add_master_key | |
| do_remove_key | Try to remove an fscrypt master encryption key |
| v1_write_file_info | |
| v2_write_file_info | Write information header to quota file |
| v2_write_dquot | |
| v2_release_dquot | |
| do_concurrent_test | |
| mark_screen_rdonly | |
| SYSCALL_DEFINE2 | |
| prealloc_memcg_shrinker | |
| ipcget_new | pcget_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_collector | Reaper for unused keys. |
| deactivate_super | 降低活跃性 |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |