__noinference__{
#ifndef _SYS_IOCTL_H_
#define _SYS_IOCTL_H_
#ifndef _u_long_def_
#define _u_long_def_
typedef unsigned long u_long;
#endif
#ifndef FIONBIO
#define FIONBIO 0x8004667e
#endif
#ifndef _IOR
#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y)
#endif
#ifndef FIONREAD
#define FIONREAD _IOR('f', 127, u_long)
#endif
#ifndef IOC_OUT
#define IOC_OUT 0x40000000
#endif
#ifndef IOCPARM_MASK
#define IOCPARM_MASK 0x7f
#endif

  // ioctl normally takes a void * as its arg, but
  //   for the moment we forbid it to taking only ints.
  //   Ultimately should change to use datatypes as
  //   socket commands do
  extern "C" int ioctl(int fd, int cmd, int @arg);
#endif
}
