Page MenuHomeFreeBSD

D54634.id172643.diff
No OneTemporary

D54634.id172643.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,6 +178,7 @@
* careful with it as with timer0.
*/
outb(TIMER_MODE, TIMER_SEL2 | (mode & 0x3f));
+ mtx_unlock_spin(&clock_lock);
ppi_spkr_on(); /* enable counter2 output to speaker */
return (0);
@@ -184,10 +188,14 @@
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);
+ mtx_unlock_spin(&clock_lock);
ppi_spkr_off(); /* disable counter2 output to speaker */
return (0);

File Metadata

Mime Type
text/plain
Expires
Sun, Apr 12, 11:19 PM (7 h, 13 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28999634
Default Alt Text
D54634.id172643.diff (981 B)

Event Timeline