Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v4.14-rc4 54 lines 1.0 kB view raw
1/* 2 * Copyright IBM Corp. 2001,2008 3 * 4 * This file contains the IRQ specific code for hvc_console 5 * 6 */ 7 8#include <linux/interrupt.h> 9 10#include "hvc_console.h" 11 12static irqreturn_t hvc_handle_interrupt(int irq, void *dev_instance) 13{ 14 /* if hvc_poll request a repoll, then kick the hvcd thread */ 15 if (hvc_poll(dev_instance)) 16 hvc_kick(); 17 18 /* 19 * We're safe to always return IRQ_HANDLED as the hvcd thread will 20 * iterate through each hvc_struct. 21 */ 22 return IRQ_HANDLED; 23} 24 25/* 26 * For IRQ based systems these callbacks can be used 27 */ 28int notifier_add_irq(struct hvc_struct *hp, int irq) 29{ 30 int rc; 31 32 if (!irq) { 33 hp->irq_requested = 0; 34 return 0; 35 } 36 rc = request_irq(irq, hvc_handle_interrupt, hp->flags, 37 "hvc_console", hp); 38 if (!rc) 39 hp->irq_requested = 1; 40 return rc; 41} 42 43void notifier_del_irq(struct hvc_struct *hp, int irq) 44{ 45 if (!hp->irq_requested) 46 return; 47 free_irq(irq, hp); 48 hp->irq_requested = 0; 49} 50 51void notifier_hangup_irq(struct hvc_struct *hp, int irq) 52{ 53 notifier_del_irq(hp, irq); 54}