*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->HP-UX 11i man pages -> ioctl (2)              


 ioctl(2)                                                           ioctl(2)

 NAME    [Toc]    [Back]
      ioctl - control device

 SYNOPSIS    [Toc]    [Back]
      #include <stropts.h>

      int ioctl(int fildes, int request, ... /* arg */);

    Remarks    [Toc]    [Back]
      The ANSI C ", ..." construct denotes a variable length argument list
      whose optional [or required] members are given in the associated
      comment (/* */).

 DESCRIPTION    [Toc]    [Back]
      ioctl() performs a variety of functions on character special files
      (devices), or regular files and directories on VxFS file systems.  The
      write-ups of various devices in Section (7) discuss how ioctl()
      applies to them.  The type of arg is dependent on the specific ioctl()
      call, as described in Section (7).

      request is made up of several fields which encode the size and
      direction of the argument (referenced by arg), as well as the desired
      command.  An enumeration of the request fields are:

           IOC_IN              Argument is read by the driver (meaning that
                               the argument is copied from the application
                               to the driver).

           IOC_OUT             Argument is written by the driver (meaning
                               that the argument is copied from the driver
                               to the application).  Ignored if an error

           IOCSIZE_MASK        Number of bytes in the passed argument.  A
                               nonzero size indicates that arg is a pointer
                               to the passed argument.  A zero size
                               indicates that arg is the passed argument (if
                               the driver wants to use it), and is not
                               treated as a pointer.

           IOCCMD_MASK         The request command itself.

      When both IOC_IN and IOC_OUT are zero, it can be assumed that request
      is not encoded for size and direction, for compatibility purposes.
      Requests that do not require any data to be passed and requests that
      use arg as a value (as opposed to a pointer), have the IOC_IN bit set
      to one and the IOCSIZE_MASK field set to zero.

      The following macros are used to create the request argument.  x and y
      are concatenated ((x<<8) | y) to form IOCCMD and shifted into the
      proper location according to IOCCMD_MASK.  t is the type (e.g.  struct

 Hewlett-Packard Company            - 1 -   HP-UX 11i Version 2: August 2003

 ioctl(2)                                                           ioctl(2)

      routeaddrs) of the actual argument that the request references, and
      its size is taken and shifted into the appropriate place according to

           _IOR(x,y,t)         Sets IOC_OUT and initializes the values at
                               IOCCMD_MASK and IOCSIZE_MASK accordingly.

           _IOW(x,y,t)         Sets IOC_IN and initializes the values at
                               IOCCMD_MASK and IOCSIZE_MASK accordingly.

           _IOWR(x,y,t)        Sets both IOC_IN and IOC_OUT and initializes
                               the values at IOCCMD_MASK and IOCSIZE_MASK.

      Note: any data structure referenced by arg must not contain any

 RETURN VALUE    [Toc]    [Back]
      If an error has occurred, a value of -1 is returned and errno is set
      to indicate the error.

      ioctl() fails if one or more of the following are true: IOC_OUT is
      ignored if an error occurs.

           [EBADF]        fildes is not a valid open file descriptor.

           [ENOTTY]       The request is not appropriate to the selected

           [EINVAL]       request or arg is not valid.

           [EINTR]        A signal was caught during the ioctl() system

           [EPERM]        Typically this error indicates that an ioctl
                          request was attempted that is forbidden in some
                          way to the calling process.

 WARNINGS    [Toc]    [Back]
      Check all references to signal(5) for appropriateness on systems that
      support sigvector(2).  sigvector(2) can affect the behavior described
      on this page.

 AUTHOR    [Toc]    [Back]
      ioctl() was developed by AT&T and HP.

 SEE ALSO    [Toc]    [Back]
      ioctl(5), arp(7P), socket(7), termio(7).

      ioctl(): SVID2, SVID3, XPG2

 Hewlett-Packard Company            - 2 -   HP-UX 11i Version 2: August 2003
[ Back ]
 Similar pages
Name OS Title
devctl FreeBSD device event reporting and device control interface
scsictl HP-UX control a SCSI device
comcontrol FreeBSD control a special tty device
VOP_IOCTL FreeBSD device specific control
audioctl OpenBSD control audio device
atacontrol FreeBSD ATA device driver control program
ioctl HP-UX generic device control commands
uucplock FreeBSD acquire and release control of a serial device
uu_lockerr OpenBSD acquire and release control of a serial device
uu_unlock OpenBSD acquire and release control of a serial device
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service