summaryrefslogtreecommitdiffstats
path: root/sys/dev/syscons/syscons.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/syscons/syscons.c')
-rw-r--r--sys/dev/syscons/syscons.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/sys/dev/syscons/syscons.c b/sys/dev/syscons/syscons.c
index da11de9..f3305c4 100644
--- a/sys/dev/syscons/syscons.c
+++ b/sys/dev/syscons/syscons.c
@@ -838,6 +838,24 @@ scioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
splx(s);
return 0;
+ case CONS_SCRSHOT: /* get a screen shot */
+ {
+ scrshot_t *ptr = (scrshot_t*)data;
+ s = spltty();
+ if (ISGRAPHSC(scp)) {
+ splx(s);
+ return EOPNOTSUPP;
+ }
+ if (scp->xsize != ptr->xsize || scp->ysize != ptr->ysize) {
+ splx(s);
+ return EINVAL;
+ }
+ copyout ((void*)scp->vtb.vtb_buffer, ptr->buf,
+ ptr->xsize * ptr->ysize * sizeof(u_int16_t));
+ splx(s);
+ return 0;
+ }
+
case VT_SETMODE: /* set screen switcher mode */
{
struct vt_mode *mode;
OpenPOWER on IntegriCloud