Main Page | Modules | Class List | File List | Class Members | File Members | Related Pages

Interrupt Handling
[Linux DDE Common]

This module emulates the interrupt handling inside the Linux kernel. More...

Undocumented

void disable_irq (unsigned int irq_num)
int probe_irq_on (unsigned long val)
 Old probing of interrupts.

int probe_irq_off (unsigned long val)
 Old probing of interrupts.

void disable_irq_nosync (unsigned int irq_num)
void enable_irq (unsigned int irq_num)

Functions

int request_irq (unsigned int irq, void(*handler)(int, void *, struct pt_regs *), unsigned long flags, const char *dev_name, void *dev_id)
 Request Interrupt.

void free_irq (unsigned int irq, void *dev_id)
 Release Interrupt.

int l4dde_irq_init (int omega0)
 Initalize IRQ handling.

l4_threadid_t l4dde_irq_l4_id (int irq)
 Get IRQ thread number.


Detailed Description

This module emulates the interrupt handling inside the Linux kernel.

It is derived from several existing DROPS emulation modules.

There are 2 different approaches to manage interrupts under DROPS/L4: the root resource manager RMGR or Omega0 (resp. the L4Env I/O Server). The Interrupt Handling Module has to be initialized via #irq_init() specifying the environment you are using as parameter.

Interrupts are executed each in its own thread that is created using the L4Env Thread library.

Requirements: (additionally to Global Requirements)

Configuration:


Function Documentation

void free_irq unsigned int  irq,
void *  dev_id
 

Release Interrupt.

Parameters:
irq interrupt number
dev_id cookie passed back to handler

Todo:
Stop IRQ-Thread

Release IRQ

Definition at line 380 of file irq.c.

References irq_desc::active, DEBUG_IRQ, and handlers.

int l4dde_irq_init int  omega0  ) 
 

Initalize IRQ handling.

Parameters:
omega0 If set use Omega0 interrupt handling - if unset use RMGR directly
Returns:
0 on success; negative error code otherwise

Definition at line 458 of file irq.c.

References _initialized, handlers, irq_desc::num, and use_omega0.

l4_threadid_t l4dde_irq_l4_id int  irq  ) 
 

Get IRQ thread number.

Parameters:
irq IRQ number the irq-thread used with request_irq()
Returns:
thread-id threadid of IRQ thread, or L4_INVALID_ID if not initialized

Definition at line 482 of file irq.c.

References irq_desc::active, and handlers.

int probe_irq_off unsigned long  val  ) 
 

Old probing of interrupts.

Todo:
implementation

Definition at line 422 of file irq.c.

int probe_irq_on unsigned long  val  ) 
 

Old probing of interrupts.

Todo:
implementation

Definition at line 412 of file irq.c.

int request_irq unsigned int  irq,
void(*  handler)(int, void *, struct pt_regs *),
unsigned long  flags,
const char *  dev_name,
void *  dev_id
 

Request Interrupt.

Parameters:
irq interrupt number
handler interrupt handler -> top half
flags interrupt handling flags (SA_SHIRQ, ...)
dev_name device name
dev_id cookie passed back to handler
Returns:
0 on success; error code otherwise

Todo:
reattachment

Definition at line 307 of file irq.c.

References irq_desc::active, dde_irq_thread(), DEBUG_ERRORS, DEBUG_IRQ, irq_desc::dev_id, irq_desc::dev_name, irq_desc::flags, irq_desc::handler, handlers, and irq_desc::t.


Linux DDE, written by Christian Helmuth  © 2003 Technische Universitaet Dresden