Deleted Added
full compact
ibcs2_ioctl.c (107839) ibcs2_ioctl.c (107849)
1/* $NetBSD: ibcs2_ioctl.c,v 1.6 1995/03/14 15:12:28 scottb Exp $ */
2
3/*
4 * Copyright (c) 1994, 1995 Scott Bartram
5 * All rights reserved.
6 *
7 * based on compat/sunos/sun_ioctl.c
8 *

--- 11 unchanged lines hidden (view full) ---

20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
1/* $NetBSD: ibcs2_ioctl.c,v 1.6 1995/03/14 15:12:28 scottb Exp $ */
2
3/*
4 * Copyright (c) 1994, 1995 Scott Bartram
5 * All rights reserved.
6 *
7 * based on compat/sunos/sun_ioctl.c
8 *

--- 11 unchanged lines hidden (view full) ---

20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 *
28 * $FreeBSD: head/sys/i386/ibcs2/ibcs2_ioctl.c 107839 2002-12-13 22:41:47Z alfred $
28 * $FreeBSD: head/sys/i386/ibcs2/ibcs2_ioctl.c 107849 2002-12-14 01:56:26Z alfred $
29 */
30
31#include <sys/param.h>
32#include <sys/systm.h>
33#include <sys/consio.h>
34#include <sys/fcntl.h>
35#include <sys/file.h>
36#include <sys/filedesc.h>

--- 304 unchanged lines hidden (view full) ---

341 struct ibcs2_ioctl_args *uap;
342{
343 struct proc *p = td->td_proc;
344 struct file *fp;
345 int error;
346
347 if ((error = fget(td, uap->fd, &fp)) != 0) {
348 DPRINTF(("ibcs2_ioctl(%d): bad fd %d ", p->p_pid,
29 */
30
31#include <sys/param.h>
32#include <sys/systm.h>
33#include <sys/consio.h>
34#include <sys/fcntl.h>
35#include <sys/file.h>
36#include <sys/filedesc.h>

--- 304 unchanged lines hidden (view full) ---

341 struct ibcs2_ioctl_args *uap;
342{
343 struct proc *p = td->td_proc;
344 struct file *fp;
345 int error;
346
347 if ((error = fget(td, uap->fd, &fp)) != 0) {
348 DPRINTF(("ibcs2_ioctl(%d): bad fd %d ", p->p_pid,
349 SCARG(uap, fd)));
349 uap->fd));
350 return EBADF;
351 }
352
353 if ((fp->f_flag & (FREAD|FWRITE)) == 0) {
354 fdrop(fp, td);
355 DPRINTF(("ibcs2_ioctl(%d): bad fp flag ", p->p_pid));
356 return EBADF;
357 }
358
350 return EBADF;
351 }
352
353 if ((fp->f_flag & (FREAD|FWRITE)) == 0) {
354 fdrop(fp, td);
355 DPRINTF(("ibcs2_ioctl(%d): bad fp flag ", p->p_pid));
356 return EBADF;
357 }
358
359 switch (SCARG(uap, cmd)) {
359 switch (uap->cmd) {
360 case IBCS2_TCGETA:
361 case IBCS2_XCGETA:
362 case IBCS2_OXCGETA:
363 {
364 struct termios bts;
365 struct ibcs2_termios sts;
366 struct ibcs2_termio st;
367
368 if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts,
369 td->td_ucred, td)) != 0)
370 break;
371
372 btios2stios (&bts, &sts);
360 case IBCS2_TCGETA:
361 case IBCS2_XCGETA:
362 case IBCS2_OXCGETA:
363 {
364 struct termios bts;
365 struct ibcs2_termios sts;
366 struct ibcs2_termio st;
367
368 if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts,
369 td->td_ucred, td)) != 0)
370 break;
371
372 btios2stios (&bts, &sts);
373 if (SCARG(uap, cmd) == IBCS2_TCGETA) {
373 if (uap->cmd == IBCS2_TCGETA) {
374 stios2stio (&sts, &st);
374 stios2stio (&sts, &st);
375 error = copyout((caddr_t)&st, SCARG(uap, data),
375 error = copyout((caddr_t)&st, uap->data,
376 sizeof (st));
377#ifdef DEBUG_IBCS2
378 if (error)
379 DPRINTF(("ibcs2_ioctl(%d): copyout failed ",
380 p->p_pid));
381#endif
382 break;
383 } else {
376 sizeof (st));
377#ifdef DEBUG_IBCS2
378 if (error)
379 DPRINTF(("ibcs2_ioctl(%d): copyout failed ",
380 p->p_pid));
381#endif
382 break;
383 } else {
384 error = copyout((caddr_t)&sts, SCARG(uap, data),
384 error = copyout((caddr_t)&sts, uap->data,
385 sizeof (sts));
386 break;
387 }
388 /*NOTREACHED*/
389 }
390
391 case IBCS2_TCSETA:
392 case IBCS2_TCSETAW:
393 case IBCS2_TCSETAF:
394 {
395 struct termios bts;
396 struct ibcs2_termios sts;
397 struct ibcs2_termio st;
398
385 sizeof (sts));
386 break;
387 }
388 /*NOTREACHED*/
389 }
390
391 case IBCS2_TCSETA:
392 case IBCS2_TCSETAW:
393 case IBCS2_TCSETAF:
394 {
395 struct termios bts;
396 struct ibcs2_termios sts;
397 struct ibcs2_termio st;
398
399 if ((error = copyin(SCARG(uap, data), (caddr_t)&st,
399 if ((error = copyin(uap->data, (caddr_t)&st,
400 sizeof(st))) != 0) {
401 DPRINTF(("ibcs2_ioctl(%d): TCSET copyin failed ",
402 p->p_pid));
403 break;
404 }
405
406 /* get full BSD termios so we don't lose information */
407 if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts,
408 td->td_ucred, td)) != 0) {
409 DPRINTF(("ibcs2_ioctl(%d): TCSET ctl failed fd %d ",
400 sizeof(st))) != 0) {
401 DPRINTF(("ibcs2_ioctl(%d): TCSET copyin failed ",
402 p->p_pid));
403 break;
404 }
405
406 /* get full BSD termios so we don't lose information */
407 if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts,
408 td->td_ucred, td)) != 0) {
409 DPRINTF(("ibcs2_ioctl(%d): TCSET ctl failed fd %d ",
410 p->p_pid, SCARG(uap, fd)));
410 p->p_pid, uap->fd));
411 break;
412 }
413
414 /*
415 * convert to iBCS2 termios, copy in information from
416 * termio, and convert back, then set new values.
417 */
418 btios2stios(&bts, &sts);
419 stio2stios(&st, &sts);
420 stios2btios(&sts, &bts);
421
411 break;
412 }
413
414 /*
415 * convert to iBCS2 termios, copy in information from
416 * termio, and convert back, then set new values.
417 */
418 btios2stios(&bts, &sts);
419 stio2stios(&st, &sts);
420 stios2btios(&sts, &bts);
421
422 error = fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_TCSETA + TIOCSETA,
422 error = fo_ioctl(fp, uap->cmd - IBCS2_TCSETA + TIOCSETA,
423 (caddr_t)&bts, td->td_ucred, td);
424 break;
425 }
426
427 case IBCS2_XCSETA:
428 case IBCS2_XCSETAW:
429 case IBCS2_XCSETAF:
430 {
431 struct termios bts;
432 struct ibcs2_termios sts;
433
423 (caddr_t)&bts, td->td_ucred, td);
424 break;
425 }
426
427 case IBCS2_XCSETA:
428 case IBCS2_XCSETAW:
429 case IBCS2_XCSETAF:
430 {
431 struct termios bts;
432 struct ibcs2_termios sts;
433
434 if ((error = copyin(SCARG(uap, data), (caddr_t)&sts,
434 if ((error = copyin(uap->data, (caddr_t)&sts,
435 sizeof (sts))) != 0)
436 break;
437 stios2btios (&sts, &bts);
435 sizeof (sts))) != 0)
436 break;
437 stios2btios (&sts, &bts);
438 error = fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_XCSETA + TIOCSETA,
438 error = fo_ioctl(fp, uap->cmd - IBCS2_XCSETA + TIOCSETA,
439 (caddr_t)&bts, td->td_ucred, td);
440 break;
441 }
442
443 case IBCS2_OXCSETA:
444 case IBCS2_OXCSETAW:
445 case IBCS2_OXCSETAF:
446 {
447 struct termios bts;
448 struct ibcs2_termios sts;
449
439 (caddr_t)&bts, td->td_ucred, td);
440 break;
441 }
442
443 case IBCS2_OXCSETA:
444 case IBCS2_OXCSETAW:
445 case IBCS2_OXCSETAF:
446 {
447 struct termios bts;
448 struct ibcs2_termios sts;
449
450 if ((error = copyin(SCARG(uap, data), (caddr_t)&sts,
450 if ((error = copyin(uap->data, (caddr_t)&sts,
451 sizeof (sts))) != 0)
452 break;
453 stios2btios (&sts, &bts);
451 sizeof (sts))) != 0)
452 break;
453 stios2btios (&sts, &bts);
454 error = fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_OXCSETA + TIOCSETA,
454 error = fo_ioctl(fp, uap->cmd - IBCS2_OXCSETA + TIOCSETA,
455 (caddr_t)&bts, td->td_ucred, td);
456 break;
457 }
458
459 case IBCS2_TCSBRK:
460 DPRINTF(("ibcs2_ioctl(%d): TCSBRK ", p->p_pid));
461 error = ENOSYS;
462 break;
463
464 case IBCS2_TCXONC:
465 {
455 (caddr_t)&bts, td->td_ucred, td);
456 break;
457 }
458
459 case IBCS2_TCSBRK:
460 DPRINTF(("ibcs2_ioctl(%d): TCSBRK ", p->p_pid));
461 error = ENOSYS;
462 break;
463
464 case IBCS2_TCXONC:
465 {
466 switch ((int)SCARG(uap, data)) {
466 switch ((int)uap->data) {
467 case 0:
468 case 1:
469 DPRINTF(("ibcs2_ioctl(%d): TCXONC ", p->p_pid));
470 error = ENOSYS;
471 break;
472 case 2:
473 error = fo_ioctl(fp, TIOCSTOP, (caddr_t)0,
474 td->td_ucred, td);

--- 8 unchanged lines hidden (view full) ---

483 }
484 break;
485 }
486
487 case IBCS2_TCFLSH:
488 {
489 int arg;
490
467 case 0:
468 case 1:
469 DPRINTF(("ibcs2_ioctl(%d): TCXONC ", p->p_pid));
470 error = ENOSYS;
471 break;
472 case 2:
473 error = fo_ioctl(fp, TIOCSTOP, (caddr_t)0,
474 td->td_ucred, td);

--- 8 unchanged lines hidden (view full) ---

483 }
484 break;
485 }
486
487 case IBCS2_TCFLSH:
488 {
489 int arg;
490
491 switch ((int)SCARG(uap, data)) {
491 switch ((int)uap->data) {
492 case 0:
493 arg = FREAD;
494 break;
495 case 1:
496 arg = FWRITE;
497 break;
498 case 2:
499 arg = FREAD | FWRITE;
500 break;
501 default:
502 fdrop(fp, td);
503 return EINVAL;
504 }
505 error = fo_ioctl(fp, TIOCFLUSH, (caddr_t)&arg, td->td_ucred,
506 td);
507 break;
508 }
509
510 case IBCS2_TIOCGWINSZ:
492 case 0:
493 arg = FREAD;
494 break;
495 case 1:
496 arg = FWRITE;
497 break;
498 case 2:
499 arg = FREAD | FWRITE;
500 break;
501 default:
502 fdrop(fp, td);
503 return EINVAL;
504 }
505 error = fo_ioctl(fp, TIOCFLUSH, (caddr_t)&arg, td->td_ucred,
506 td);
507 break;
508 }
509
510 case IBCS2_TIOCGWINSZ:
511 SCARG(uap, cmd) = TIOCGWINSZ;
511 uap->cmd = TIOCGWINSZ;
512 error = ioctl(td, (struct ioctl_args *)uap);
513 break;
514
515 case IBCS2_TIOCSWINSZ:
512 error = ioctl(td, (struct ioctl_args *)uap);
513 break;
514
515 case IBCS2_TIOCSWINSZ:
516 SCARG(uap, cmd) = TIOCSWINSZ;
516 uap->cmd = TIOCSWINSZ;
517 error = ioctl(td, (struct ioctl_args *)uap);
518 break;
519
520 case IBCS2_TIOCGPGRP:
521 {
522 pid_t pg_id;
523
524 PROC_LOCK(p);
525 pg_id = p->p_pgrp->pg_id;
526 PROC_UNLOCK(p);
517 error = ioctl(td, (struct ioctl_args *)uap);
518 break;
519
520 case IBCS2_TIOCGPGRP:
521 {
522 pid_t pg_id;
523
524 PROC_LOCK(p);
525 pg_id = p->p_pgrp->pg_id;
526 PROC_UNLOCK(p);
527 error = copyout((caddr_t)&pg_id, SCARG(uap, data),
527 error = copyout((caddr_t)&pg_id, uap->data,
528 sizeof(pg_id));
529 break;
530 }
531
532 case IBCS2_TIOCSPGRP: /* XXX - is uap->data a pointer to pgid? */
533 {
534 struct setpgid_args sa;
535
528 sizeof(pg_id));
529 break;
530 }
531
532 case IBCS2_TIOCSPGRP: /* XXX - is uap->data a pointer to pgid? */
533 {
534 struct setpgid_args sa;
535
536 SCARG(&sa, pid) = 0;
537 SCARG(&sa, pgid) = (int)SCARG(uap, data);
536 sa.pid = 0;
537 sa.pgid = (int)uap->data;
538 error = setpgid(td, &sa);
539 break;
540 }
541
542 case IBCS2_TCGETSC: /* SCO console - get scancode flags */
543 error = EINTR; /* ENOSYS; */
544 break;
545

--- 15 unchanged lines hidden (view full) ---

561 ibcs2_jwinsize.bytey = 25;
562 /* p->p_session->s_ttyp->t_winsize.ws_row; XXX */
563 ibcs2_jwinsize.bitx =
564 p->p_session->s_ttyp->t_winsize.ws_xpixel;
565 ibcs2_jwinsize.bity =
566 p->p_session->s_ttyp->t_winsize.ws_ypixel;
567 SESS_UNLOCK(p->p_session);
568 PROC_UNLOCK(p);
538 error = setpgid(td, &sa);
539 break;
540 }
541
542 case IBCS2_TCGETSC: /* SCO console - get scancode flags */
543 error = EINTR; /* ENOSYS; */
544 break;
545

--- 15 unchanged lines hidden (view full) ---

561 ibcs2_jwinsize.bytey = 25;
562 /* p->p_session->s_ttyp->t_winsize.ws_row; XXX */
563 ibcs2_jwinsize.bitx =
564 p->p_session->s_ttyp->t_winsize.ws_xpixel;
565 ibcs2_jwinsize.bity =
566 p->p_session->s_ttyp->t_winsize.ws_ypixel;
567 SESS_UNLOCK(p->p_session);
568 PROC_UNLOCK(p);
569 error = copyout((caddr_t)&ibcs2_jwinsize, SCARG(uap, data),
569 error = copyout((caddr_t)&ibcs2_jwinsize, uap->data,
570 sizeof(ibcs2_jwinsize));
571 break;
572 }
573
574 /* keyboard and display ioctl's -- type 'K' */
575 case IBCS2_KDGKBMODE: /* get keyboard translation mode */
570 sizeof(ibcs2_jwinsize));
571 break;
572 }
573
574 /* keyboard and display ioctl's -- type 'K' */
575 case IBCS2_KDGKBMODE: /* get keyboard translation mode */
576 SCARG(uap, cmd) = KDGKBMODE;
577/* printf("ioctl KDGKBMODE = %x\n", SCARG(uap, cmd));*/
576 uap->cmd = KDGKBMODE;
577/* printf("ioctl KDGKBMODE = %x\n", uap->cmd);*/
578 error = ioctl(td, (struct ioctl_args *)uap);
579 break;
580
581 case IBCS2_KDSKBMODE: /* set keyboard translation mode */
578 error = ioctl(td, (struct ioctl_args *)uap);
579 break;
580
581 case IBCS2_KDSKBMODE: /* set keyboard translation mode */
582 SCARG(uap, cmd) = KDSKBMODE;
582 uap->cmd = KDSKBMODE;
583 error = ioctl(td, (struct ioctl_args *)uap);
584 break;
585
586 case IBCS2_KDMKTONE: /* sound tone */
583 error = ioctl(td, (struct ioctl_args *)uap);
584 break;
585
586 case IBCS2_KDMKTONE: /* sound tone */
587 SCARG(uap, cmd) = KDMKTONE;
587 uap->cmd = KDMKTONE;
588 error = ioctl(td, (struct ioctl_args *)uap);
589 break;
590
591 case IBCS2_KDGETMODE: /* get text/graphics mode */
588 error = ioctl(td, (struct ioctl_args *)uap);
589 break;
590
591 case IBCS2_KDGETMODE: /* get text/graphics mode */
592 SCARG(uap, cmd) = KDGETMODE;
592 uap->cmd = KDGETMODE;
593 error = ioctl(td, (struct ioctl_args *)uap);
594 break;
595
596 case IBCS2_KDSETMODE: /* set text/graphics mode */
593 error = ioctl(td, (struct ioctl_args *)uap);
594 break;
595
596 case IBCS2_KDSETMODE: /* set text/graphics mode */
597 SCARG(uap, cmd) = KDSETMODE;
597 uap->cmd = KDSETMODE;
598 error = ioctl(td, (struct ioctl_args *)uap);
599 break;
600
601 case IBCS2_KDSBORDER: /* set ega color border */
598 error = ioctl(td, (struct ioctl_args *)uap);
599 break;
600
601 case IBCS2_KDSBORDER: /* set ega color border */
602 SCARG(uap, cmd) = KDSBORDER;
602 uap->cmd = KDSBORDER;
603 error = ioctl(td, (struct ioctl_args *)uap);
604 break;
605
606 case IBCS2_KDGKBSTATE:
603 error = ioctl(td, (struct ioctl_args *)uap);
604 break;
605
606 case IBCS2_KDGKBSTATE:
607 SCARG(uap, cmd) = KDGKBSTATE;
607 uap->cmd = KDGKBSTATE;
608 error = ioctl(td, (struct ioctl_args *)uap);
609 break;
610
611 case IBCS2_KDSETRAD:
608 error = ioctl(td, (struct ioctl_args *)uap);
609 break;
610
611 case IBCS2_KDSETRAD:
612 SCARG(uap, cmd) = KDSETRAD;
612 uap->cmd = KDSETRAD;
613 error = ioctl(td, (struct ioctl_args *)uap);
614 break;
615
616 case IBCS2_KDENABIO: /* enable direct I/O to ports */
613 error = ioctl(td, (struct ioctl_args *)uap);
614 break;
615
616 case IBCS2_KDENABIO: /* enable direct I/O to ports */
617 SCARG(uap, cmd) = KDENABIO;
617 uap->cmd = KDENABIO;
618 error = ioctl(td, (struct ioctl_args *)uap);
619 break;
620
621 case IBCS2_KDDISABIO: /* disable direct I/O to ports */
618 error = ioctl(td, (struct ioctl_args *)uap);
619 break;
620
621 case IBCS2_KDDISABIO: /* disable direct I/O to ports */
622 SCARG(uap, cmd) = KDDISABIO;
622 uap->cmd = KDDISABIO;
623 error = ioctl(td, (struct ioctl_args *)uap);
624 break;
625
626 case IBCS2_KIOCSOUND: /* start sound generation */
623 error = ioctl(td, (struct ioctl_args *)uap);
624 break;
625
626 case IBCS2_KIOCSOUND: /* start sound generation */
627 SCARG(uap, cmd) = KIOCSOUND;
627 uap->cmd = KIOCSOUND;
628 error = ioctl(td, (struct ioctl_args *)uap);
629 break;
630
631 case IBCS2_KDGKBTYPE: /* get keyboard type */
628 error = ioctl(td, (struct ioctl_args *)uap);
629 break;
630
631 case IBCS2_KDGKBTYPE: /* get keyboard type */
632 SCARG(uap, cmd) = KDGKBTYPE;
632 uap->cmd = KDGKBTYPE;
633 error = ioctl(td, (struct ioctl_args *)uap);
634 break;
635
636 case IBCS2_KDGETLED: /* get keyboard LED status */
633 error = ioctl(td, (struct ioctl_args *)uap);
634 break;
635
636 case IBCS2_KDGETLED: /* get keyboard LED status */
637 SCARG(uap, cmd) = KDGETLED;
637 uap->cmd = KDGETLED;
638 error = ioctl(td, (struct ioctl_args *)uap);
639 break;
640
641 case IBCS2_KDSETLED: /* set keyboard LED status */
638 error = ioctl(td, (struct ioctl_args *)uap);
639 break;
640
641 case IBCS2_KDSETLED: /* set keyboard LED status */
642 SCARG(uap, cmd) = KDSETLED;
642 uap->cmd = KDSETLED;
643 error = ioctl(td, (struct ioctl_args *)uap);
644 break;
645
646 /* Xenix keyboard and display ioctl's from sys/kd.h -- type 'k' */
647 case IBCS2_GETFKEY: /* Get function key */
643 error = ioctl(td, (struct ioctl_args *)uap);
644 break;
645
646 /* Xenix keyboard and display ioctl's from sys/kd.h -- type 'k' */
647 case IBCS2_GETFKEY: /* Get function key */
648 SCARG(uap, cmd) = GETFKEY;
648 uap->cmd = GETFKEY;
649 error = ioctl(td, (struct ioctl_args *)uap);
650 break;
651
652 case IBCS2_SETFKEY: /* Set function key */
649 error = ioctl(td, (struct ioctl_args *)uap);
650 break;
651
652 case IBCS2_SETFKEY: /* Set function key */
653 SCARG(uap, cmd) = SETFKEY;
653 uap->cmd = SETFKEY;
654 error = ioctl(td, (struct ioctl_args *)uap);
655 break;
656
657 case IBCS2_GIO_SCRNMAP: /* Get screen output map table */
654 error = ioctl(td, (struct ioctl_args *)uap);
655 break;
656
657 case IBCS2_GIO_SCRNMAP: /* Get screen output map table */
658 SCARG(uap, cmd) = GIO_SCRNMAP;
658 uap->cmd = GIO_SCRNMAP;
659 error = ioctl(td, (struct ioctl_args *)uap);
660 break;
661
662 case IBCS2_PIO_SCRNMAP: /* Set screen output map table */
659 error = ioctl(td, (struct ioctl_args *)uap);
660 break;
661
662 case IBCS2_PIO_SCRNMAP: /* Set screen output map table */
663 SCARG(uap, cmd) = PIO_SCRNMAP;
663 uap->cmd = PIO_SCRNMAP;
664 error = ioctl(td, (struct ioctl_args *)uap);
665 break;
666
667 case IBCS2_GIO_KEYMAP: /* Get keyboard map table */
664 error = ioctl(td, (struct ioctl_args *)uap);
665 break;
666
667 case IBCS2_GIO_KEYMAP: /* Get keyboard map table */
668 SCARG(uap, cmd) = GIO_KEYMAP;
668 uap->cmd = GIO_KEYMAP;
669 error = ioctl(td, (struct ioctl_args *)uap);
670 break;
671
672 case IBCS2_PIO_KEYMAP: /* Set keyboard map table */
669 error = ioctl(td, (struct ioctl_args *)uap);
670 break;
671
672 case IBCS2_PIO_KEYMAP: /* Set keyboard map table */
673 SCARG(uap, cmd) = PIO_KEYMAP;
673 uap->cmd = PIO_KEYMAP;
674 error = ioctl(td, (struct ioctl_args *)uap);
675 break;
676
677 /* socksys */
678 case IBCS2_SIOCSOCKSYS:
679 error = ibcs2_socksys(td, (struct ibcs2_socksys_args *)uap);
680 break;
681
682 case IBCS2_FIONREAD:
683 case IBCS2_I_NREAD: /* STREAMS */
674 error = ioctl(td, (struct ioctl_args *)uap);
675 break;
676
677 /* socksys */
678 case IBCS2_SIOCSOCKSYS:
679 error = ibcs2_socksys(td, (struct ibcs2_socksys_args *)uap);
680 break;
681
682 case IBCS2_FIONREAD:
683 case IBCS2_I_NREAD: /* STREAMS */
684 SCARG(uap, cmd) = FIONREAD;
684 uap->cmd = FIONREAD;
685 error = ioctl(td, (struct ioctl_args *)uap);
686 break;
687
688 default:
689 DPRINTF(("ibcs2_ioctl(%d): unknown cmd 0x%lx ",
685 error = ioctl(td, (struct ioctl_args *)uap);
686 break;
687
688 default:
689 DPRINTF(("ibcs2_ioctl(%d): unknown cmd 0x%lx ",
690 td->proc->p_pid, SCARG(uap, cmd)));
690 td->proc->p_pid, uap->cmd));
691 error = ENOSYS;
692 break;
693 }
694
695 fdrop(fp, td);
696 return error;
697}
691 error = ENOSYS;
692 break;
693 }
694
695 fdrop(fp, td);
696 return error;
697}