Rev 521 |
Rev 856 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
#include <linuxcomp.h>
#include <asm/ptrace.h>
#include <asm-generic/errno-base.h>
#include <linux/kernel.h>
extern void *int_arg_table[MAX_INT_TABLE];
extern void *int_func_table[MAX_INT_TABLE];
int intr_count = 0;
/*
* Generic Linux interrupt handler.
*/
void linux_intr(int irq)
{
struct pt_regs regs;
intr_count++;
if (int_func_table[irq] != NULL)
(* (void (*)(int, void *dev_id, struct pt_regs *))int_func_table[irq])(irq, int_arg_table[irq], ®s);
intr_count--;
}
/*
* Attach a handler to an IRQ.
*/
int request_irq(unsigned int irq, void (*handler)(int, void *dev_id, struct pt_regs *), unsigned long flags, const char *device, void *dev_id)
{
shark_handler_set(irq, (void *)(handler), dev_id);
return 0;
}
/*
* Deallocate an irq.
*/
void free_irq(unsigned int irq, void *a)
{
shark_handler_remove(irq);
}