2,9 → 2,12 |
#include <stdlib.h> |
#include <kernel/func.h> |
#include <ll/sys/ll/event.h> |
#include <ll/i386/pic.h> |
|
#include <linuxcomp.h> |
|
//#define DEBUG_SHARK_GLUE |
|
PID intr_server = NIL; |
|
#define MAX_INT_LIST 50 |
82,8 → 85,10 |
|
no = get_interrupt_job(); |
|
if (no != -1 && no < 16) |
if (no != -1 && no < 16) { |
linux_intr(no); |
irq_unmask(no); |
} |
|
if (no != -1 && no >= 16) { |
linux_timer(no); |
142,6 → 147,10 |
|
int no = (int)arg,res; |
|
#ifdef DEBUG_SHARK_GLUE |
cprintf("(Timer Exe)"); |
#endif |
|
timer_table[no] = -2; |
|
res = add_interrupt_job(no); |
157,6 → 166,10 |
|
f = kern_fsave(); |
|
#ifdef DEBUG_SHARK_GLUE |
cprintf("(Timer Set)"); |
#endif |
|
i = get_free_timer_slot(); |
|
if (i == -1) { |
191,6 → 204,10 |
return -1; |
} |
|
#ifdef DEBUG_SHARK_GLUE |
cprintf("(Timer Del)"); |
#endif |
|
if (timer_table[index] != -1 && timer_table[index] != -2) { |
|
int_func_table[index] = NULL; |
211,9 → 228,14 |
|
void fast_call_intr(int no) |
{ |
|
int res; |
|
#ifdef DEBUG_SHARK_GLUE |
cprintf("(Int Exe)"); |
#endif |
|
irq_mask(no); |
|
res = add_interrupt_job(no); |
if (intr_server != NIL && res == 0) |
task_activate(intr_server); |