函数逻辑报告 |
Source Code:kernel\workqueue.c |
Create Date:2022-07-27 10:28:01 |
Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
首页 | 函数Tree |
注解内核,赢得工具 | 下载SCCT | English |
函数名称:alloc_workqueue
函数原型:struct workqueue_struct *alloc_workqueue(const char *fmt, unsigned int flags, int max_active, ...)
返回类型:struct workqueue_struct
参数:
类型 | 参数 | 名称 |
---|---|---|
const char * | fmt | |
unsigned int | flags | |
int | max_active |
4225 | tbl_size等于0 |
4237 | 如果flags按位与WQ_UNBOUND且max_active恒等于1则flags或等于__WQ_ORDERED |
4241 | 如果flags按位与WQ_POWER_EFFICIENT且see the comment above the definition of WQ_POWER_EFFICIENT 则flags或等于WQ_UNBOUND |
4245 | 如果flags按位与WQ_UNBOUND则tbl_size等于nr_node_ids乘PWR: unbound pwqs indexed by node [0]的长度 |
4249 | 如果非wq则返回:NULL |
4252 | 如果flags按位与WQ_UNBOUND则 |
4254 | 如果非PW: only for unbound wqs 则转到:err_free_wq |
4258 | va_start(args, max_active) |
4262 | max_active等于如果max_active否则WQ_DFL_ACTIVE |
4268 | mutex_init - initialize the mutex*@mutex: the mutex to be initialized* Initialize the mutex to unlocked state.* It is not allowed to initialize an already locked mutex.( & protects this wq ) |
4269 | atomic_set( & lush in progress , 0) |
4270 | 初始化链表头 |
4271 | 初始化链表头 |
4272 | 初始化链表头 |
4273 | 初始化链表头 |
4275 | wq_init_lockdep(wq) |
4276 | 初始化链表头 |
4278 | 如果alloc_and_link_pwqs(wq)小于0则转到:err_unreg_lockdep |
4281 | 如果can kworkers be created yet? 且Workqueues which may be used during memory reclaim should have a rescuer* to guarantee forward progress.小于0则转到:err_destroy |
4284 | 如果hot fields used during command issue, aligned to cacheline 按位与WQ_SYSFS且workqueue_sysfs_register(wq)则转到:err_destroy |
4292 | mutex_lock( & wq_pool_mutex) |
4294 | mutex_lock( & protects this wq ) |
4297 | mutex_unlock( & protects this wq ) |
4299 | 添加RCU链表项 |
4301 | mutex_unlock( & wq_pool_mutex) |
4303 | 返回:wq |
4305 | err_unreg_lockdep : |
4306 | wq_unregister_lockdep(wq) |
4307 | wq_free_lockdep(wq) |
4308 | err_free_wq : |
4310 | 释放内存 |
4311 | 返回:NULL |
4312 | err_destroy : |
4314 | 返回:NULL |
名称 | 描述 |
---|---|
workqueue_init_early | workqueue_init_early - early init for workqueue subsystem* This is the first half of two-staged workqueue subsystem initialization* and invoked as soon as the bare basics - memory allocation, cpumasks and* idr are up |
test_ww_mutex_init | |
pm_start_workqueue | |
rcu_init | 初始化直接读拷贝更新的锁机制 |
cgroup_wq_init | |
cgroup1_wq_init | |
padata_alloc | padata_alloc - allocate and initialize a padata instance and specify* cpumasks for serial and parallel workers |
default_bdi_init | |
blk_dev_init | |
blkcg_init | |
throtl_init | |
bio_integrity_init | |
fscrypt_init | scrypt_init() - Set up for fs encryption. |
fsverity_init_workqueue | |
init_mm_internals | |
bioset_init | set_init - Initialize a bio_set*@bs: pool to initialize*@pool_size: Number of bio and bio_vecs to cache in the mempool*@front_pad: Number of bytes to allocate in front of the returned bio*@flags: Flags to modify behavior, currently %BIOSET_NEED_BVECS* and |
sb_init_dio_done_wq | Create workqueue for deferred direct IO completions. We allocate the* workqueue when it's first needed. This avoids creating workqueue for* filesystems that don't need it and also allows us to create the workqueue |
源代码转换工具 开放的插件接口 | X |
---|---|
支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |