www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - revised version of my ioctl interface module for linux

  //interface to ioctl (2) syscall
//written by Ameer Armaly
//placed in the public domain
module std.c.linux.ioctl;
extern(C) int ioctl(short, uint, ...); //function declaration
struct winsize
{
ushort ws_row, ws_col;
ushort ws_xpixel, ws_ypixel;
}
//modem lines 
enum
{
  TIOCM_LE=0x001,
  TIOCM_DTR=0x002,
  TIOCM_RTS=0x004,
  TIOCM_ST=0x008,
  TIOCM_SR=0x010,
  TIOCM_CTS=0x020,
  TIOCM_CAR=0x040,
  TIOCM_RNG=0x080,
  TIOCM_DSR=0x100,
  TIOCM_CD=TIOCM_CAR,
  TIOCM_RI=TIOCM_RNG,
}
enum
{
  N_TTY=0,
  N_SLIP=1,
  N_MOUSE=2,
  N_PPP=3,
  N_STRIP=4,  N_AX25=5,
  N_X25=6, //X.25 async
  N_6PACK=7,
  N_MASC=8, //Mobitex module
  N_R3964=9, //Simatic R3964 module
  N_PROFIBUS_FDL=10,//Profibus
  N_IRDA=11,//Linux IR
  N_SMSBLOCK=12,//SMS block mode
  N_HDLC=13,//synchronous HDLC
   N_SYNC_PPP=14,//synchronous PPP
  N_HCI=15,//Bluetooth HCI UART
}
enum
{
   SIOCADDRT=0x890B, //add routing table entry
  SIOCDELRT=0x890C, //delete routing table entry
  SIOCRTMSG=0x890D, //call to routing system

  SIOCGIFNAME =0x89100,//get iface name
  SIOCSIFLINK =0x8911,//set iface channel
  SIOCGIFCONF =0x8912,//get iface list
  SIOCGIFFLAGS=0x8913,//get flags
  SIOCSIFFLAGS=0x8914,//set flags
  SIOCGIFADDR =0x8915,//get PA address
  SIOCSIFADDR =0x8916,//set PA address
  SIOCGIFDSTADDR=0x8917,//get remote PA address
  SIOCSIFDSTADDR=0x8918,//set remote PA address
  SIOCGIFBRDADDR=0x8919,//get broadcast PA address
  SIOCSIFBRDADDR=0x891a,//set broadcast PA address
  SIOCGIFNETMASK=0x891b,//get network PA mask
  SIOCSIFNETMASK=0x891c,//set network PA mask
  SIOCGIFMETRIC =0x891d,//get metric
  SIOCSIFMETRIC =0x891e,//set metric
  SIOCGIFMEM=0x891f,//get memory address (BSD)
  SIOCSIFMEM=0x8920,//set memory address (BSD)
  SIOCGIFMTU=0x8921,//get MTU size
  SIOCSIFMTU=0x8922,//set MTU size
  SIOCSIFNAME =0x8923,//set interface name
  SIOCSIFHWADDR =0x8924,//set hardware address
  SIOCGIFENCAP=0x8925,//get/set encapsulations
  SIOCSIFENCAP=0x8926,
  SIOCGIFHWADDR =0x8927,//Get hardware address
  SIOCGIFSLAVE=0x8929,//Driver slaving support
  SIOCSIFSLAVE=0x8930,
  SIOCADDMULTI=0x8931,//Multicast address lists
  SIOCDELMULTI=0x8932,
  SIOCGIFINDEX=0x8933,//name -> if_index mapping
  SIOGIFINDEX=SIOCGIFINDEX,//misprint compatibility :-)
  SIOCSIFPFLAGS =0x8934,//set/get extended flags set
  SIOCGIFPFLAGS =0x8935,
  SIOCDIFADDR =0x8936,//delete PA address
  SIOCSIFHWBROADCAST=0x8937,//set hardware broadcast addr
  SIOCGIFCOUNT=0x8938,//get number of devices
  SIOCGIFBR =0x8940,//Bridging support
  SIOCSIFBR =0x8941,//Set bridging options
  SIOCGIFTXQLEN =0x8942,//Get the tx queue length
  SIOCSIFTXQLEN =0x8943,//Set the tx queue length
  SIOCDARP =0x8953,//delete ARP table entry
  SIOCGARP =0x8954,//get ARP table entry
  SIOCSARP =0x8955,//set ARP table entry
   SIOCDRARP =0x8960,//delete RARP table entry
  SIOCGRARP =0x8961,//get RARP table entry
  SIOCSRARP =0x8962,//set RARP table entry
   SIOCGIFMAP=0x8970,//Get device parameters
  SIOCSIFMAP=0x8971,//Set device parameters
  SIOCADDDLCI =0x8980,//Create new DLCI device
  SIOCDELDLCI =0x8981,//Delete DLCI device 
}
enum
{
  TCGETS =0x5401,
  TCSETS =0x5402,// Clashes with SNDCTL_TMR_START sound ioctl
  TCSETSW=0x5403,
  TCSETSF=0x5404,
  TCGETA =0x5405,
  TCSETA =0x5406,
  TCSETAW=0x5407,
  TCSETAF=0x5408,
  TCSBRK =0x5409,
  TCXONC =0x540A,
  TCFLSH =0x540B,
  TIOCEXCL =0x540C,
  TIOCNXCL =0x540D,
  TIOCSCTTY =0x540E,
  TIOCGPGRP =0x540F,
  TIOCSPGRP =0x5410,
  TIOCOUTQ =0x5411,
  TIOCSTI=0x5412,
  TIOCGWINSZ=0x5413,
  TIOCSWINSZ=0x5414,
  TIOCMGET =0x5415,
  TIOCMBIS =0x5416,
  TIOCMBIC =0x5417,
  TIOCMSET =0x5418,
  TIOCGSOFTCAR =0x5419,
  TIOCSSOFTCAR =0x541A,
  FIONREAD =0x541B,
  TIOCLINUX =0x541C,
  TIOCCONS =0x541D,
  TIOCGSERIAL =0x541E,
  TIOCSSERIAL =0x541F,
  TIOCPKT=0x5420,
  FIONBIO=0x5421,
  TIOCNOTTY =0x5422,
  TIOCSETD =0x5423,
  TIOCGETD =0x5424,
  TCSBRKP=0x5425,// Needed for POSIX tcsendbreak()
  TIOCSBRK =0x5427,// BSD compatibility
  TIOCCBRK =0x5428,// BSD compatibility
  TIOCGSID =0x5429,// Return the session ID of FD
  FIONCLEX =0x5450,
  FIOCLEX=0x5451,
  FIOASYNC =0x5452,
  TIOCSERCONFIG=0x5453,
  TIOCSERGWILD =0x5454,
  TIOCSERSWILD =0x5455,
  TIOCGLCKTRMIOS =0x5456,
  TIOCSLCKTRMIOS =0x5457,
  TIOCSERGSTRUCT =0x5458,// For debugging only
  TIOCSERGETLSR=0x5459,// Get line status register
  TIOCSERGETMULTI =0x545A,// Get multiport config
  TIOCSERSETMULTI =0x545B,// Set multiport config
  TIOCMIWAIT=0x545C,// wait for a change on serial input line(s)
  TIOCGICOUNT =0x545D,// read serial port inline interrupt counts
  TIOCGHAYESESP=0x545E,// Get Hayes ESP configuration
  TIOCSHAYESESP=0x545F,// Set Hayes ESP configuration
  FIOQSIZE =0x5460,
  TIOCPKT_DATA=0,
  TIOCPKT_FLUSHREAD =1,
  TIOCPKT_FLUSHWRITE=2,
  TIOCPKT_STOP=4,
  TIOCPKT_START=8,
  TIOCPKT_NOSTOP=16,
  TIOCPKT_DOSTOP=32,
  TIOCSER_TEMT  =0x01,// Transmitter physically empty 
}
Aug 10 2005