Linux Kernel
3.7.1
|
#include <linux/kernel_stat.h>
#include <linux/interrupt.h>
#include <linux/seq_file.h>
#include <linux/proc_fs.h>
#include <linux/profile.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/ftrace.h>
#include <linux/errno.h>
#include <linux/slab.h>
#include <linux/cpu.h>
#include <asm/irq_regs.h>
#include <asm/cputime.h>
#include <asm/lowcore.h>
#include <asm/irq.h>
#include "entry.h"
Go to the source code of this file.
Data Structures | |
struct | irq_class |
struct | ext_int_info |
DEFINE_SPINLOCK | ( | ext_int_hash_lock | ) |
asmlinkage void do_softirq | ( | void | ) |
EXPORT_SYMBOL | ( | register_external_interrupt | ) |
EXPORT_SYMBOL | ( | unregister_external_interrupt | ) |
EXPORT_SYMBOL | ( | service_subclass_irq_register | ) |
EXPORT_SYMBOL | ( | service_subclass_irq_unregister | ) |
EXPORT_SYMBOL | ( | measurement_alert_subclass_register | ) |
EXPORT_SYMBOL | ( | measurement_alert_subclass_unregister | ) |
The hexagon core comes with a first-level interrupt controller with 32 total possible interrupts. When the core is embedded into different systems/platforms, it is typically wrapped by macro cells that provide one or more second-level interrupt controllers that are cascaded into one or more of the first-level interrupts handled here. The precise wiring of these other irqs varies from platform to platform, and are set up & configured in the platform-specific files.
The first-level interrupt controller is wrapped by the VM, which virtualizes the interrupt controller for us. It provides a very simple, fast & efficient API, and so the fasteoi handler is appropriate for this case.
int register_external_interrupt | ( | u16 | code, |
ext_int_handler_t | handler | ||
) |
int unregister_external_interrupt | ( | u16 | code, |
ext_int_handler_t | handler | ||
) |