if (unlikely(in_atomic() || lockdep_depth(current) > 0)) { printk(KERN_ERR "BUG: workqueue leaked lock or atomic: " "%s/0x%08x/%d\n", current->comm,preempt_count(), task_pid_nr(current)); printk(KERN_ERR " last function: "); print_symbol("%s\n", (unsigned long)f); debug...
lock_release(&lockdep_map, 1, _THIS_IP_); lock_release(&cwq->wq->lockdep_map, 1, _THIS_IP_); if (unlikely(in_atomic() || lockdep_depth(current) > 0)) { printk(KERN_ERR "BUG: workqueue leaked lock or atomic: " "%s/0x%08x/%d\n", current->comm, preempt_count(), task_pid...
spinlock_tlock;/*the pool lock*/---用于保护worker_pool的自旋锁intcpu;/*I: the associated cpu*/---对于unbound类型为-1;对于bound类型workqueue表示绑定的CPU ID。intnode;/*I: the associated node ID*/intid;/*I: pool ID*/---该worker_pool的ID号unsignedintflags;/*X: flags*/structlist_hea...
printk(KERN_ERR "BUG:workqueue leaked lock or atomic: " "%s/0x%08x/%d\n", current->comm, preempt_count(),task_pid_nr(current)); printk(KERN_ERR " last function: "); print_symbol("%s\n",(unsigned long)f); debug_show_held_locks(current); dump_stack(); } spin_lock...
*/ trace_workqueue_execute_end(work); lock_map_release(&lockdep_map); lock_map_release(&pwq->wq->lockdep_map); if (unlikely(in_atomic() || lockdep_depth(current) > 0)) { pr_err("BUG: workqueue leaked lock or atomic: %s/0x%08x/%d\n" " last function: %pf\n", current->comm...
*/ trace_workqueue_execute_end(work); lock_map_release(&lockdep_map); lock_map_release(&pwq->wq->lockdep_map); if (unlikely(in_atomic() || lockdep_depth(current) > 0)) { pr_err("BUG: workqueue leaked lock or atomic: %s/0x%08x/%d\n" " last function: %pf\n", current->comm...
atomic_long_t data;---低比特位部分是work的标志位,剩余比特位通常用于存放上一次运行的worker_pool ID或pool_workqueue的指针。存放的内容有WORK_STRUCT_PWQ标志位来决定 struct list_head entry;---用于把work挂到其他队列上。 work_func_t func;---工作任务...
*/ trace_workqueue_execute_end(work, worker->current_func); lock_map_release(&lockdep_map); lock_map_release(&pwq->wq->lockdep_map); if (unlikely(in_atomic() || lockdep_depth(current) > 0)) { pr_err("BUG: workqueue leaked lock or atomic: %s/0x%08x/%d\n" " last function: %...
printk(KERN_ERR "BUG: workqueue leaked lock or atomic: " "%s/0x%08x/%d\n", current->comm, preempt_count(), task_pid_nr(current)); printk(KERN_ERR " last function: "); print_symbol("%s\n", (unsigned long)f); debug_show_held_locks(current); dump_stack(); } spin_lock_irq(&...
printk(KERN_ERR "BUG:workqueue leaked lock or atomic: " "%s/0x%08x/%d\n", current->comm, preempt_count(),task_pid_nr(current)); printk(KERN_ERR " last function: "); print_symbol("%s\n",(unsigned long)f); debug_show_held_locks(current); ...