Lines Matching refs:cpu
99 struct cpu_workqueue_struct *wq_per_cpu(struct workqueue_struct *wq, int cpu) in wq_per_cpu() argument
102 cpu = singlethread_cpu; in wq_per_cpu()
103 return per_cpu_ptr(wq->cpu_wq, cpu); in wq_per_cpu()
184 queue_work_on(int cpu, struct workqueue_struct *wq, struct work_struct *work) in queue_work_on() argument
190 __queue_work(wq_per_cpu(wq, cpu), work); in queue_work_on()
233 int queue_delayed_work_on(int cpu, struct workqueue_struct *wq, in queue_delayed_work_on() argument
252 if (unlikely(cpu >= 0)) in queue_delayed_work_on()
253 add_timer_on(timer, cpu); in queue_delayed_work_on()
414 int cpu; in flush_workqueue() local
419 for_each_cpu_mask_nr(cpu, *cpu_map) in flush_workqueue()
420 flush_cpu_workqueue(per_cpu_ptr(wq->cpu_wq, cpu)); in flush_workqueue()
536 int cpu; in wait_on_work() local
550 for_each_cpu_mask_nr(cpu, *cpu_map) in wait_on_work()
551 wait_on_cpu_work(per_cpu_ptr(wq->cpu_wq, cpu), work); in wait_on_work()
633 int schedule_work_on(int cpu, struct work_struct *work) in schedule_work_on() argument
635 return queue_work_on(cpu, keventd_wq, work); in schedule_work_on()
663 int schedule_delayed_work_on(int cpu, in schedule_delayed_work_on() argument
666 return queue_delayed_work_on(cpu, keventd_wq, dwork, delay); in schedule_delayed_work_on()
681 int cpu; in schedule_on_each_cpu() local
689 for_each_online_cpu(cpu) { in schedule_on_each_cpu()
690 struct work_struct *work = per_cpu_ptr(works, cpu); in schedule_on_each_cpu()
693 schedule_work_on(cpu, work); in schedule_on_each_cpu()
695 for_each_online_cpu(cpu) in schedule_on_each_cpu()
696 flush_work(per_cpu_ptr(works, cpu)); in schedule_on_each_cpu()
742 int cpu = raw_smp_processor_id(); /* preempt-safe: keventd is per-cpu */ in current_is_keventd() local
747 cwq = per_cpu_ptr(keventd_wq->cpu_wq, cpu); in current_is_keventd()
756 init_cpu_workqueue(struct workqueue_struct *wq, int cpu) in init_cpu_workqueue() argument
758 struct cpu_workqueue_struct *cwq = per_cpu_ptr(wq->cpu_wq, cpu); in init_cpu_workqueue()
768 static int create_workqueue_thread(struct cpu_workqueue_struct *cwq, int cpu) in create_workqueue_thread() argument
775 p = kthread_create(worker_thread, cwq, fmt, wq->name, cpu); in create_workqueue_thread()
793 static void start_workqueue_thread(struct cpu_workqueue_struct *cwq, int cpu) in start_workqueue_thread() argument
798 if (cpu >= 0) in start_workqueue_thread()
799 kthread_bind(p, cpu); in start_workqueue_thread()
813 int err = 0, cpu; in __create_workqueue_key() local
853 for_each_possible_cpu(cpu) { in __create_workqueue_key()
854 cwq = init_cpu_workqueue(wq, cpu); in __create_workqueue_key()
855 if (err || !cpu_online(cpu)) in __create_workqueue_key()
857 err = create_workqueue_thread(cwq, cpu); in __create_workqueue_key()
858 start_workqueue_thread(cwq, cpu); in __create_workqueue_key()
907 int cpu; in destroy_workqueue() local
914 for_each_cpu_mask_nr(cpu, *cpu_map) in destroy_workqueue()
915 cleanup_workqueue_thread(per_cpu_ptr(wq->cpu_wq, cpu)); in destroy_workqueue()
927 unsigned int cpu = (unsigned long)hcpu; in workqueue_cpu_callback() local
936 cpumask_set_cpu(cpu, cpu_populated_map); in workqueue_cpu_callback()
940 cwq = per_cpu_ptr(wq->cpu_wq, cpu); in workqueue_cpu_callback()
944 if (!create_workqueue_thread(cwq, cpu)) in workqueue_cpu_callback()
947 wq->name, cpu); in workqueue_cpu_callback()
953 start_workqueue_thread(cwq, cpu); in workqueue_cpu_callback()
967 cpumask_clear_cpu(cpu, cpu_populated_map); in workqueue_cpu_callback()
999 long work_on_cpu(unsigned int cpu, long (*fn)(void *), void *arg) in work_on_cpu() argument
1006 queue_work_on(cpu, work_on_cpu_wq, &wfc.work); in work_on_cpu()