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