From owner-svn-src-user@FreeBSD.ORG Wed Nov 20 22:54:10 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DC25E746; Wed, 20 Nov 2013 22:54:09 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CC1A32F71; Wed, 20 Nov 2013 22:54:09 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id rAKMs9lu006704; Wed, 20 Nov 2013 22:54:09 GMT (envelope-from ray@svn.freebsd.org) Received: (from ray@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id rAKMs98T006703; Wed, 20 Nov 2013 22:54:09 GMT (envelope-from ray@svn.freebsd.org) Message-Id: <201311202254.rAKMs98T006703@svn.freebsd.org> From: Aleksandr Rybalko Date: Wed, 20 Nov 2013 22:54:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r258408 - user/ed/newcons/sys/dev/vt X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 Nov 2013 22:54:10 -0000 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;