Lines Matching refs:action

145 	struct irqaction *action = desc->action;  in irq_set_thread_affinity()  local
147 while (action) { in irq_set_thread_affinity()
148 if (action->thread) in irq_set_thread_affinity()
149 set_bit(IRQTF_AFFINITY, &action->thread_flags); in irq_set_thread_affinity()
150 action = action->next; in irq_set_thread_affinity()
601 if (!desc->action || in can_request_irq()
602 irqflags & desc->action->flags & IRQF_SHARED) in can_request_irq()
700 static int irq_wait_for_interrupt(struct irqaction *action) in irq_wait_for_interrupt() argument
707 &action->thread_flags)) { in irq_wait_for_interrupt()
724 struct irqaction *action) in irq_finalize_oneshot() argument
758 if (test_bit(IRQTF_RUNTHREAD, &action->thread_flags)) in irq_finalize_oneshot()
761 desc->threads_oneshot &= ~action->thread_mask; in irq_finalize_oneshot()
777 irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action) in irq_thread_check_affinity() argument
782 if (!test_and_clear_bit(IRQTF_AFFINITY, &action->thread_flags)) in irq_thread_check_affinity()
790 set_bit(IRQTF_AFFINITY, &action->thread_flags); in irq_thread_check_affinity()
811 irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action) { } in irq_thread_check_affinity() argument
821 irq_forced_thread_fn(struct irq_desc *desc, struct irqaction *action) in irq_forced_thread_fn() argument
826 ret = action->thread_fn(action->irq, action->dev_id); in irq_forced_thread_fn()
827 irq_finalize_oneshot(desc, action); in irq_forced_thread_fn()
838 struct irqaction *action) in irq_thread_fn() argument
842 ret = action->thread_fn(action->irq, action->dev_id); in irq_thread_fn()
843 irq_finalize_oneshot(desc, action); in irq_thread_fn()
857 struct irqaction *action; in irq_thread_dtor() local
862 action = kthread_data(tsk); in irq_thread_dtor()
865 tsk->comm, tsk->pid, action->irq); in irq_thread_dtor()
868 desc = irq_to_desc(action->irq); in irq_thread_dtor()
873 if (test_and_clear_bit(IRQTF_RUNTHREAD, &action->thread_flags)) in irq_thread_dtor()
877 irq_finalize_oneshot(desc, action); in irq_thread_dtor()
886 struct irqaction *action = data; in irq_thread() local
887 struct irq_desc *desc = irq_to_desc(action->irq); in irq_thread()
889 struct irqaction *action); in irq_thread()
892 &action->thread_flags)) in irq_thread()
900 irq_thread_check_affinity(desc, action); in irq_thread()
902 while (!irq_wait_for_interrupt(action)) { in irq_thread()
905 irq_thread_check_affinity(desc, action); in irq_thread()
907 action_ret = handler_fn(desc, action); in irq_thread()
936 struct irqaction *action; in irq_wake_thread() local
943 for (action = desc->action; action; action = action->next) { in irq_wake_thread()
944 if (action->dev_id == dev_id) { in irq_wake_thread()
945 if (action->thread) in irq_wake_thread()
946 __irq_wake_thread(desc, action); in irq_wake_thread()
1088 old_ptr = &desc->action; in __setup_irq()
1327 struct irqaction *action, **action_ptr; in __free_irq() local
1341 action_ptr = &desc->action; in __free_irq()
1343 action = *action_ptr; in __free_irq()
1345 if (!action) { in __free_irq()
1352 if (action->dev_id == dev_id) in __free_irq()
1354 action_ptr = &action->next; in __free_irq()
1358 *action_ptr = action->next; in __free_irq()
1360 irq_pm_remove_action(desc, action); in __free_irq()
1363 if (!desc->action) { in __free_irq()
1376 unregister_handler_proc(irq, action); in __free_irq()
1390 if (action->flags & IRQF_SHARED) { in __free_irq()
1392 action->handler(irq, dev_id); in __free_irq()
1397 if (action->thread) { in __free_irq()
1398 kthread_stop(action->thread); in __free_irq()
1399 put_task_struct(action->thread); in __free_irq()
1403 return action; in __free_irq()
1500 struct irqaction *action; in request_threaded_irq() local
1532 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_threaded_irq()
1533 if (!action) in request_threaded_irq()
1536 action->handler = handler; in request_threaded_irq()
1537 action->thread_fn = thread_fn; in request_threaded_irq()
1538 action->flags = irqflags; in request_threaded_irq()
1539 action->name = devname; in request_threaded_irq()
1540 action->dev_id = dev_id; in request_threaded_irq()
1543 retval = __setup_irq(irq, desc, action); in request_threaded_irq()
1547 kfree(action); in request_threaded_irq()
1656 struct irqaction *action; in __free_percpu_irq() local
1666 action = desc->action; in __free_percpu_irq()
1667 if (!action || action->percpu_dev_id != dev_id) { in __free_percpu_irq()
1679 desc->action = NULL; in __free_percpu_irq()
1683 unregister_handler_proc(irq, action); in __free_percpu_irq()
1686 return action; in __free_percpu_irq()
1771 struct irqaction *action; in request_percpu_irq() local
1783 action = kzalloc(sizeof(struct irqaction), GFP_KERNEL); in request_percpu_irq()
1784 if (!action) in request_percpu_irq()
1787 action->handler = handler; in request_percpu_irq()
1788 action->flags = IRQF_PERCPU | IRQF_NO_SUSPEND; in request_percpu_irq()
1789 action->name = devname; in request_percpu_irq()
1790 action->percpu_dev_id = dev_id; in request_percpu_irq()
1793 retval = __setup_irq(irq, desc, action); in request_percpu_irq()
1797 kfree(action); in request_percpu_irq()