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

irq.c File Reference

IRQ handling and request. More...

#include <l4/env/errno.h>
#include <l4/omega0/client.h>
#include <l4/rmgr/librmgr.h>
#include <l4/util/irq.h>
#include <l4/util/thread.h>
#include <l4/thread/thread.h>
#include <l4/lock/lock.h>
#include <l4/dde_linux/dde.h>
#include <linux/sched.h>
#include <asm/hardirq.h>
#include <asm/irq.h>
#include "__config.h"
#include "internal.h"

Go to the source code of this file.

Classes

struct  irq_desc
 IRQ descriptor array. More...


Omega0 specific routines

#define OM_MASK   0x00000001
#define OM_UNMASK   0x00000002
#define OM_CONSUME   0x00000004
int __omega0_attach (unsigned int irq, int *handle)
 Attach IRQ line.

int __omega0_wait (unsigned int irq, int handle, unsigned int flags)
 Wait for IRQ notification.


Module Variables

int l4dde_irq_set_prio (unsigned int irq, unsigned prio)
irq_desc handlers [NR_IRQS]
 IRQ descriptor array.

int use_omega0 = 0
 Usage flag.

int _initialized = 0
 initialization flag


RMGR specific routines and PIC handling

void __enable_irq (unsigned int irq)
 Enable IRQ.

void __disable_irq (unsigned int irq)
 Disable IRQ.

void __ack_irq (unsigned int irq)
 Disable and acknowledge IRQ.


Undocumented

void disable_irq (unsigned int irq_num)
void disable_irq_nosync (unsigned int irq_num)
void enable_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.


Functions

void dde_irq_thread (struct irq_desc *irq_desc)
 IRQ handler thread.

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

IRQ handling and request.

Date:
08/28/2003
Author:
Christian Helmuth <ch12@os.inf.tu-dresden.de>

Definition in file irq.c.


Function Documentation

void __ack_irq unsigned int  irq  )  [inline, static]
 

Disable and acknowledge IRQ.

Parameters:
irq IRQ number

Definition at line 189 of file irq.c.

Referenced by dde_irq_thread().

void __disable_irq unsigned int  irq  )  [inline, static]
 

Disable IRQ.

Parameters:
irq IRQ number

Definition at line 176 of file irq.c.

Referenced by dde_irq_thread().

void __enable_irq unsigned int  irq  )  [inline, static]
 

Enable IRQ.

Parameters:
irq IRQ number

Definition at line 163 of file irq.c.

Referenced by dde_irq_thread().

int __omega0_attach unsigned int  irq,
int *  handle
[inline, static]
 

Attach IRQ line.

Parameters:
irq IRQ number
Return values:
handle IRQ handle
Returns:
0 on success (attached interrupt), -1 if attach failed.

Definition at line 110 of file irq.c.

Referenced by dde_irq_thread().

int __omega0_wait unsigned int  irq,
int  handle,
unsigned int  flags
[inline, static]
 

Wait for IRQ notification.

Parameters:
irq IRQ number
handle IRQ line handle
flags Flags:
  • OM_MASK request IRQ mask
  • OM_UNMASK request IRQ unmask
  • OM_CONSUME IRQ consumed

Definition at line 135 of file irq.c.

Referenced by dde_irq_thread().

void dde_irq_thread struct irq_desc irq_desc  )  [static]
 

IRQ handler thread.

Parameters:
irq_desc IRQ handling descriptor (IRQ number and handler routine)

Definition at line 199 of file irq.c.

References __ack_irq(), __disable_irq(), __enable_irq(), __omega0_attach(), __omega0_wait(), irq_desc::active, DEBUG_ERRORS, DEBUG_IRQ, DEBUG_MSG, irq_desc::dev_id, irq_desc::handler, l4dde_process_add_worker(), irq_desc::num, and use_omega0.

Referenced by request_irq().


Variable Documentation

struct irq_desc handlers[NR_IRQS] [static]
 

IRQ descriptor array.

Todo:
what about IRQ sharing?

Referenced by free_irq(), l4dde_irq_init(), l4dde_irq_l4_id(), and request_irq().

int use_omega0 = 0 [static]
 

Usage flag.

If 1 use Omega0 and if 0 use RMGR for interrupts.

Definition at line 81 of file irq.c.

Referenced by dde_irq_thread(), and l4dde_irq_init().


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