diff options
author | jake <jake@FreeBSD.org> | 2002-05-25 02:39:28 +0000 |
---|---|---|
committer | jake <jake@FreeBSD.org> | 2002-05-25 02:39:28 +0000 |
commit | 78f440201e8d056a39937b2cff8f34d7786c994b (patch) | |
tree | 1abc8dc16537e4b71c9504403427fec8cfd9ffb1 /sys/sparc64/include/intr_machdep.h | |
parent | 36a393821ffd997a4115f5d346498a0da6a4493c (diff) | |
download | FreeBSD-src-78f440201e8d056a39937b2cff8f34d7786c994b.zip FreeBSD-src-78f440201e8d056a39937b2cff8f34d7786c994b.tar.gz |
Convert the interrupt queue from an array to a linked list. Implement
intr_dequeue in asm so that it can easily be modified to do light weight
context switching.
Diffstat (limited to 'sys/sparc64/include/intr_machdep.h')
-rw-r--r-- | sys/sparc64/include/intr_machdep.h | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/sys/sparc64/include/intr_machdep.h b/sys/sparc64/include/intr_machdep.h index c8e36ca..a08a9fc 100644 --- a/sys/sparc64/include/intr_machdep.h +++ b/sys/sparc64/include/intr_machdep.h @@ -29,11 +29,12 @@ #ifndef _MACHINE_INTR_MACHDEP_H_ #define _MACHINE_INTR_MACHDEP_H_ -#define NPIL (1 << 4) -#define NIV (1 << 11) +#define IRSR_BUSY (1 << 5) -#define IQ_SIZE (NPIL * 2) -#define IQ_MASK (IQ_SIZE - 1) +#define PIL_MAX (1 << 4) +#define IV_MAX (1 << 11) + +#define IR_FREE (PIL_MAX * 2) #define IH_SHIFT PTR_SHIFT #define IQE_SHIFT 5 @@ -47,27 +48,19 @@ #define PIL_FAST 13 /* fast interrupts */ #define PIL_TICK 14 -struct trapframe; - typedef void ih_func_t(struct trapframe *); typedef void iv_func_t(void *); -struct iqe { - u_int iqe_tag; - u_int iqe_pri; - u_long iqe_vec; - iv_func_t *iqe_func; - void *iqe_arg; -}; +struct ithd; -struct intr_queue { - struct iqe iq_queue[IQ_SIZE]; /* must be first */ - u_long iq_head; - u_long iq_tail; +struct intr_request { + struct intr_request *ir_next; + iv_func_t *ir_func; + void *ir_arg; + u_int ir_vec; + u_int ir_pri; }; -struct ithd; - struct intr_vector { iv_func_t *iv_func; void *iv_arg; |