genericopenlibs/openenvcore/include/sys/ioccom.dosc
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 18 Aug 2010 11:27:44 +0300
changeset 52 bf6a71c50e42
parent 0 e4d67989cc36
permissions -rw-r--r--
Revision: 201033 Kit: 201033

/** @file ../include/sys/ioccom.h
@internalComponent
*/

/** @fn  ioctl(int aFid, unsigned long aCmd, ...)
@param aFid
@param aCmd
@param ...
@return   If an error has occurred, a value of -1 is returned and errno is set to indicate the error.

@code
  #include < sys/ioctl.h >
@endcode
  The ioctl system call manipulates the underlying device parameters of special files.
In particular, many operating
characteristics of character special files (e.g. terminals)
may be controlled with ioctl requests.
The argument aFid
 must be an open file descriptor.

 The third argument to ioctl is traditionally named char *argp .
Most uses of ioctl in 3.0,
however require the third argument to be a caddr_t
or an int.

 An ioctl request has encoded in it whether the argument is an "in"
argument
or "out"
argument, and the size of the argument argp in bytes.
Macros and defines used in specifying an ioctl request are located in the file  \#include \<sys/ioctl.h \>

Examples:
@code
 /* Detailed description  : Sample usage of ioctl system call ,for command SIOCGIFINDEX 
  * which gets socket interface index , by passing socket interface home.*/
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <sys/ioctl.h>
int main()
{
  int ret = 0;
        struct ifreq ifr;
        int sockfd;
                
        sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);      
        strncpy(ifr.ifr_name, "Ethernet with Daemon Dynamic IP", sizeof(ifr.ifr_name));
        
                if (ioctl(sockfd, SIOCGIFINDEX, &ifr;) != -1)
                {
                ret = -1;
                }
                
        close(sockfd);
        return ret; }

@endcode
@see fcntl()



@capability Deferred @ref Rsocket::Open

@publishedAll
@externallyDefinedApi
*/

/** @def _IOR(g,n,t)

IO read.

@publishedAll
@released
*/

/** @def _IOW(g,n,t)

IO write.

@publishedAll
@released
*/

/** @def _IOWR(g,n,t)

IO read write.

@publishedAll
@released
*/