Changeset 3dea17f in mainline for kernel/genarch


Ignore:
Timestamp:
2006-10-19T17:33:08Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f0450658
Parents:
80ca47e
Message:

Add mutual exclusion to keyboard grab and release
functions on sparc64, ppc32, mips32 and ia64.

Location:
kernel/genarch/src/kbd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • kernel/genarch/src/kbd/ns16550.c

    r80ca47e r3dea17f  
    8181void ns16550_grab(void)
    8282{
     83        ipl_t ipl = interrupts_disable();
     84
    8385        ns16550_ier_write(&ns16550, IER_ERBFI);         /* enable receiver interrupt */
    8486       
     
    8688                (void) ns16550_rbr_read(&ns16550);
    8789
     90        spinlock_lock(&ns16550_irq.lock);
    8891        ns16550_irq.notif_cfg.notify = false;
     92        spinlock_unlock(&ns16550_irq.lock);
     93        interrupts_restore(ipl);
    8994}
    9095
     
    9297void ns16550_release(void)
    9398{
     99        ipl_t ipl = interrupts_disable();
     100        spinlock_lock(&ns16550_irq.lock);
    94101        if (ns16550_irq.notif_cfg.answerbox)
    95102                ns16550_irq.notif_cfg.notify = true;
     103        spinlock_unlock(&ns16550_irq.lock);
     104        interrupts_restore(ipl);
    96105}
    97106
  • kernel/genarch/src/kbd/z8530.c

    r80ca47e r3dea17f  
    7575void z8530_grab(void)
    7676{
     77        ipl_t ipl = interrupts_disable();
     78
    7779        (void) z8530_read_a(&z8530, RR8);
    7880
     
    9092        z8530_write_a(&z8530, WR9, WR9_MIE);            /* Master Interrupt Enable. */
    9193       
     94        spinlock_lock(&z8530_irq.lock);
    9295        z8530_irq.notif_cfg.notify = false;
     96        spinlock_unlock(&z8530_irq.lock);
     97        interrupts_restore(ipl);
    9398}
    9499
     
    96101void z8530_release(void)
    97102{
     103        ipl_t ipl = interrupts_disable();
     104        spinlock_lock(&z8530_irq.lock);
    98105        if (z8530_irq.notif_cfg.answerbox)
    99106                z8530_irq.notif_cfg.notify = true;
     107        spinlock_unlock(&z8530_irq.lock);
     108        interrupts_restore(ipl);
    100109}
    101110
Note: See TracChangeset for help on using the changeset viewer.