diff options
| author | Dima Dorfman <dd@FreeBSD.org> | 2002-07-10 03:29:38 +0000 |
|---|---|---|
| committer | Dima Dorfman <dd@FreeBSD.org> | 2002-07-10 03:29:38 +0000 |
| commit | ce907d42462634d9e8b5af6bb55b6db63df7561b (patch) | |
| tree | 39fa7986f5fab216eb6bb8f4b69bbba3d88c889a /sys | |
| parent | f55348f07cda2f920c8adba0d2f0c8099717d9cd (diff) | |
Notes
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/dev/syscons/syscons.c | 14 | ||||
| -rw-r--r-- | sys/dev/syscons/syscons.h | 1 | ||||
| -rw-r--r-- | sys/sys/consio.h | 3 |
3 files changed, 18 insertions, 0 deletions
diff --git a/sys/dev/syscons/syscons.c b/sys/dev/syscons/syscons.c index 02c771a321820..09f35bbb3bbd8 100644 --- a/sys/dev/syscons/syscons.c +++ b/sys/dev/syscons/syscons.c @@ -981,6 +981,13 @@ scioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td) *(int *)data = scp->index + 1; return 0; + case VT_LOCKSWITCH: /* prevent vty switching */ + if ((*(int *)data) & 0x01) + sc->flags |= SC_SCRN_VTYLOCK; + else + sc->flags &= ~SC_SCRN_VTYLOCK; + return 0; + case KDENABIO: /* allow io operations */ error = suser(td); if (error != 0) @@ -2075,6 +2082,13 @@ sc_switch_scr(sc_softc_t *sc, u_int next_scr) DPRINTF(5, ("sc0: sc_switch_scr() %d ", next_scr + 1)); + /* prevent switch if previously requested */ + if (sc->flags & SC_SCRN_VTYLOCK) { + sc_bell(sc->cur_scp, sc->cur_scp->bell_pitch, + sc->cur_scp->bell_duration); + return EPERM; + } + /* delay switch if the screen is blanked or being updated */ if ((sc->flags & SC_SCRN_BLANKED) || sc->write_in_progress || sc->blink_in_progress || sc->videoio_in_progress) { diff --git a/sys/dev/syscons/syscons.h b/sys/dev/syscons/syscons.h index 08e8dfcc44ee6..d08df8bfda057 100644 --- a/sys/dev/syscons/syscons.h +++ b/sys/dev/syscons/syscons.h @@ -194,6 +194,7 @@ typedef struct sc_softc { #define SC_SCRN_IDLE (1 << 5) #define SC_SCRN_BLANKED (1 << 6) #define SC_SAVER_FAILED (1 << 7) +#define SC_SCRN_VTYLOCK (1 << 8) #define SC_INIT_DONE (1 << 16) #define SC_SPLASH_SCRN (1 << 17) diff --git a/sys/sys/consio.h b/sys/sys/consio.h index e4a60f6431be3..77879d1900f81 100644 --- a/sys/sys/consio.h +++ b/sys/sys/consio.h @@ -335,6 +335,9 @@ typedef struct vt_mode vtmode_t; /* get the index of the vty */ #define VT_GETINDEX _IOR('v', 8, int) +/* prevent switching vtys */ +#define VT_LOCKSWITCH _IOW('v', 9, int) + /* * Video mode switching ioctl. See sys/fbio.h for mode numbers. */ |
