/linux/Documentation/translations/zh_CN/core-api/ |
H A D | workqueue.rst | 4 :Original: Documentation/core-api/workqueue.rst 31 列被称为workqueue,线程被称为工作者(worker,即执行这一队列的线程)。 74 向该函数的工作项,并在工作队列中排队等待该工作项。(就是挂到workqueue 95 ``workqueue API`` 函数创建和排队工作项。他们可以通过在工作队列上 123 workqueue将自动创建与属性相匹配的后备工作者池。调节并发水平的责任在 137 ``alloc_workqueue()`` 分配了一个wq。原来的 ``create_*workqueue()`` 324 使用模块参数 ``workqueue.default_affinity_scope`` 指定 346 默认的亲和性作用域可以被模块参数 ``workqueue.default_affinity_scope`` 350 如果设置了 ``WQ_SYSFS`` ,工作队列会在它的 ``/sys/devices/virtual/workqueue/WQ_NAME/`` 537 使用 tools/workqueue/wq_dump.py(drgn脚本) 来检查未 [all …]
|
/linux/rust/kernel/ |
H A D | workqueue.rs | 203 … $crate::workqueue::Work::new($crate::optional_name!($($name)?), $crate::static_lock_class!()) 212 $crate::workqueue::DelayedWork::new( 225 $crate::workqueue::DelayedWork::new( 615 unsafe impl$(<$($generics)+>)? $crate::workqueue::HasWork<$work_type $(, $id)?> for $self { 617 … unsafe fn raw_get_work(ptr: *mut Self) -> *mut $crate::workqueue::Work<$work_type $(, $id)?> { 626 ptr: *mut $crate::workqueue::Work<$work_type $(, $id)?>, 769 $crate::workqueue::HasDelayedWork<$work_type $(, $id)?> for $self {} 773 unsafe impl$(<$($generics)+>)? $crate::workqueue::HasWork<$work_type $(, $id)?> for $self { 777 ) -> *mut $crate::workqueue::Work<$work_type $(, $id)?> { 779 let ptr: *mut $crate::workqueue::DelayedWork<$work_type $(, $id)?> = unsafe { [all …]
|
/linux/net/vmw_vsock/ |
H A D | vsock_loopback.c | 16 struct workqueue_struct *workqueue; member 35 queue_work(vsock->workqueue, &vsock->pkt_work); in vsock_loopback_send_pkt() 142 vsock->workqueue = alloc_workqueue("vsock-loopback", 0, 0); in vsock_loopback_init() 143 if (!vsock->workqueue) in vsock_loopback_init() 157 destroy_workqueue(vsock->workqueue); in vsock_loopback_init() 171 destroy_workqueue(vsock->workqueue); in vsock_loopback_exit()
|
/linux/include/trace/events/ |
H A D | workqueue.h | 3 #define TRACE_SYSTEM workqueue 9 #include <linux/workqueue.h> 20 * delayed work is actually queued on a workqueue (ie: once the delay 33 __string( workqueue, pwq->wq->name) 41 __assign_str(workqueue); 46 TP_printk("work struct=%p function=%ps workqueue=%s req_cpu=%d cpu=%d", 47 __entry->work, __entry->function, __get_str(workqueue), 79 * workqueue_execute_start - called immediately before the workqueue callback 82 * Allows to track workqueue execution. 104 * workqueue_execute_end - called immediately after the workqueue callbac [all...] |
/linux/drivers/misc/ |
H A D | tifm_core.c | 17 static struct workqueue_struct *workqueue; variable 221 flush_workqueue(workqueue); in tifm_remove_adapter() 309 queue_work(workqueue, work); in tifm_queue_work() 331 workqueue = create_freezable_workqueue("tifm"); in tifm_init() 332 if (!workqueue) in tifm_init() 347 destroy_workqueue(workqueue); in tifm_init() 356 destroy_workqueue(workqueue); in tifm_exit()
|
/linux/drivers/net/wireless/quantenna/qtnfmac/ |
H A D | shm_ipc.c | 62 queue_work(ipc->workqueue, &ipc->irq_work); in qtnf_shm_ipc_irq_inbound_handler() 83 struct workqueue_struct *workqueue, in qtnf_shm_ipc_init() argument 97 ipc->workqueue = workqueue; in qtnf_shm_ipc_init()
|
H A D | shm_ipc.h | 46 struct workqueue_struct *workqueue; member 54 struct workqueue_struct *workqueue,
|
H A D | core.c | 158 queue_work(bus->workqueue, &vif->reset_work); in qtnf_netdev_tx_timeout() 710 bus->workqueue = alloc_ordered_workqueue("QTNF_BUS", 0); in qtnf_core_attach() 711 if (!bus->workqueue) { in qtnf_core_attach() 799 if (bus->workqueue) { in qtnf_core_detach() 800 destroy_workqueue(bus->workqueue); in qtnf_core_detach() 801 bus->workqueue = NULL; in qtnf_core_detach()
|
/linux/drivers/net/wireless/st/cw1200/ |
H A D | scan.c | 40 queue_delayed_work(priv->workqueue, &priv->scan.timeout, in cw1200_scan_start() 122 queue_work(priv->workqueue, &priv->scan.work); in cw1200_hw_scan() 263 queue_work(priv->workqueue, &priv->scan.work); in cw1200_scan_work() 277 if (queue_work(priv->workqueue, &priv->unjoin_work) <= 0) in cw1200_scan_restart_delayed() 288 queue_delayed_work(priv->workqueue, &priv->clear_recent_scan_work, HZ); in cw1200_scan_complete() 308 queue_delayed_work(priv->workqueue, &priv->scan.timeout, 0); in cw1200_scan_failed_cb() 322 queue_delayed_work(priv->workqueue, &priv->scan.timeout, 0); in cw1200_scan_complete_cb() 388 queue_delayed_work(priv->workqueue, &priv->scan.probe_work, in cw1200_probe_work()
|
H A D | main.c | 349 priv->workqueue = create_singlethread_workqueue("cw1200_wq"); in cw1200_init_common() 350 if (!priv->workqueue) { in cw1200_init_common() 389 destroy_workqueue(priv->workqueue); in cw1200_init_common() 401 destroy_workqueue(priv->workqueue); in cw1200_init_common() 470 destroy_workqueue(priv->workqueue); in cw1200_unregister_common() 471 priv->workqueue = NULL; in cw1200_unregister_common()
|
H A D | sta.c | 115 flush_workqueue(priv->workqueue); in cw1200_stop() 167 queue_delayed_work(priv->workqueue, in __cw1200_cqm_bssloss_sm() 178 queue_work(priv->workqueue, &priv->bss_params_work); in __cw1200_cqm_bssloss_sm() 264 if (queue_work(priv->workqueue, &priv->unjoin_work) <= 0) in cw1200_remove_interface() 993 queue_delayed_work(priv->workqueue, in cw1200_event_handler() 1043 if (queue_work(priv->workqueue, &priv->unjoin_work) <= 0) in cw1200_bss_loss_work() 1201 queue_work(priv->workqueue, &priv->join_complete_work); in cw1200_join_complete_cb() 1327 queue_delayed_work(priv->workqueue, in cw1200_do_join() 1344 if (queue_work(priv->workqueue, &priv->unjoin_work) <= 0) in cw1200_do_join() 1374 if (queue_work(priv->workqueue, &priv->unjoin_work) <= 0) in cw1200_join_timeout() [all …]
|
H A D | txrx.c | 672 if (queue_work(priv->workqueue, in cw1200_tx_h_rate_policy() 691 queue_work(priv->workqueue, in cw1200_tx_h_pm_state() 888 queue_work(priv->workqueue, in cw1200_tx_confirm_cb() 1175 queue_work(priv->workqueue, in cw1200_rx_cb() 1185 queue_work(priv->workqueue, in cw1200_rx_cb() 1277 flush_workqueue(priv->workqueue); in cw1200_link_id_reset() 1286 if (queue_work(priv->workqueue, in cw1200_link_id_reset() 1298 if (queue_work(priv->workqueue, &priv->link_id_work) <= 0) in cw1200_link_id_reset() 1300 flush_workqueue(priv->workqueue); in cw1200_link_id_reset() 1349 if (queue_work(priv->workqueue, &priv->link_id_work) <= 0) in cw1200_alloc_link_id() [all …]
|
/linux/drivers/tty/serial/ |
H A D | max3100.c | 105 struct workqueue_struct *workqueue; member 307 queue_work(s->workqueue, &s->work); in max3100_dowork() 538 if (s->workqueue) { in max3100_shutdown() 539 destroy_workqueue(s->workqueue); in max3100_shutdown() 540 s->workqueue = NULL; in max3100_shutdown() 569 s->workqueue = create_freezable_workqueue(b); in max3100_startup() 570 if (!s->workqueue) { in max3100_startup() 580 destroy_workqueue(s->workqueue); in max3100_startup() 581 s->workqueue = NULL; in max3100_startup() 805 if (s->workqueue) in max3100_resume()
|
/linux/drivers/media/platform/amphion/ |
H A D | vpu_msgs.c | 289 if (!inst->workqueue) in vpu_inst_handle_msg() 296 queue_work(inst->workqueue, &inst->msg_work); in vpu_inst_handle_msg() 369 queue_delayed_work(core->workqueue, &core->msg_delayed_work, delay); in vpu_msg_run_work() 394 if (inst->workqueue && kfifo_len(&inst->msg_fifo) >= bytes) in vpu_msg_delayed_work() 395 queue_work(inst->workqueue, &inst->msg_work); in vpu_msg_delayed_work() 418 queue_work(core->workqueue, &core->msg_work); in vpu_isr()
|
/linux/drivers/char/tpm/ |
H A D | tpm_vtpm_proxy.c | 53 static struct workqueue_struct *workqueue; variable 482 queue_work(workqueue, &proxy_dev->work); in vtpm_proxy_work_start() 691 workqueue = create_workqueue("tpm-vtpm"); in vtpm_module_init() 692 if (!workqueue) { in vtpm_module_init() 700 destroy_workqueue(workqueue); in vtpm_module_init() 708 destroy_workqueue(workqueue); in vtpm_module_exit()
|
/linux/net/bluetooth/ |
H A D | coredump.c | 207 queue_delayed_work(hdev->workqueue, &hdev->dump.dump_timeout, in hci_devcd_handle_pkt_init() 465 queue_work(hdev->workqueue, &hdev->dump.dump_rx); in hci_devcd_init() 484 queue_work(hdev->workqueue, &hdev->dump.dump_rx); in hci_devcd_append() 509 queue_work(hdev->workqueue, &hdev->dump.dump_rx); in hci_devcd_append_pattern() 529 queue_work(hdev->workqueue, &hdev->dump.dump_rx); in hci_devcd_complete() 549 queue_work(hdev->workqueue, &hdev->dump.dump_rx); in hci_devcd_abort()
|
/linux/drivers/memstick/core/ |
H A D | memstick.c | 24 static struct workqueue_struct *workqueue; variable 207 queue_work(workqueue, &host->media_checker); in memstick_detect_change() 558 flush_workqueue(workqueue); in memstick_remove_host() 633 workqueue = create_freezable_workqueue("kmemstick"); in memstick_init() 634 if (!workqueue) in memstick_init() 650 destroy_workqueue(workqueue); in memstick_init() 659 destroy_workqueue(workqueue); in memstick_exit()
|
/linux/drivers/net/ethernet/mellanox/mlx4/ |
H A D | en_main.c | 215 queue_work(mdev->workqueue, &priv->linkstate_task); in mlx4_en_event() 254 destroy_workqueue(mdev->workqueue); in mlx4_en_remove() 332 mdev->workqueue = create_singlethread_workqueue("mlx4_en"); in mlx4_en_probe() 333 if (!mdev->workqueue) { in mlx4_en_probe()
|
/linux/net/qrtr/ |
H A D | ns.c | 25 struct workqueue_struct *workqueue; member 684 queue_work(qrtr_ns.workqueue, &qrtr_ns.work); in qrtr_ns_data_ready() 706 qrtr_ns.workqueue = alloc_ordered_workqueue("qrtr_ns_handler", 0); in qrtr_ns_init() 707 if (!qrtr_ns.workqueue) { in qrtr_ns_init() 752 destroy_workqueue(qrtr_ns.workqueue); in qrtr_ns_init() 762 destroy_workqueue(qrtr_ns.workqueue); in qrtr_ns_remove()
|
/linux/drivers/net/wireless/marvell/libertas/ |
H A D | if_sdio.c | 124 struct workqueue_struct *workqueue; member 968 queue_work(card->workqueue, &card->packet_worker); in if_sdio_host_to_card() 1069 flush_workqueue(card->workqueue); in if_sdio_power_save() 1184 card->workqueue = alloc_workqueue("libertas_sdio", WQ_MEM_RECLAIM, 0); in if_sdio_probe() 1185 if (unlikely(!card->workqueue)) { in if_sdio_probe() 1238 flush_workqueue(card->workqueue); in if_sdio_probe() 1243 destroy_workqueue(card->workqueue); in if_sdio_probe() 1286 destroy_workqueue(card->workqueue); in if_sdio_remove()
|
H A D | if_spi.c | 58 struct workqueue_struct *workqueue; member 984 queue_work(card->workqueue, &card->packet_work); in if_spi_host_to_card() 999 queue_work(card->workqueue, &card->packet_work); in if_spi_host_interrupt() 1156 card->workqueue = alloc_workqueue("libertas_spi", WQ_MEM_RECLAIM, 0); in if_spi_probe() 1157 if (!card->workqueue) { in if_spi_probe() 1188 destroy_workqueue(card->workqueue); in if_spi_probe() 1213 destroy_workqueue(card->workqueue); in libertas_spi_remove() 1226 flush_workqueue(card->workqueue); in if_spi_suspend()
|
/linux/Documentation/fb/ |
H A D | deferred_io.rst | 16 - schedule a workqueue task to be run after a delay 19 - the workqueue task comes in and mkcleans the pages on the list, then 70 from a workqueue.
|
/linux/tools/workqueue/ |
H A D | wq_monitor.py | 135 if args.workqueue: 136 for r in args.workqueue:
|
/linux/drivers/scsi/ |
H A D | vmw_pvscsi.c | 75 struct workqueue_struct *workqueue; member 918 flush_workqueue(adapter->workqueue); in pvscsi_host_reset() 1140 adapter->workqueue = in pvscsi_setup_msg_workqueue() 1142 if (!adapter->workqueue) { in pvscsi_setup_msg_workqueue() 1187 queue_work(adapter->workqueue, &adapter->work); in pvscsi_isr() 1221 if (adapter->workqueue) in pvscsi_release_resources() 1222 destroy_workqueue(adapter->workqueue); in pvscsi_release_resources() 1568 if (adapter->workqueue) in __pvscsi_shutdown() 1569 flush_workqueue(adapter->workqueue); in __pvscsi_shutdown()
|
/linux/drivers/cdx/controller/ |
H A D | mcdi.c | 114 mcdi->workqueue = alloc_ordered_workqueue("mcdi_wq", 0); in cdx_mcdi_init() 115 if (!mcdi->workqueue) in cdx_mcdi_init() 142 destroy_workqueue(mcdi->workqueue); in cdx_mcdi_finish() 180 flush_workqueue(mcdi->workqueue); in cdx_mcdi_wait_for_quiescence() 523 queue_work(mcdi->workqueue, &cmd->work); in cdx_mcdi_rpc_async_internal()
|