函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:include\linux\list.h Create Date:2022-07-27 06:38:24
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:初始化链表头

函数原型:static inline void INIT_LIST_HEAD(struct list_head *list)

返回类型:void

参数:

类型参数名称
struct list_head *list
28  WRITE_ONCE(链表后项, list)
29  链表前项等于list
调用者
名称描述
radix_tree_node_rcu_free
radix_tree_node_ctor
kobject_init_internal
kset_init初始化kset
klist_initklist_init - Initialize a klist structure.*@k: The klist we're initializing.*@get: The get function for the embedding object (NULL if none)*@put: The put function for the embedding object (NULL if none)* Initialises the klist structure
klist_node_init
bucket_table_alloc
kunit_init_test
string_stream_init
gen_pool_creategen_pool_create - create a new special memory pool*@min_alloc_order: log base 2 of number of bytes each bitmap bit represents*@nid: node id of the node the pool structure should be allocated on, or -1* Create a new special memory pool that can be used to
codec_initdec_init - Initialize a Reed-Solomon codec*@symsize: symbol size, bits (1-8)*@gfpoly: Field generator polynomial coefficients*@gffunc: Field generator function*@fcr: first root of RS code generator polynomial, index form*@prim: primitive element to
populate_error_injection_listLookup and populate the error_injection_list.* For safety reasons we only allow certain functions to be overridden with* bpf_error_injection, so we need to populate the list of the symbols that have* been marked as safe for overriding.
lc_createlc_create - prepares to track objects in an active set*@name: descriptive name only used in lc_seq_printf_stats and lc_seq_dump_details*@max_pending_changes: maximum changes to accumulate until a transaction is required*@e_count: number of elements
lc_reset重置锁和哈希表
irq_poll_initq_poll_init - Initialize this @iop*@iop: The parent iopoll structure*@weight: The default weight (or command completion budget)*@poll_fn: The handler to invoke* Description:* Initialize and enable this irq_poll structure.
irq_poll_setup
parman_createparman_create - creates a new parman instance*@ops: caller-specific callbacks*@priv: pointer to a private data passed to the ops* Note: all locking must be provided by the caller.* Each parman instance manages an array area with chunks of entries
parman_prio_initparman_prio_init - initializes a parman priority chunk*@parman: parman instance*@prio: parman prio structure to be initialized*@prority: desired priority of the chunk* Note: all locking must be provided by the caller
objagg_createbjagg_create - creates a new objagg instance*@ops: user-specific callbacks*@objagg_hints: hints, can be NULL*@priv: pointer to a private data passed to the ops* Note: all locking must be provided by the caller
objagg_hints_getbjagg_hints_get - obtains hints instance*@objagg: objagg instance*@opt_algo_type: type of hints finding algorithm* Note: all locking must be provided by the caller.* According to the algo type, the existing objects of objagg instance
list_test_list_init
allocate_threshold_blocks
verify_and_add_patchReturn a non-negative value even if some of the checks failed so that* we can skip over the next patch. If we return a negative value, we* signal a grave error like a memory allocation has failed and the* driver cannot continue functioning normally
mkdir_rdt_prepare
rdtgroup_setup_root
dom_data_init
l3_mon_evt_initInitialize the event list for the resource.* Note that MBM events are also part of RDT_RESOURCE_L3 resource* because as per the SDM the total and local memory bandwidth* are enumerated as part of L3 monitoring.
pseudo_lock_initpseudo_lock_init - Initialize a pseudo-lock region*@rdtgrp: resource group to which new pseudo-locked region will belong* A pseudo-locked region is associated with a resource group. When this* association is created the pseudo-locked region is initialized
mp_irqdomain_alloc
vm_area_dup
mm_init设置内核内存分配器
copy_process创建进程
resource_list_create_entry
__sigqueue_allocallocate a new signal queue record* - this may be called without locks if and only if t == current, otherwise an* appropriate lock must be held to stop the target task from exiting
alloc_worker
init_worker_pool_worker_pool - initialize a newly zalloc'd worker_pool*@pool: worker_pool to initialize* Initialize a newly zalloc'd @pool
init_pwqalize newly alloced @pwq which is associated with @wq and @pool
alloc_workqueue
__kthread_init_worker
async_schedule_node_domainasync_schedule_node_domain - NUMA specific version of async_schedule_domain*@func: function to execute asynchronously*@data: data pointer to pass to the function*@node: NUMA node that we want to schedule this on or close to*@domain: the domain
__sched_forkPerform scheduler related setup for a newly forked process p.* p is forked by current.* __sched_fork() is basic setup used by init_idle() too:
init_rt_rq
__init_waitqueue_headSPDX-License-Identifier: GPL-2.0-only
__wake_up_common_lock
init_wait_entry
__init_swait_queue_headSPDX-License-Identifier: GPL-2.0
group_init
__mutex_init
__init_rwsemInitialize an rwsem:
rwsem_mark_wakehandle the lock release when processes blocked on it that can now run* - if we come here from up_xxxx(), then the RWSEM_FLAG_WAITERS bit must* have been set
debug_mutex_lock_commonMust be called with lock->wait_lock held.
init_data_structures_onceInitialize the lock_classes[] array elements, the free_lock_classes list* and also the delayed_free structure.
pm_qos_update_flagspm_qos_update_flags - Update a set of PM QoS flags
create_zone_bm_rtreereate_zone_bm_rtree - Create a radix tree for one zone.* Allocated the mem_zone_bm_rtree structure and initializes it.* This function also allocated and builds the radix tree for the* zone.
create_mem_extentsreate_mem_extents - Create a list of memory extents.*@list: List to put the extents into.*@gfp_mask: Mask to use for memory allocations.* The extents represent contiguous ranges of PFNs.
memory_bm_creatememory_bm_create - Allocate memory for a memory bitmap.
memory_bm_free
alloc_msi_entryalloc_msi_entry - Allocate an initialize msi_entry*@dev: Pointer to the device for which this is allocated*@nvec: The number of vectors used in this entry*@affinity: Optional pointer to an affinity mask array size of @nvec* If @affinity is not NULL then
init_srcu_struct_fields
rcu_sync_torture_init
rcu_torture_init
rcu_init_oneHelper function for rcu_init() that initializes the rcu_state structure.
klp_init_func
klp_init_object_early
klp_init_patch_early
klp_patch_func
dma_debug_init
refill_pi_state_cachePI code:
do_kimage_alloc_init
kimage_alloc_normal_control_pages
allocate_cgrp_cset_linksallocate_cgrp_cset_links - allocate cgrp_cset_links*@count: the number of links to allocate*@tmp_links: list_head the allocated links are put on* Allocate @count cgrp_cset_link structures and chain them on @tmp_links* through ->cset_link
find_css_setd_css_set - return a new css_set with one cgroup updated*@old_cset: the baseline css_set*@cgrp: the cgroup to be updated* Return a new css_set that's equivalent to @old_cset, but with @cgrp* substituted into the appropriate hierarchy.
init_cgroup_housekeeping
init_cgroup_root
init_and_link_css
cgroup_init_subsys
cgroup_forkgroup_fork - initialize cgroup related fields during copy_process()*@child: pointer to task_struct of forking parent process.* A task is associated with the init_css_set until cgroup_post_fork()* attaches it to the parent's css_set
get_cg_rpool_locked
rdmacg_register_devicedmacg_register_device - register rdmacg device to rdma controller
rdmacg_css_alloc
create_user_nsCreate a new user namespace, deriving the creator from the user in the* passed credentials, and replacing that user with the new root user for the* new namespace.* This is called by copy_creds(), which will finish setting the target task's* credentials.
cpu_stop_init
audit_initInitialize audit support at boot time.
audit_alloc_context
audit_init_parentInitialize a parent watch entry.
audit_init_watchInitialize a watch entry.
alloc_tree
alloc_chunk
audit_tree_init
init_nodeBasic initialization of a new node.
llvm_gcov_init
llvm_gcda_emit_function
gcov_fn_info_dup
gcov_info_dupgcov_info_dup - duplicate profiling data set*@info: profiling data set to duplicate* Return newly allocated duplicate on success, %NULL on error.
kcov_remote_area_putMust be called with kcov_remote_lock locked.
__get_insn_slot__get_insn_slot() - Find a slot on an executable page for an instruction.* We allocate an executable page if there's no room on existing ones.
alloc_aggr_kprobeAllocate new optimized_kprobe and try to prepare optimized instructions
init_aggr_kprobe
register_kprobe
kprobe_add_ksym_blacklist
fei_attr_new
taskstats_init_early任务状态初始化
rb_allocate_cpu_buffer
rb_insert_pages
ring_buffer_resizeg_buffer_resize - resize the ring buffer*@buffer: the buffer to resize.*@size: the new size.*@cpu_id: the cpu buffer to resize* Minimum size is 2 * BUF_PAGE_SIZE.* Returns 0 on success and < 0 on failure.
rb_reset_cpu
trace_array_create
tracer_alloc_buffers
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
register_stat_tracer
trace_create_new_event
event_trigger_callbackvent_trigger_callback - Generic event_command @func implementation*@cmd_ops: The command ops, used for trigger registration*@file: The trace_event_file associated with the event*@glob: The raw string used to register the trigger*@cmd: The cmd portion of
event_enable_trigger_func
register_synth_event
event_hist_trigger_func
alloc_trace_kprobeAllocate new trace_probe and initialize it (including kprobes).
__unregister_trace_kprobeInternal unregister function - just handle k*probes and flags
dyn_event_register
trace_probe_init
trace_probe_add_file
init_trace_uprobe_filter
prog_array_map_poke_track
prog_array_map_alloc
bpf_lru_locallist_init
bpf_lru_list_init
cgroup_storage_map_alloc
dev_map_init_map
cpu_map_alloc
xsk_map_alloc
bpf_offload_dev_netdev_register
bpf_offload_dev_create
cgroup_bpf_inheritgroup_bpf_inherit() - inherit effective programs from parent*@cgrp: the cgroup to modify
__perf_event_init_contextInitialize the perf_event context in a task_struct:
perf_addr_filter_newAllocate a new address filter
perf_event_allocAllocate and initialize an event structure
perf_event_init_task进程性能调优
perf_event_init_all_cpus
ring_buffer_init
build_probe_listFor a given range in vma, build a list of probes that need to be inserted.
__padata_list_init
padata_allocpadata_alloc - allocate and initialize a padata instance and specify* cpumasks for serial and parallel workers
dir_add
wake_up_page_bit
reclaim_pages
lruvec_init
wb_init
bdi_init
pcpu_alloc_first_chunkpcpu_alloc_first_chunk - creates chunks that serve the first chunk*@tmp_addr: the start of the region served*@map_size: size of the region served* This is responsible for creating the chunks that serve the first chunk
pcpu_alloc_chunk
pcpu_setup_first_chunkpcpu_setup_first_chunk - initialize the first percpu chunk*@ai: pcpu_alloc_info describing how to percpu area is shaped*@base_addr: mapped address* Initialize the first percpu chunk which contains the kernel static* percpu area
init_one_lru
pgtable_trans_huge_deposit
new_vmap_blockw_vmap_block - allocates new vmap_block and occupies 2^order pages in this* block
vmalloc_init
__init_single_page
reserve_bootmem_regionInitialised pages do not have PageReserved set. This function is* called for each range allocated by the bootmem allocator and* marks the pages PageReserved. The remaining valid pages are later* sent to the buddy page allocator.
zone_init_free_lists
pageset_init
pgdat_init_split_queue
add_swap_count_continuationadd_swap_count_continuation - called when a swap count is duplicated* beyond SWAP_MAP_MAX, it allocates a new page and links that to the entry's* page of the original vmalloc'ed swap_map, to hold the continuation count
zswap_pool_create
dma_pool_createdma_pool_create - Creates a pool of consistent memory blocks, for dma
region_delDelete the specified range [f, t) from the reserve map. If the* t parameter is LONG_MAX, this indicates that ALL regions after f* should be deleted. Locate the regions which intersect [f, t)* and either trim, delete or split the existing regions.
resv_map_alloc
prep_new_huge_page
gather_surplus_pagesIncrease the hugetlb pool such that it can accommodate a reservation* of size 'delta'.
__alloc_bootmem_huge_page
hugetlb_add_hstate
slob_allocslob_alloc: entry point into the slob allocator.
kmem_cache_node_init
cache_grow_end
init_kmem_cache_node
__kmem_cache_shrinkkmem_cache_shrink discards empty slabs and promotes the slabs filled* up most to the head of the partial lists. New allocations will then* fill those up and thus they can be removed from the partial lists.* The slabs with the least items are placed last
prep_transhuge_page
mem_cgroup_oom_synchronizemem_cgroup_oom_synchronize - complete memcg OOM handling*@handle: actually kill/wait or just clean up the OOM state* This has to be called at the end of a page fault if the memcg OOM* handler was enabled
memcg_write_event_controlDO NOT USE IN NEW FILES.* Parse input and register new cgroup event handler.* Input must be in format ' '.* Interpretation of args is defined by control file implementation.
mem_cgroup_alloc
vmpressure_initvmpressure_init() - Initialize vmpressure control structure*@vmpr: Structure to be initialized* This function should be called on every allocated vmpressure structure* before any usage.
create_objectCreate the metadata (struct kmemleak_object) corresponding to an allocated* memory block and add it to the object_list and object_tree_root.
kmemleak_test_initSome very simple testing. This function needs to be extended for* proper testing.
init_zbud_pageInitializes the zbud header of a newly allocated zbud page
zbud_create_poolzbud_create_pool() - create a new zbud pool*@gfp: gfp flags when allocating the zbud pool structure*@ops: user-defined operations for the zbud pool* Return: pointer to the new zbud pool or NULL if the metadata allocation* failed.
zs_create_poolzs_create_pool - Creates an allocation pool to work from.*@name: pool name to be created* This function must be called before anything when using* the zsmalloc allocator.* On success, a pointer to the newly created pool is returned,* otherwise NULL.
init_z3fold_pageInitializes the z3fold header of a newly allocated z3fold page
z3fold_create_poolz3fold_create_pool() - create a new z3fold pool*@name: pool name*@gfp: gfp flags when allocating the z3fold pool structure*@ops: user-defined operations for the z3fold pool* Return: pointer to the new z3fold pool or NULL if the metadata allocation* failed.
z3fold_page_migrate
z3fold_page_putback
newquewque - Create a new msg queue*@ns: namespace*@params: ptr to the structure that contains the key and msgflg* Called with msg_ids.rwsem held (writer)
unmerge_queuesmerge_queues - unmerge queues, if possible.*@sma: semaphore array* The function unmerges the wait queues if complex_count is 0.* It must be called prior to dropping the global semaphore array lock.
newarywary - Create a new semaphore set*@ns: namespace*@params: ptr to the structure that contains key, semflg and nsems* Called with sem_ids.rwsem held (as a writer)
get_undo_listIf the task doesn't already have a undo_list, then allocate one* here. We guarantee there is only one thread using this undo list,* and current is THE ONE* If this allocation and assignment succeeds, but later
msg_insertAuxiliary functions to manipulate messages' list
mqueue_get_inode
do_mq_timedsend
do_mq_timedreceive
blk_rq_init
blk_alloc_queue_nodelk_alloc_queue_node - allocate a request queue*@gfp_mask: memory allocation flags*@node_id: NUMA node to allocate memory from
blk_start_pluglk_start_plug - initialize blk_plug and track it inside the task_struct*@plug: The &struct blk_plug that needs to be initialized* Description:* blk_start_plug() indicates to the block layer an intent by the caller
blk_insert_flushlk_insert_flush - insert a new PREFLUSH/FUA request*@rq: request to insert* To be called from __elv_add_request() for %ELEVATOR_INSERT_FLUSH insertions.* or __blk_mq_run_hw_queue() to dispatch request.*@rq is being submitted
blk_alloc_flush_queue
ioc_create_icq_create_icq - create and link io_cq*@ioc: io_context of interest*@q: request_queue of interest*@gfp_mask: allocation mask* Make sure io_cq linking @ioc and @q exists
blk_softirq_init
blk_mq_rq_ctx_init
blk_mq_alloc_rqs
blk_mq_alloc_hctx
blk_mq_init_cpu_queues
blk_mq_del_queue_tag_set
blk_mq_init_allocated_queue
blk_mq_alloc_tag_setAlloc a tag set to be associated with one or more request queues.* May fail with EINVAL for various error conditions. May adjust the* requested depth down, if it's too large. In that case, the set* value will be stored in set->queue_depth.
blk_mq_elv_switch_noneCache the elevator_type in qe pair list and switch the* io scheduler to 'none'
blk_alloc_queue_stats
disk_alloc_events
ldm_partitionldm_partition - Find out whether a device is a dynamic disk and handle it*@state: Partition check state including device holding the LDM Database* This determines whether the device @bdev is a dynamic disk and if so creates
blkg_alloclkg_alloc - allocate a blkg*@blkcg: block cgroup the new blkg is associated with*@q: request_queue the new blkg is associated with*@gfp_mask: allocation mask to use* Allocate a new blkg assocating @blkcg and @q.
throtl_qnode_init
throtl_service_queue_init a service_queue, assumes the caller zeroed it
blk_iocost_init
ioc_pd_init
dd_init_queuealize elevator private data (deadline_data).
kyber_ctx_queue_init
kyber_init_hctx
bfq_init_bfqq
bfq_init_queue
init_opal_dev
avc_xperms_alloc
avc_compute_avSlow-path helper function for avc_has_perm_noaudit,* when the avc_node lookup fails
inode_alloc_securityAllocate and free functions for each kind of security blob.
superblock_alloc_security
sel_netif_init
sel_netnode_init
sel_netport_init
sel_ib_pkey_init
init_task_smack_task_smack - initialize a task security blob*@tsp: blob to initialize*@task: a pointer to the Smack label for the running task*@forked: a pointer to the Smack label for the forked task
smack_cred_transfersmack_cred_transfer - Transfer the old credentials to the new credentials*@new: the new credentials*@old: the original credentials* Fill in a set of blank credentials from another set of credentials.
init_smack_known_list
smk_import_entrysmk_import_entry - import a label, return the list entry*@string: a text string that might be a Smack label*@len: the maximum size, or zero if it is NULL terminated
smk_destroy_label_listsmk_destroy_label_list - destroy a list of smack_known_list_elem*@head: header pointer of the list to destroy
tomoyo_init_policy_namespacemoyo_init_policy_namespace - Initialize namespace.*@ns: Pointer to "struct tomoyo_policy_namespace".* Returns nothing.
tomoyo_assign_domainmoyo_assign_domain - Create a domain or a namespace.*@domainname: The name of domain.*@transit: True if transit to domain found or created.* Returns pointer to "struct tomoyo_domain_info" on success, NULL otherwise.* Caller holds tomoyo_read_lock().
tomoyo_get_groupmoyo_get_group - Allocate memory for "struct tomoyo_path_group"/"struct tomoyo_number_group".*@param: Pointer to "struct tomoyo_acl_param".*@idx: Index number.* Returns pointer to "struct tomoyo_group" on success, NULL otherwise.
tomoyo_mm_initmoyo_mm_init - Initialize mm related code.
aa_policy_initaa_policy_init - initialize a policy structure*@policy: policy to initialize (NOT NULL)*@prefix: prefix name if any is required
aa_loaddata_alloc
aa_load_ent_alloc
alloc_nsalloc_ns - allocate, initialize and return a new namespace*@prefix: parent namespace name (MAYBE NULL)*@name: a preallocated name (NOT NULL)* Returns: refcounted namespace or NULL on failure.
devcgroup_css_allocalled from kernel/cgroup.c with cgroup_lock() held.
ima_add_digest_entryma_add_template_entry helper function:* - Add template entry to the measurement list and hash table, for* all entries except those carried across kexec.* (Called with ima_extend_list_mutex held.)
ima_init_arch_policy
ima_parse_add_rulema_parse_add_rule - add a rule to ima_policy_rules*@rule - ima measurement policy rule* Avoid locking by allowing just one writer at a time in ima_write_policy()* Returns the length of the rule parsed, an error code on failure
alloc_superalloc_super - create new superblock*@type: filesystem type superblock should belong to*@flags: the mount flags*@user_ns: User namespace for the super_block* Allocates and initializes a new &struct super_block. alloc_super()
cdev_allocdev_alloc() - allocate a cdev structure* Allocates and returns a cdev structure, or NULL on failure.
cdev_initdev_init() - initialize a cdev structure*@cdev: the structure to initialize*@fops: the file_operations for this device* Initializes @cdev, remembering @fops, making it ready to add to the* system with cdev_add().
shrink_dcache_parent收缩高速缓存区
__d_alloc__d_alloc - allocate a dcache entry*@sb: filesystem it will belong to*@name: qstr of the name* Allocates a dentry. It returns %NULL if there is insufficient memory* available. On a success the dentry is returned. The name passed in is
__d_lookup_done
__address_space_init_once
inode_init_onceThese are initializations that only need to be done* once, because the fields are idempotent across use* of the inode, so let the slab aware of that.
new_inode_pseudow_inode_pseudo - obtain an inode*@sb: superblock* Allocates a new inode for given superblock.* Inode wont be chained in superblock s_inodes list* This means :* - fs can't be unmount* - quotas, fsnotify, writeback can't work
alloc_vfsmnt
alloc_mnt_ns
do_make_slave
fsync_buffers_list
alloc_buffer_head
init_once
fsnotify_alloc_groupCreate a new fsnotify_group and hold a reference for the group returned.
SYSCALL_DEFINE2anotify syscalls
ep_nested_calls_initInitialize the poll safe wake up structure
ep_alloc
ep_insertMust be called with "mtx" held.
clear_tfile_check_list
ioctx_allocx_alloc* Allocates and initializes an ioctx. Returns an ERR_PTR if it failed.
aio_get_reqaio_get_req* Allocate a slot for an aio request.* Returns NULL if no requests are free.* The refcount is initialized to 2 - one for the async op completion,* one for the synchronous code that does this.
aio_poll
io_ring_ctx_alloc
io_poll_add
io_submit_sqe
io_wq_create
add_new_master_keyAllocate a new fscrypt_master_key which contains the given secret, set it as* the payload of a new 'struct key' of type fscrypt, and link the 'struct key'* into the given keyring. Synchronized by fscrypt_add_key_mutex.
locks_get_lock_context
locks_init_lock_heads
mb_cache_entry_createmb_cache_entry_create - create entry in cache*@cache - cache where the entry should be created*@mask - gfp mask with which the entry should be allocated*@key - key of the entry*@value - value of the entry*@reusable - is the entry reusable by others?
mb_cache_createmb_cache_create - create cache*@bucket_bits: log2 of the hash table size* Create cache for keys with 2^bucket_bits hash entries.
grace_init_net
iomap_ioend_try_merge
iomap_alloc_ioend
get_empty_dquot
dquot_load_quota_sb
dcookie_init
list_replace_init
list_del_init删除链表项并重新初始化
list_cut_positionlist_cut_position - cut a list into two*@list: a new list to add all removed entries*@head: a list with entries*@entry: an entry within head, could be the head itself* and if so we won't cut the list* This helper moves the initial part of @head, up to and
list_cut_beforelist_cut_before - cut a list into two, before given entry*@list: a new list to add all removed entries*@head: a list with entries*@entry: an entry within head, could be the head itself* This helper moves the initial part of @head, up to but
list_splice_init加入二个链表项并重新初始化
list_splice_tail_init加入二个链表项并重新初始化
plist_head_init动态链表初始化
plist_node_init动态链表初始化
init_sigpending初始化信号发送
vma_init
ptrace_init_task调试跟踪初始化
flow_block_init
simple_xattrs_initalize the simple_xattrs structure
eventpoll_init_fileUsed to initialize the epoll bits inside the "struct file"
dyn_event_init
init_usb_anchor
balloon_devinfo_init