ibcs2_ioctl.c (92761) | ibcs2_ioctl.c (102003) |
---|---|
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 92761 2002-03-20 05:48:58Z alfred $ | 28 * $FreeBSD: head/sys/i386/ibcs2/ibcs2_ioctl.c 102003 2002-08-17 02:36:16Z rwatson $ |
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> --- 323 unchanged lines hidden (view full) --- 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 | 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> --- 323 unchanged lines hidden (view full) --- 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, td)) != 0) | 368 if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts, 369 td->td_ucred, td)) != 0) |
369 break; 370 371 btios2stios (&bts, &sts); 372 if (SCARG(uap, cmd) == IBCS2_TCGETA) { 373 stios2stio (&sts, &st); 374 error = copyout((caddr_t)&st, SCARG(uap, data), 375 sizeof (st)); 376#ifdef DEBUG_IBCS2 --- 21 unchanged lines hidden (view full) --- 398 if ((error = copyin(SCARG(uap, data), (caddr_t)&st, 399 sizeof(st))) != 0) { 400 DPRINTF(("ibcs2_ioctl(%d): TCSET copyin failed ", 401 p->p_pid)); 402 break; 403 } 404 405 /* get full BSD termios so we don't lose information */ | 370 break; 371 372 btios2stios (&bts, &sts); 373 if (SCARG(uap, cmd) == IBCS2_TCGETA) { 374 stios2stio (&sts, &st); 375 error = copyout((caddr_t)&st, SCARG(uap, data), 376 sizeof (st)); 377#ifdef DEBUG_IBCS2 --- 21 unchanged lines hidden (view full) --- 399 if ((error = copyin(SCARG(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 */ |
406 if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts, td)) != 0) { | 407 if ((error = fo_ioctl(fp, TIOCGETA, (caddr_t)&bts, 408 td->td_ucred, td)) != 0) { |
407 DPRINTF(("ibcs2_ioctl(%d): TCSET ctl failed fd %d ", 408 p->p_pid, SCARG(uap, fd))); 409 break; 410 } 411 412 /* 413 * convert to iBCS2 termios, copy in information from 414 * termio, and convert back, then set new values. 415 */ 416 btios2stios(&bts, &sts); 417 stio2stios(&st, &sts); 418 stios2btios(&sts, &bts); 419 420 error = fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_TCSETA + TIOCSETA, | 409 DPRINTF(("ibcs2_ioctl(%d): TCSET ctl failed fd %d ", 410 p->p_pid, SCARG(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 422 error = fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_TCSETA + TIOCSETA, |
421 (caddr_t)&bts, td); | 423 (caddr_t)&bts, td->td_ucred, td); |
422 break; 423 } 424 425 case IBCS2_XCSETA: 426 case IBCS2_XCSETAW: 427 case IBCS2_XCSETAF: 428 { 429 struct termios bts; 430 struct ibcs2_termios sts; 431 432 if ((error = copyin(SCARG(uap, data), (caddr_t)&sts, 433 sizeof (sts))) != 0) 434 break; 435 stios2btios (&sts, &bts); 436 error = fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_XCSETA + TIOCSETA, | 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, 435 sizeof (sts))) != 0) 436 break; 437 stios2btios (&sts, &bts); 438 error = fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_XCSETA + TIOCSETA, |
437 (caddr_t)&bts, td); | 439 (caddr_t)&bts, td->td_ucred, td); |
438 break; 439 } 440 441 case IBCS2_OXCSETA: 442 case IBCS2_OXCSETAW: 443 case IBCS2_OXCSETAF: 444 { 445 struct termios bts; 446 struct ibcs2_termios sts; 447 448 if ((error = copyin(SCARG(uap, data), (caddr_t)&sts, 449 sizeof (sts))) != 0) 450 break; 451 stios2btios (&sts, &bts); 452 error = fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_OXCSETA + TIOCSETA, | 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, 451 sizeof (sts))) != 0) 452 break; 453 stios2btios (&sts, &bts); 454 error = fo_ioctl(fp, SCARG(uap, cmd) - IBCS2_OXCSETA + TIOCSETA, |
453 (caddr_t)&bts, td); | 455 (caddr_t)&bts, td->td_ucred, td); |
454 break; 455 } 456 457 case IBCS2_TCSBRK: 458 DPRINTF(("ibcs2_ioctl(%d): TCSBRK ", p->p_pid)); 459 error = ENOSYS; 460 break; 461 462 case IBCS2_TCXONC: 463 { 464 switch ((int)SCARG(uap, data)) { 465 case 0: 466 case 1: 467 DPRINTF(("ibcs2_ioctl(%d): TCXONC ", p->p_pid)); 468 error = ENOSYS; 469 break; 470 case 2: | 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)) { 467 case 0: 468 case 1: 469 DPRINTF(("ibcs2_ioctl(%d): TCXONC ", p->p_pid)); 470 error = ENOSYS; 471 break; 472 case 2: |
471 error = fo_ioctl(fp, TIOCSTOP, (caddr_t)0, td); | 473 error = fo_ioctl(fp, TIOCSTOP, (caddr_t)0, 474 td->td_ucred, td); |
472 break; 473 case 3: | 475 break; 476 case 3: |
474 error = fo_ioctl(fp, TIOCSTART, (caddr_t)1, td); | 477 error = fo_ioctl(fp, TIOCSTART, (caddr_t)1, 478 td->td_ucred, td); |
475 break; 476 default: 477 error = EINVAL; 478 break; 479 } 480 break; 481 } 482 --- 10 unchanged lines hidden (view full) --- 493 break; 494 case 2: 495 arg = FREAD | FWRITE; 496 break; 497 default: 498 fdrop(fp, td); 499 return EINVAL; 500 } | 479 break; 480 default: 481 error = EINVAL; 482 break; 483 } 484 break; 485 } 486 --- 10 unchanged lines hidden (view full) --- 497 break; 498 case 2: 499 arg = FREAD | FWRITE; 500 break; 501 default: 502 fdrop(fp, td); 503 return EINVAL; 504 } |
501 error = fo_ioctl(fp, TIOCFLUSH, (caddr_t)&arg, td); | 505 error = fo_ioctl(fp, TIOCFLUSH, (caddr_t)&arg, td->td_ucred, 506 td); |
502 break; 503 } 504 505 case IBCS2_TIOCGWINSZ: 506 SCARG(uap, cmd) = TIOCGWINSZ; 507 error = ioctl(td, (struct ioctl_args *)uap); 508 break; 509 --- 183 unchanged lines hidden --- | 507 break; 508 } 509 510 case IBCS2_TIOCGWINSZ: 511 SCARG(uap, cmd) = TIOCGWINSZ; 512 error = ioctl(td, (struct ioctl_args *)uap); 513 break; 514 --- 183 unchanged lines hidden --- |