Page MenuHomeFreeBSD

D54634.diff
No OneTemporary

D54634.diff

diff --git a/sys/x86/isa/clock.c b/sys/x86/isa/clock.c
--- a/sys/x86/isa/clock.c
+++ b/sys/x86/isa/clock.c
@@ -163,8 +163,11 @@
mode = TIMER_SEL2 | TIMER_SQWAVE | TIMER_16BIT;
- if (timer2_state != RELEASED)
+ mtx_lock_spin(&clock_lock);
+ if (timer2_state != RELEASED) {
+ mtx_unlock_spin(&clock_lock);
return (-1);
+ }
timer2_state = ACQUIRED;
/*
@@ -175,8 +178,9 @@
* careful with it as with timer0.
*/
outb(TIMER_MODE, TIMER_SEL2 | (mode & 0x3f));
-
ppi_spkr_on(); /* enable counter2 output to speaker */
+ mtx_unlock_spin(&clock_lock);
+
return (0);
}
@@ -184,12 +188,16 @@
timer_spkr_release(void)
{
- if (timer2_state != ACQUIRED)
+ mtx_lock_spin(&clock_lock);
+ if (timer2_state != ACQUIRED) {
+ mtx_unlock_spin(&clock_lock);
return (-1);
+ }
timer2_state = RELEASED;
outb(TIMER_MODE, TIMER_SEL2 | TIMER_SQWAVE | TIMER_16BIT);
-
ppi_spkr_off(); /* disable counter2 output to speaker */
+ mtx_unlock_spin(&clock_lock);
+
return (0);
}

File Metadata

Mime Type
text/plain
Expires
Tue, Mar 3, 6:36 PM (9 h, 10 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28999665
Default Alt Text
D54634.diff (995 B)

Event Timeline