Date: Wed, 20 Nov 2013 22:54:09 +0000 (UTC) From: Aleksandr Rybalko <ray@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r258408 - user/ed/newcons/sys/dev/vt Message-ID: <201311202254.rAKMs98T006703@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311202254.rAKMs98T006703>