diff options
author | Robert Morris <[email protected]> | 2019-07-11 10:38:56 -0400 |
---|---|---|
committer | Robert Morris <[email protected]> | 2019-07-11 10:38:56 -0400 |
commit | 6bbc2b2245c5b006824eb42ef33d5b296158a693 (patch) | |
tree | 0ea3426449bcccc744ba5f009ebbc166021c9674 /kernel/trap.c | |
parent | 7797a384236cee31b924d27d8f814ef9543662cd (diff) | |
download | xv6-labs-6bbc2b2245c5b006824eb42ef33d5b296158a693.tar.gz xv6-labs-6bbc2b2245c5b006824eb42ef33d5b296158a693.tar.bz2 xv6-labs-6bbc2b2245c5b006824eb42ef33d5b296158a693.zip |
cosmetic changes
Diffstat (limited to 'kernel/trap.c')
-rw-r--r-- | kernel/trap.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/kernel/trap.c b/kernel/trap.c index eb7f6cf..ea5799f 100644 --- a/kernel/trap.c +++ b/kernel/trap.c @@ -158,6 +158,15 @@ kerneltrap() w_sstatus(sstatus); } +void +clockintr() +{ + acquire(&tickslock); + ticks++; + wakeup(&ticks); + release(&tickslock); +} + // check if it's an external interrupt or software interrupt, // and handle it. // returns 2 if timer interrupt, @@ -182,16 +191,15 @@ devintr() plic_complete(irq); return 1; } else if(scause == 0x8000000000000001){ - // software interrupt from a machine-mode timer interrupt. + // software interrupt from a machine-mode timer interrupt, + // forwarded by machinevec in kernelvec.S. if(cpuid() == 0){ - acquire(&tickslock); - ticks++; - wakeup(&ticks); - release(&tickslock); + clockintr(); } - // acknowledge. + // acknowledge the software interrupt by clearing + // the SSIP bit in sip. w_sip(r_sip() & ~2); return 2; |