'\" t .\" Title: struct irq_chip .\" Author: .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: January 2017 .\" Manual: Structures .\" Source: Kernel Hackers Manual 4.8.15 .\" Language: English .\" .TH "STRUCT IRQ_CHIP" "9" "January 2017" "Kernel Hackers Manual 4\&.8\&." "Structures" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" struct_irq_chip \- hardware interrupt chip descriptor .SH "SYNOPSIS" .sp .nf struct irq_chip { struct device * parent_device; const char * name; unsigned int (* irq_startup) (struct irq_data *data); void (* irq_shutdown) (struct irq_data *data); void (* irq_enable) (struct irq_data *data); void (* irq_disable) (struct irq_data *data); void (* irq_ack) (struct irq_data *data); void (* irq_mask) (struct irq_data *data); void (* irq_mask_ack) (struct irq_data *data); void (* irq_unmask) (struct irq_data *data); void (* irq_eoi) (struct irq_data *data); int (* irq_set_affinity) (struct irq_data *data, const struct cpumask *dest, bool force); int (* irq_retrigger) (struct irq_data *data); int (* irq_set_type) (struct irq_data *data, unsigned int flow_type); int (* irq_set_wake) (struct irq_data *data, unsigned int on); void (* irq_bus_lock) (struct irq_data *data); void (* irq_bus_sync_unlock) (struct irq_data *data); void (* irq_cpu_online) (struct irq_data *data); void (* irq_cpu_offline) (struct irq_data *data); void (* irq_suspend) (struct irq_data *data); void (* irq_resume) (struct irq_data *data); void (* irq_pm_shutdown) (struct irq_data *data); void (* irq_calc_mask) (struct irq_data *data); void (* irq_print_chip) (struct irq_data *data, struct seq_file *p); int (* irq_request_resources) (struct irq_data *data); void (* irq_release_resources) (struct irq_data *data); void (* irq_compose_msi_msg) (struct irq_data *data, struct msi_msg *msg); void (* irq_write_msi_msg) (struct irq_data *data, struct msi_msg *msg); int (* irq_get_irqchip_state) (struct irq_data *data, enum irqchip_irq_state which, bool *state); int (* irq_set_irqchip_state) (struct irq_data *data, enum irqchip_irq_state which, bool state); int (* irq_set_vcpu_affinity) (struct irq_data *data, void *vcpu_info); void (* ipi_send_single) (struct irq_data *data, unsigned int cpu); void (* ipi_send_mask) (struct irq_data *data, const struct cpumask *dest); unsigned long flags; }; .fi .SH "MEMBERS" .PP parent_device .RS 4 pointer to parent device for irqchip .RE .PP name .RS 4 name for /proc/interrupts .RE .PP irq_startup .RS 4 start up the interrupt (defaults to \->enable if NULL) .RE .PP irq_shutdown .RS 4 shut down the interrupt (defaults to \->disable if NULL) .RE .PP irq_enable .RS 4 enable the interrupt (defaults to chip\->unmask if NULL) .RE .PP irq_disable .RS 4 disable the interrupt .RE .PP irq_ack .RS 4 start of a new interrupt .RE .PP irq_mask .RS 4 mask an interrupt source .RE .PP irq_mask_ack .RS 4 ack and mask an interrupt source .RE .PP irq_unmask .RS 4 unmask an interrupt source .RE .PP irq_eoi .RS 4 end of interrupt .RE .PP irq_set_affinity .RS 4 set the CPU affinity on SMP machines .RE .PP irq_retrigger .RS 4 resend an IRQ to the CPU .RE .PP irq_set_type .RS 4 set the flow type (IRQ_TYPE_LEVEL/etc\&.) of an IRQ .RE .PP irq_set_wake .RS 4 enable/disable power\-management wake\-on of an IRQ .RE .PP irq_bus_lock .RS 4 function to lock access to slow bus (i2c) chips .RE .PP irq_bus_sync_unlock .RS 4 function to sync and unlock slow bus (i2c) chips .RE .PP irq_cpu_online .RS 4 configure an interrupt source for a secondary CPU .RE .PP irq_cpu_offline .RS 4 un\-configure an interrupt source for a secondary CPU .RE .PP irq_suspend .RS 4 function called from core code on suspend once per chip, when one or more interrupts are installed .RE .PP irq_resume .RS 4 function called from core code on resume once per chip, when one ore more interrupts are installed .RE .PP irq_pm_shutdown .RS 4 function called from core code on shutdown once per chip .RE .PP irq_calc_mask .RS 4 Optional function to set irq_data\&.mask for special cases .RE .PP irq_print_chip .RS 4 optional to print special chip info in show_interrupts .RE .PP irq_request_resources .RS 4 optional to request resources before calling any other callback related to this irq .RE .PP irq_release_resources .RS 4 optional to release resources acquired with irq_request_resources .RE .PP irq_compose_msi_msg .RS 4 optional to compose message content for MSI .RE .PP irq_write_msi_msg .RS 4 optional to write message content for MSI .RE .PP irq_get_irqchip_state .RS 4 return the internal state of an interrupt .RE .PP irq_set_irqchip_state .RS 4 set the internal state of a interrupt .RE .PP irq_set_vcpu_affinity .RS 4 optional to target a vCPU in a virtual machine .RE .PP ipi_send_single .RS 4 send a single IPI to destination cpus .RE .PP ipi_send_mask .RS 4 send an IPI to destination cpus in cpumask .RE .PP flags .RS 4 chip specific flags .RE .SH "AUTHORS" .PP \fBThomas Gleixner\fR <\&tglx@linutronix.de\&> .RS 4 Author. .RE .PP \fBIngo Molnar\fR <\&mingo@elte.hu\&> .RS 4 Author. .RE .SH "COPYRIGHT" .br