/**************************************************************************** * include/nuttx/ioctl.h * * Copyright (C) 2008, 2009 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3. Neither the name NuttX nor the names of its contributors may be * used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * ****************************************************************************/ #ifndef __NUTTX_IOCTL_H #define __NUTTX_IOCTL_H /**************************************************************************** * Included Files ****************************************************************************/ #include /**************************************************************************** * Pre-Processor Definitions ****************************************************************************/ /* Each NuttX ioctl commands are uint16_t's consisting of an 8-bit type * identifier and an 8-bit command number. All comman type identifiers are * defined below: */ #define _FIOCBASE (0x8700) /* File system ioctl commands */ #define _DIOCBASE (0x8800) /* Character driver ioctl commands */ #define _BIOCBASE (0x8900) /* Block driver ioctl commands */ #define _MTDIOCBASE (0x8a00) /* MTD ioctl commands */ #define _SIOCBASE (0x8b00) /* Socket ioctl commandss */ #define _ARPBASE (0x8c00) /* ARP ioctl commandss */ /* Macros used to manage ioctl commands */ #define _IOC_MASK (0x00ff) #define _IOC_TYPE(cmd) ((cmd)&~_IOC_MASK) #define _IOC_NR(cmd) ((cmd)&_IOC_MASK) #define _IOC(type,nr) ((type)|(nr)) /* NuttX file system ioctl definitions */ #define _FIOCVALID(c) (_IOC_TYPE(c)==_FIOCBASE) #define _FIOC(nr) _IOC(_FIOCBASE,nr) #define FIOC_MMAP _FIOC(0x0001) /* IN: Location to return address (void **) * OUT: If media is directly acccesible, * return (void*) base address * of file */ /* NuttX file system ioctl definitions */ #define _DIOCVALID(c) (_IOC_TYPE(c)==_DIOCBASE) #define _DIOC(nr) _IOC(_DIOCBASE,nr) #define DIOC_GETPRIV _DIOC(0x0001) /* IN: Location to return handle (void **) * OUT: Reference to internal data * structure. May have a reference * incremented. */ #define DIOC_RELPRIV _DIOC(0x0003) /* IN: None * OUT: None, reference obtained by * FIOC_GETPRIV released. */ /* NuttX block driver ioctl definitions */ #define _BIOCVALID(c) (_IOC_TYPE(c)==_BIOCBASE) #define _BIOC(nr) _IOC(_BIOCBASE,nr) #define BIOC_XIPBASE _BIOC(0x0001) /* Perform mapping to random access memory. * IN: Pointer to pointer to void in * which to received the XIP base. * OUT: If media is directly acccesible, * return (void*) base address * of device memory */ #define BIOC_PROBE _BIOC(0x0002) /* Re-probe and interface; check for media * in the slot * IN: None * OUT: None (ioctl return value provides * success/failure indication). */ #define BIOC_EJECT _BIOC(0x0003) /* Eject/disable media in the slot * IN: None * OUT: None (ioctl return value provides * success/failure indication). */ /* NuttX MTD driver ioctl definitions */ #define _MTDIOCVALID(c) (_IOC_TYPE(c)==_MTDIOCBASE) #define _MTDIOC(nr) _IOC(_MTDIOCBASE,nr) #define MTDIOC_GEOMETRY _MTDIOC(0x0001) /* IN: Pointer to write-able struct * mtd_geometry_s in which to receive * receive geometry data (see mtd.h) * OUT: Geometry structure is populated * with data for the MTD */ #define MTDIOC_XIPBASE _MTDIOC(0x0002) /* IN: Pointer to pointer to void in * which to received the XIP base. * OUT: If media is directly acccesible, * return (void*) base address * of device memory */ #define MTDIOC_BULKERASE _MTDIOC(0x0003) /* IN: None * OUT: None */ /* NuttX ARP driver ioctl definitions (see netinet/arp.h) */ #define _ARPIOCVALID(c) (_IOC_TYPE(c)==_ARPBASE) #define _ARPIOC(nr) _IOC(_ARPBASE,nr) /**************************************************************************** * Public Type Definitions ****************************************************************************/ /**************************************************************************** * Public Function Prototypes ****************************************************************************/ #ifdef __cplusplus #define EXTERN extern "C" extern "C" { #else #define EXTERN extern #endif #undef EXTERN #ifdef __cplusplus } #endif #endif /* __NUTTX_IOCTL_H */