Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Functions
irq.c File Reference
#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
 

Functions

int show_interrupts (struct seq_file *p, void *v)
 
asmlinkage void do_softirq (void)
 
 DEFINE_SPINLOCK (ext_int_hash_lock)
 
int register_external_interrupt (u16 code, ext_int_handler_t handler)
 
 EXPORT_SYMBOL (register_external_interrupt)
 
int unregister_external_interrupt (u16 code, ext_int_handler_t handler)
 
 EXPORT_SYMBOL (unregister_external_interrupt)
 
void __irq_entry do_extint (struct pt_regs *regs, struct ext_code ext_code, unsigned int param32, unsigned long param64)
 
void __init init_IRQ (void)
 
void service_subclass_irq_register (void)
 
 EXPORT_SYMBOL (service_subclass_irq_register)
 
void service_subclass_irq_unregister (void)
 
 EXPORT_SYMBOL (service_subclass_irq_unregister)
 
void measurement_alert_subclass_register (void)
 
 EXPORT_SYMBOL (measurement_alert_subclass_register)
 
void measurement_alert_subclass_unregister (void)
 
 EXPORT_SYMBOL (measurement_alert_subclass_unregister)
 

Function Documentation

DEFINE_SPINLOCK ( ext_int_hash_lock  )
void __irq_entry do_extint ( struct pt_regs regs,
struct ext_code ext_code  ,
unsigned int  param32,
unsigned long  param64 
)

Definition at line 210 of file irq.c.

asmlinkage void do_softirq ( void  )

Definition at line 98 of file irq.c.

EXPORT_SYMBOL ( register_external_interrupt  )
EXPORT_SYMBOL ( unregister_external_interrupt  )
EXPORT_SYMBOL ( service_subclass_irq_register  )
EXPORT_SYMBOL ( service_subclass_irq_unregister  )
void __init init_IRQ ( void  )

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.

Definition at line 237 of file irq.c.

void measurement_alert_subclass_register ( void  )

Definition at line 268 of file irq.c.

void measurement_alert_subclass_unregister ( void  )

Definition at line 278 of file irq.c.

int register_external_interrupt ( u16  code,
ext_int_handler_t  handler 
)

Definition at line 172 of file irq.c.

void service_subclass_irq_register ( void  )

Definition at line 245 of file irq.c.

void service_subclass_irq_unregister ( void  )

Definition at line 255 of file irq.c.

int show_interrupts ( struct seq_file p,
void v 
)

Definition at line 67 of file irq.c.

int unregister_external_interrupt ( u16  code,
ext_int_handler_t  handler 
)

Definition at line 192 of file irq.c.