550W Document
550W, a high-end OS
irq.c 文件参考
#include <asm/atomic.h>
#include <asm/pgtable.h>
#include <asm/privileged.h>
#include <asm/sbi.h>
#include <asm/syscall.h>
#include <drivers/plic/plic.h>
#include <drivers/virtio/virtio.h>
#include <lib/assert.h>
#include <lib/list.h>
#include <lib/stdio.h>
#include <os/irq.h>
#include <os/smp.h>
#include <os/syscall.h>
irq.c 的引用(Include)关系图:

函数

long sys_undefined_syscall (regs_context_t *regs, uint64_t interrupt, uint64_t cause)
 
void k_init_syscall (void)
 
void reset_irq_timer ()
 
void user_interrupt_helper (regs_context_t *regs, uint64_t stval, uint64_t cause, uint64_t cpuid)
 
void kernel_interrupt_helper (regs_context_t *regs, uint64_t stval, uint64_t cause, uint64_t cpuid)
 
void handle_int_irq (regs_context_t *regs, uint64_t interrupt, uint64_t cause, uint64_t cpuid)
 
void handle_ext_irq (regs_context_t *regs, uint64_t interrupt, uint64_t cause, uint64_t cpuid)
 
void handler_virtio_intr (regs_context_t *regs, uint64_t stval, uint64_t cause, uint64_t cpuid)
 
PTEcheck_pf (uint64_t va, PTE *pgdir)
 
void handle_disk_exc (uint64_t stval, PTE *pte_addr)
 
void handle_pf_exc (regs_context_t *regs, uint64_t stval, uint64_t cause, uint64_t cpuid)
 
void handle_other (regs_context_t *regs, uint64_t stval, uint64_t cause, uint64_t cpuid)
 
void k_init_exception ()
 

变量

handler_t irq_table [IRQC_COUNT]
 
handler_t exc_table [EXCC_COUNT]
 
handler_t irq_ext_table [PLIC_NR_IRQS]
 
uintptr_t riscv_dtb
 
spin_lock_t kernel_exception_lock = {.flag = UNLOCKED}
 

函数说明

◆ check_pf()

PTE* check_pf ( uint64_t  va,
PTE pgdir 
)

◆ handle_disk_exc()

void handle_disk_exc ( uint64_t  stval,
PTE pte_addr 
)

◆ handle_ext_irq()

void handle_ext_irq ( regs_context_t regs,
uint64_t  interrupt,
uint64_t  cause,
uint64_t  cpuid 
)

◆ handle_int_irq()

void handle_int_irq ( regs_context_t regs,
uint64_t  interrupt,
uint64_t  cause,
uint64_t  cpuid 
)

◆ handle_other()

void handle_other ( regs_context_t regs,
uint64_t  stval,
uint64_t  cause,
uint64_t  cpuid 
)

◆ handle_pf_exc()

void handle_pf_exc ( regs_context_t regs,
uint64_t  stval,
uint64_t  cause,
uint64_t  cpuid 
)

◆ handler_virtio_intr()

void handler_virtio_intr ( regs_context_t regs,
uint64_t  stval,
uint64_t  cause,
uint64_t  cpuid 
)

◆ k_init_exception()

void k_init_exception ( )

◆ k_init_syscall()

void k_init_syscall ( void  )

◆ kernel_interrupt_helper()

void kernel_interrupt_helper ( regs_context_t regs,
uint64_t  stval,
uint64_t  cause,
uint64_t  cpuid 
)

◆ reset_irq_timer()

void reset_irq_timer ( )

◆ sys_undefined_syscall()

long sys_undefined_syscall ( regs_context_t regs,
uint64_t  interrupt,
uint64_t  cause 
)

◆ user_interrupt_helper()

void user_interrupt_helper ( regs_context_t regs,
uint64_t  stval,
uint64_t  cause,
uint64_t  cpuid 
)

变量说明

◆ exc_table

handler_t exc_table[EXCC_COUNT]

◆ irq_ext_table

handler_t irq_ext_table[PLIC_NR_IRQS]

◆ irq_table

handler_t irq_table[IRQC_COUNT]

◆ kernel_exception_lock

spin_lock_t kernel_exception_lock = {.flag = UNLOCKED}

◆ riscv_dtb

uintptr_t riscv_dtb