svn commit: r258408 - user/ed/newcons/sys/dev/vt
Aleksandr Rybalko
ray at FreeBSD.org
Wed Nov 20 22:54:10 UTC 2013
Author: ray
Date: Wed Nov 20 22:54:09 2013
New Revision: 258408
URL: http://svnweb.freebsd.org/changeset/base/258408
Log:
Revert r258324. There mutexes should be used instead of atomics.
Pointed by: kib, nwhitehorn
Sponsored by: The FreeBSD Foundation
Modified:
user/ed/newcons/sys/dev/vt/vt_core.c
Modified: user/ed/newcons/sys/dev/vt/vt_core.c
==============================================================================
--- user/ed/newcons/sys/dev/vt/vt_core.c Wed Nov 20 22:12:21 2013 (r258407)
+++ user/ed/newcons/sys/dev/vt/vt_core.c Wed Nov 20 22:54:09 2013 (r258408)
@@ -355,7 +355,7 @@ vt_scrollmode_kbdevent(struct vt_window
/* Turn scrolling off. */
vt_scroll(vw, 0, VHS_END);
VTBUF_SLCK_DISABLE(&vw->vw_buf);
- atomic_clear_int(&vw->vw_flags, VWF_SCROLL);
+ vw->vw_flags &= ~VWF_SCROLL;
break;
}
case FKEY | F(49): /* Home key. */
@@ -438,11 +438,11 @@ vt_processkey(keyboard_t *kbd, struct vt
VT_LOCK(vd);
if (state & SLKED) {
/* Turn scrolling on. */
- atomic_set_int(&vw->vw_flags, VWF_SCROLL);
+ vw->vw_flags |= VWF_SCROLL;
VTBUF_SLCK_ENABLE(&vw->vw_buf);
} else {
/* Turn scrolling off. */
- atomic_clear_int(&vw->vw_flags, VWF_SCROLL);
+ vw->vw_flags &= ~VWF_SCROLL;
VTBUF_SLCK_DISABLE(&vw->vw_buf);
vt_scroll(vw, 0, VHS_END);
}
@@ -896,12 +896,12 @@ vtterm_cngetc(struct terminal *tm)
kbdd_ioctl(kbd, KDGKBSTATE, (caddr_t)&state);
if (state & SLKED) {
/* Turn scrolling on. */
- atomic_set_int(&vw->vw_flags, VWF_SCROLL);
+ vw->vw_flags |= VWF_SCROLL;
VTBUF_SLCK_ENABLE(&vw->vw_buf);
} else {
/* Turn scrolling off. */
vt_scroll(vw, 0, VHS_END);
- atomic_clear_int(&vw->vw_flags, VWF_SCROLL);
+ vw->vw_flags &= ~VWF_SCROLL;
VTBUF_SLCK_DISABLE(&vw->vw_buf);
}
break;
@@ -941,9 +941,9 @@ vtterm_opened(struct terminal *tm, int o
VT_LOCK(vd);
vd->vd_flags &= ~VDF_SPLASH;
if (opened)
- atomic_set_int(&vw->vw_flags, VWF_OPENED);
+ vw->vw_flags |= VWF_OPENED;
else {
- atomic_clear_int(&vw->vw_flags, VWF_OPENED);
+ vw->vw_flags &= ~VWF_OPENED;
/* TODO: finish ACQ/REL */
}
VT_UNLOCK(vd);
@@ -981,7 +981,7 @@ vt_change_font(struct vt_window *vw, str
VT_UNLOCK(vd);
return (ENOTTY);
}
- atomic_set_int(&vw->vw_flags, VWF_BUSY);
+ vw->vw_flags |= VWF_BUSY;
VT_UNLOCK(vd);
vt_termsize(vd, vf, &size);
@@ -1004,7 +1004,7 @@ vt_change_font(struct vt_window *vw, str
/* Force a full redraw the next timer tick. */
if (vd->vd_curwindow == vw)
vd->vd_flags |= VDF_INVALID;
- atomic_clear_int(&vw->vw_flags, VWF_BUSY);
+ vw->vw_flags &= ~VWF_BUSY;
VT_UNLOCK(vd);
return (0);
}
@@ -1041,7 +1041,7 @@ signal_vt_rel(struct vt_window *vw)
vw->vw_pid = 0;
return TRUE;
}
- atomic_set_int(&vw->vw_flags, VWF_SWWAIT_REL);
+ vw->vw_flags |= VWF_SWWAIT_REL;
PROC_LOCK(vw->vw_proc);
kern_psignal(vw->vw_proc, vw->vw_smode.relsig);
PROC_UNLOCK(vw->vw_proc);
@@ -1062,7 +1062,7 @@ signal_vt_acq(struct vt_window *vw)
vw->vw_pid = 0;
return TRUE;
}
- atomic_set_int(&vw->vw_flags, VWF_SWWAIT_ACQ);
+ vw->vw_flags |= VWF_SWWAIT_ACQ;
PROC_LOCK(vw->vw_proc);
kern_psignal(vw->vw_proc, vw->vw_smode.acqsig);
PROC_UNLOCK(vw->vw_proc);
@@ -1075,7 +1075,7 @@ finish_vt_rel(struct vt_window *vw, int
{
if (vw->vw_flags & VWF_SWWAIT_REL) {
- atomic_clear_int(&vw->vw_flags, VWF_SWWAIT_REL);
+ vw->vw_flags &= ~VWF_SWWAIT_REL;
if (release) {
callout_drain(&vw->vw_proc_dead_timer);
vt_late_window_switch(vw->vw_switch_to);
@@ -1090,7 +1090,7 @@ finish_vt_acq(struct vt_window *vw)
{
if (vw->vw_flags & VWF_SWWAIT_ACQ) {
- atomic_clear_int(&vw->vw_flags, VWF_SWWAIT_ACQ);
+ vw->vw_flags &= ~VWF_SWWAIT_ACQ;
return 0;
}
return EINVAL;
@@ -1421,9 +1421,9 @@ vtterm_ioctl(struct terminal *tm, u_long
case VT_LOCKSWITCH:
/* TODO: Check current state, switching can be in progress. */
if ((*(int *)data) & 0x01)
- atomic_set_int(&vw->vw_flags, VWF_VTYLOCK);
+ vw->vw_flags |= VWF_VTYLOCK;
else
- atomic_clear_int(&vw->vw_flags, VWF_VTYLOCK);
+ vw->vw_flags &= ~VWF_VTYLOCK;
case VT_OPENQRY: {
unsigned int i;
More information about the svn-src-user
mailing list