函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:destroy_workqueue - safely terminate a workqueue*@wq: target workqueue* Safely destroy a workqueue. All work currently pending will be done first.

函数原型:void destroy_workqueue(struct workqueue_struct *wq)

返回类型:void

参数:

类型参数名称
struct workqueue_struct *wq
4349  workqueue_sysfs_unregister(wq)
4352  drain_workqueue - drain a workqueue*@wq: workqueue to drain* Wait until the workqueue becomes empty. While draining is in progress,* only chain queueing is allowed. IOW, only currently pending or running
4355  如果MD: rescue worker
4356  rescuer等于MD: rescue worker
4359  spin_lock_irq( & wq_mayday_lock)
4360  MD: rescue worker = NULL
4361  spin_unlock_irq( & wq_mayday_lock)
4364  结束线程的运行
4365  释放内存
4372  mutex_lock( & wq_pool_mutex)
4373  mutex_lock( & protects this wq )
4374  r_each_pwq - iterate through all pool_workqueues of the specified workqueue*@pwq: iteration cursor*@wq: the target workqueue* This must be called either with wq->mutex held or RCU read locked(pwq, wq)
4375  spin_lock_irq( & he pool lock )
4376  如果WARN_ON(pwq_busy(pwq))则
4377  打印警告信息("%s: %s has the following busy pwq\n", __func__, I: workqueue name )
4379  show_pwq(pwq)
4384  返回
4386  spin_unlock_irq( & he pool lock )
4388  mutex_unlock( & protects this wq )
4389  mutex_unlock( & wq_pool_mutex)
4395  mutex_lock( & wq_pool_mutex)
4396  删除不需要重新初始化的列表项
4397  mutex_unlock( & wq_pool_mutex)
4399  如果非hot fields used during command issue, aligned to cacheline 按位与WQ_UNBOUND的值则
4400  wq_unregister_lockdep(wq)
4405  Exported common interfaces
4406  否则
4422  pwq等于PW: only for unbound wqs
4423  PW: only for unbound wqs = NULL
4424  put_pwq_unlocked - put_pwq() with surrounding pool lock/unlock*@pwq: pool_workqueue to put (can be %NULL)* put_pwq() with locking. This function also allows %NULL @pwq.
调用者
名称描述
alloc_workqueue
test_ww_mutex_exit
__padata_free
padata_allocpadata_alloc - allocate and initialize a padata instance and specify* cpumasks for serial and parallel workers
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_destroy_poolz3fold_destroy_pool() - destroys an existing z3fold pool*@pool: the z3fold pool to be destroyed* The pool should be emptied before this function is called.
sb_init_dio_done_wqCreate 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
fscrypt_initscrypt_init() - Set up for fs encryption.
fsverity_exit_workqueue
bioset_exitset_exit - exit a bioset initialized with bioset_init()* May be called on a zeroed but uninitialized bioset (i.e. allocated with* kzalloc()).
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