Attempt to work around a bug in the previous commit related to
non-reentrancy of SMP clock locking. Depend on the giant lock protecting clkintr().
This commit is contained in:
parent
80db5fd640
commit
6ed49410a5
@ -34,7 +34,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)clock.c 7.2 (Berkeley) 5/12/91
|
||||
* $Id: clock.c,v 1.125 1998/09/06 22:41:41 tegge Exp $
|
||||
* $Id: clock.c,v 1.126 1998/09/20 03:47:54 bde Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -208,7 +208,7 @@ clkintr(struct clockframe frame)
|
||||
* hardware counter must be read to ensure monotonicity
|
||||
* despite multiple rollovers and misbehaving hardware.
|
||||
*/
|
||||
disable_intr();
|
||||
(disable_intr)(); /* XXX avoid clock locking */
|
||||
if (i8254_ticked) {
|
||||
i8254_get_timecount(NULL);
|
||||
i8254_ticked = 0;
|
||||
@ -216,7 +216,7 @@ clkintr(struct clockframe frame)
|
||||
i8254_offset += timer0_max_count;
|
||||
i8254_lastcount = 0;
|
||||
}
|
||||
enable_intr();
|
||||
(enable_intr)(); /* XXX avoid clock locking */
|
||||
}
|
||||
timer_func(&frame);
|
||||
switch (timer0_state) {
|
||||
|
@ -34,7 +34,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)clock.c 7.2 (Berkeley) 5/12/91
|
||||
* $Id: clock.c,v 1.125 1998/09/06 22:41:41 tegge Exp $
|
||||
* $Id: clock.c,v 1.126 1998/09/20 03:47:54 bde Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -208,7 +208,7 @@ clkintr(struct clockframe frame)
|
||||
* hardware counter must be read to ensure monotonicity
|
||||
* despite multiple rollovers and misbehaving hardware.
|
||||
*/
|
||||
disable_intr();
|
||||
(disable_intr)(); /* XXX avoid clock locking */
|
||||
if (i8254_ticked) {
|
||||
i8254_get_timecount(NULL);
|
||||
i8254_ticked = 0;
|
||||
@ -216,7 +216,7 @@ clkintr(struct clockframe frame)
|
||||
i8254_offset += timer0_max_count;
|
||||
i8254_lastcount = 0;
|
||||
}
|
||||
enable_intr();
|
||||
(enable_intr)(); /* XXX avoid clock locking */
|
||||
}
|
||||
timer_func(&frame);
|
||||
switch (timer0_state) {
|
||||
|
@ -34,7 +34,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)clock.c 7.2 (Berkeley) 5/12/91
|
||||
* $Id: clock.c,v 1.125 1998/09/06 22:41:41 tegge Exp $
|
||||
* $Id: clock.c,v 1.126 1998/09/20 03:47:54 bde Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -208,7 +208,7 @@ clkintr(struct clockframe frame)
|
||||
* hardware counter must be read to ensure monotonicity
|
||||
* despite multiple rollovers and misbehaving hardware.
|
||||
*/
|
||||
disable_intr();
|
||||
(disable_intr)(); /* XXX avoid clock locking */
|
||||
if (i8254_ticked) {
|
||||
i8254_get_timecount(NULL);
|
||||
i8254_ticked = 0;
|
||||
@ -216,7 +216,7 @@ clkintr(struct clockframe frame)
|
||||
i8254_offset += timer0_max_count;
|
||||
i8254_lastcount = 0;
|
||||
}
|
||||
enable_intr();
|
||||
(enable_intr)(); /* XXX avoid clock locking */
|
||||
}
|
||||
timer_func(&frame);
|
||||
switch (timer0_state) {
|
||||
|
@ -34,7 +34,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)clock.c 7.2 (Berkeley) 5/12/91
|
||||
* $Id: clock.c,v 1.125 1998/09/06 22:41:41 tegge Exp $
|
||||
* $Id: clock.c,v 1.126 1998/09/20 03:47:54 bde Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -208,7 +208,7 @@ clkintr(struct clockframe frame)
|
||||
* hardware counter must be read to ensure monotonicity
|
||||
* despite multiple rollovers and misbehaving hardware.
|
||||
*/
|
||||
disable_intr();
|
||||
(disable_intr)(); /* XXX avoid clock locking */
|
||||
if (i8254_ticked) {
|
||||
i8254_get_timecount(NULL);
|
||||
i8254_ticked = 0;
|
||||
@ -216,7 +216,7 @@ clkintr(struct clockframe frame)
|
||||
i8254_offset += timer0_max_count;
|
||||
i8254_lastcount = 0;
|
||||
}
|
||||
enable_intr();
|
||||
(enable_intr)(); /* XXX avoid clock locking */
|
||||
}
|
||||
timer_func(&frame);
|
||||
switch (timer0_state) {
|
||||
|
@ -34,7 +34,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* from: @(#)clock.c 7.2 (Berkeley) 5/12/91
|
||||
* $Id: clock.c,v 1.125 1998/09/06 22:41:41 tegge Exp $
|
||||
* $Id: clock.c,v 1.126 1998/09/20 03:47:54 bde Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -208,7 +208,7 @@ clkintr(struct clockframe frame)
|
||||
* hardware counter must be read to ensure monotonicity
|
||||
* despite multiple rollovers and misbehaving hardware.
|
||||
*/
|
||||
disable_intr();
|
||||
(disable_intr)(); /* XXX avoid clock locking */
|
||||
if (i8254_ticked) {
|
||||
i8254_get_timecount(NULL);
|
||||
i8254_ticked = 0;
|
||||
@ -216,7 +216,7 @@ clkintr(struct clockframe frame)
|
||||
i8254_offset += timer0_max_count;
|
||||
i8254_lastcount = 0;
|
||||
}
|
||||
enable_intr();
|
||||
(enable_intr)(); /* XXX avoid clock locking */
|
||||
}
|
||||
timer_func(&frame);
|
||||
switch (timer0_state) {
|
||||
|
Loading…
Reference in New Issue
Block a user