Subversion Repositories shark

Rev

Rev 521 | Rev 847 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
495 giacomo 1
#include <linuxcomp.h>
2
 
3
#include <asm/ptrace.h>
4
#include <asm-generic/errno-base.h>
5
#include <linux/kernel.h>
6
 
526 giacomo 7
extern void *int_arg_table[MAX_INT_TABLE];
8
extern void *int_func_table[MAX_INT_TABLE];
513 giacomo 9
int intr_count = 0;
495 giacomo 10
 
11
/*
12
 * Generic Linux interrupt handler.
13
 */
513 giacomo 14
void linux_intr(int irq)
495 giacomo 15
{
513 giacomo 16
        struct pt_regs regs;
17
 
18
        intr_count++;  
521 mauro 19
 
513 giacomo 20
        if (int_func_table[irq] != NULL)
21
                (* (void (*)(int, void *dev_id, struct pt_regs *))int_func_table[irq])(irq, int_arg_table[irq], &regs);
22
 
23
        intr_count--;
24
 
495 giacomo 25
}
26
 
27
/*
28
 * Attach a handler to an IRQ.
29
 */
30
int request_irq(unsigned int irq, void (*handler)(int, void *dev_id, struct pt_regs *), unsigned long flags, const char *device, void *dev_id)
31
{
513 giacomo 32
        shark_handler_set(irq, (void *)(handler), dev_id);
495 giacomo 33
        return 0;
34
}
35
 
36
/*
37
 * Deallocate an irq.
38
 */
39
void free_irq(unsigned int irq, void *a)
40
{
513 giacomo 41
 
495 giacomo 42
        shark_handler_remove(irq);
513 giacomo 43
 
495 giacomo 44
}