X-Git-Url: http://akaros.cs.berkeley.edu/gitweb/?p=akaros.git;a=blobdiff_plain;f=kern%2Finclude%2Ftrap.h;h=60e25d5d8e3503b8b66e9108a91a1f63c681905b;hp=e814b923ee109eb0359a47905678bf29b70d27a9;hb=1e6c1f98f2409d4af5cb7852ff483373d6775043;hpb=15a4ee7a8f8f94f7f219cccaf10082c85cf3c43d diff --git a/kern/include/trap.h b/kern/include/trap.h index e814b92..60e25d5 100644 --- a/kern/include/trap.h +++ b/kern/include/trap.h @@ -11,16 +11,10 @@ // func ptr for interrupt service routines typedef void (*isr_t)(struct hw_trapframe *hw_tf, void *data); -struct irq_handler { - isr_t isr; - void *data; - struct irq_handler *next; -}; void idt_init(void); -void register_raw_irq(unsigned int vector, isr_t handler, void *data); -void unregister_raw_irq(unsigned int vector, isr_t handler, void *data); -int register_dev_irq(int irq, isr_t handler, void *irq_arg, uint32_t tbdf); +int register_irq(int irq, isr_t handler, void *irq_arg, uint32_t tbdf); +int route_irqs(int cpu_vec, int coreid); void print_trapframe(struct hw_trapframe *hw_tf); void print_user_ctx(struct user_context *ctx); /* Generic per-core timer interrupt handler. set_percore_timer() will fire the @@ -36,10 +30,6 @@ extern inline void init_fp_state(void); void set_stack_top(uintptr_t stacktop); uintptr_t get_stack_top(void); -/* It's important that this is inline and that ctx is not a stack variable */ -static inline void save_kernel_ctx(struct kernel_ctx *ctx) - __attribute__((always_inline, returns_twice)); -void pop_kernel_ctx(struct kernel_ctx *ctx) __attribute__((noreturn)); void send_nmi(uint32_t os_coreid); void reflect_unhandled_trap(unsigned int trap_nr, unsigned int err, unsigned long aux); @@ -87,6 +77,7 @@ void kernel_msg_init(void); uint32_t send_kernel_message(uint32_t dst, amr_t pc, long arg0, long arg1, long arg2, int type); void handle_kmsg_ipi(struct hw_trapframe *hw_tf, void *data); +bool has_routine_kmsg(void); void process_routine_kmsg(void); void print_kmsgs(uint32_t coreid);