Scroll to navigation

STRUCT IRQ_CHIP(9) Structures STRUCT IRQ_CHIP(9)

NAME

struct_irq_chip - hardware interrupt chip descriptor

SYNOPSIS

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; };

MEMBERS

struct device * parent_device

pointer to parent device for irqchip

const char * name

name for /proc/interrupts

unsigned int (*)(struct irq_data *data) irq_startup

start up the interrupt (defaults to ->enable if NULL)

void (*)(struct irq_data *data) irq_shutdown

shut down the interrupt (defaults to ->disable if NULL)

void (*)(struct irq_data *data) irq_enable

enable the interrupt (defaults to chip->unmask if NULL)

void (*)(struct irq_data *data) irq_disable

disable the interrupt

void (*)(struct irq_data *data) irq_ack

start of a new interrupt

void (*)(struct irq_data *data) irq_mask

mask an interrupt source

void (*)(struct irq_data *data) irq_mask_ack

ack and mask an interrupt source

void (*)(struct irq_data *data) irq_unmask

unmask an interrupt source

void (*)(struct irq_data *data) irq_eoi

end of interrupt

int (*)(struct irq_data *data, const struct cpumask *dest, bool force) irq_set_affinity

set the CPU affinity on SMP machines

int (*)(struct irq_data *data) irq_retrigger

resend an IRQ to the CPU

int (*)(struct irq_data *data, unsigned int flow_type) irq_set_type

set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQ

int (*)(struct irq_data *data, unsigned int on) irq_set_wake

enable/disable power-management wake-on of an IRQ

void (*)(struct irq_data *data) irq_bus_lock

function to lock access to slow bus (i2c) chips

void (*)(struct irq_data *data) irq_bus_sync_unlock

function to sync and unlock slow bus (i2c) chips

void (*)(struct irq_data *data) irq_cpu_online

configure an interrupt source for a secondary CPU

void (*)(struct irq_data *data) irq_cpu_offline

un-configure an interrupt source for a secondary CPU

void (*)(struct irq_data *data) irq_suspend

function called from core code on suspend once per chip, when one or more interrupts are installed

void (*)(struct irq_data *data) irq_resume

function called from core code on resume once per chip, when one ore more interrupts are installed

void (*)(struct irq_data *data) irq_pm_shutdown

function called from core code on shutdown once per chip

void (*)(struct irq_data *data) irq_calc_mask

Optional function to set irq_data.mask for special cases

void (*)(struct irq_data *data, struct seq_file *p) irq_print_chip

optional to print special chip info in show_interrupts

int (*)(struct irq_data *data) irq_request_resources

optional to request resources before calling any other callback related to this irq

void (*)(struct irq_data *data) irq_release_resources

optional to release resources acquired with irq_request_resources

void (*)(struct irq_data *data, struct msi_msg *msg) irq_compose_msi_msg

optional to compose message content for MSI

void (*)(struct irq_data *data, struct msi_msg *msg) irq_write_msi_msg

optional to write message content for MSI

int (*)(struct irq_data *data, enum irqchip_irq_state which, bool *state) irq_get_irqchip_state

return the internal state of an interrupt

int (*)(struct irq_data *data, enum irqchip_irq_state which, bool state) irq_set_irqchip_state

set the internal state of a interrupt

int (*)(struct irq_data *data, void *vcpu_info) irq_set_vcpu_affinity

optional to target a vCPU in a virtual machine

void (*)(struct irq_data *data, unsigned int cpu) ipi_send_single

send a single IPI to destination cpus

void (*)(struct irq_data *data, const struct cpumask *dest) ipi_send_mask

send an IPI to destination cpus in cpumask

unsigned long flags

chip specific flags

AUTHORS

Thomas Gleixner <tglx@linutronix.de>

Author.

Ingo Molnar <mingo@elte.hu>

Author.

COPYRIGHT

June 2017 Kernel Hackers Manual 4.11