Implement new way to get the ioctl list for Linux: instead of
trying to #include every possible kernel header grab all the relevant
#defines from them and use those directly.
diff --git a/ChangeLog b/ChangeLog
index 872a7de..994a8f6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2001-03-17  Wichert Akkerman <wakkerma@debian.org>
+
+  * linux/ioclsort.c: new file
+  * linux/ioctlent.sh: complete rewrite to use a more sane approach to get
+    the ioctl list that doesn't involve attempting to #include all kernel
+    headers
+  * linux/.cvsignore: added ioctdefs.h and ioctls.h which are generated
+    by the new ioctlent.sh
+  * ioctl.c: only look at the number and type bits for linux, since
+    ioctlent.sh no longer supplies the others
+
 2001-03-08  John Hughes <john@Calva.COM>
 
   * freebsd/syscalls.pl: On FreeBSD we must cope with COMPATibility syscalls,
diff --git a/NEWS b/NEWS
index 109c8a6..f36c95f 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,7 @@
 ==============
 * Linux/ia64 port added
 * The usual Linux syscall updates (includes 32bit uid/gid support),
+* Linux ioctl list updated
 * Support IPv6 scope ids
   see ChangeLog for details
 
diff --git a/ioctl.c b/ioctl.c
index ed2a32b..9286bab 100644
--- a/ioctl.c
+++ b/ioctl.c
@@ -43,6 +43,10 @@
 #include "ioctlent.h"
 };
 
+#ifdef LINUX
+#include <asm/ioctl.h>
+#endif
+
 int nioctlents0 = sizeof ioctlent0 / sizeof ioctlent0[0];
 
 #if SUPPORTED_PERSONALITIES >= 2
@@ -81,6 +85,9 @@
 	struct ioctlent *iop, ioent;
 
 	ioent.code = code;
+#ifdef LINUX
+	ioent.code &= (_IOC_NRMASK|_IOC_TYPEMASK);
+#endif
 	iop = (struct ioctlent *) bsearch((char *) &ioent, (char *) ioctlent,
 			nioctlents, sizeof(struct ioctlent), compare);
 	return iop ? iop->symbol : NULL;
diff --git a/ioctlsort.c b/ioctlsort.c
index 51aef40..1009d75 100644
--- a/ioctlsort.c
+++ b/ioctlsort.c
@@ -28,9 +28,6 @@
  *	$Id$
  */
 
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
 
 #include <stdio.h>
 
diff --git a/linux/.cvsignore b/linux/.cvsignore
index f3c7a7c..9fa499b 100644
--- a/linux/.cvsignore
+++ b/linux/.cvsignore
@@ -1 +1,3 @@
 Makefile
+ioctldefs.h
+ioctls.h
diff --git a/linux/Makefile.in b/linux/Makefile.in
index e87543d..4d6f2b7 100644
--- a/linux/Makefile.in
+++ b/linux/Makefile.in
@@ -23,19 +23,17 @@
 
 all: ioctlent.h errnoent.h signalent.h syscallent.h
 
-ioctlent.raw: ioctlent.sh
-	$(SHELL) $(srcdir)/ioctlent.sh $(includedir) >$@
-
-ioctlent.h: ioctlent.raw ioctlsort
+ioctlent.h: ioctlsort
 	./ioctlsort >$@
 
 ioctlsort: ioctlsort.o
 	$(CC) $(LDFLAGS) ioctlsort.o -o ioctlsort
 
-ioctlsort.o: ../ioctlsort.c
+ioctlsort.o: ioctlsort.c ioctdefs.h ioctls.h
 	$(CC) $(WARNFLAGS) $(DEFS) $(CPPFLAGS) $(INCLUDES) $(CFLAGS) -c $(srcdir)/../ioctlsort.c
 
-ioctlsort.o: ioctlent.raw
+ioctldefs.h ioctls.h: ioctlent.sh
+	sh ioctlent.sh
 
 errnoent.h: ../errnoent.sh $(includedir)/linux/errno.h
 	$(SHELL) $(srcdir)/../errnoent.sh $(includedir)/*/errno.h >$@
diff --git a/linux/ioctlent.h b/linux/ioctlent.h
index 108a9fe..49a5126 100644
--- a/linux/ioctlent.h
+++ b/linux/ioctlent.h
@@ -1,519 +1,583 @@
-{"linux/fs.h", "FIBMAP", 0x1},
-{"linux/fs.h", "FIGETBSZ", 0x2},
-{"linux/fd.h", "FDCLRPRM", 0x241},
-{"linux/fd.h", "FDMSGON", 0x245},
-{"linux/fd.h", "FDMSGOFF", 0x246},
-{"linux/fd.h", "FDFMTBEG", 0x247},
-{"linux/fd.h", "FDFMTEND", 0x249},
-{"linux/fd.h", "FDSETEMSGTRESH", 0x24a},
-{"linux/fd.h", "FDFLUSH", 0x24b},
-{"linux/fd.h", "FDRESET", 0x254},
-{"linux/fd.h", "FDWERRORCLR", 0x256},
-{"linux/fd.h", "FDRAWCMD", 0x258},
-{"linux/fd.h", "FDTWADDLE", 0x259},
-{"linux/fd.h", "FDEJECT", 0x25a},
-{"linux/ip_fw.h", "IP_FW_TYPE", 0x300},
-{"linux/quota.h", "Q_GETQUOTA", 0x300},
-{"linux/hdreg.h", "HDIO_GETGEO", 0x301},
-{"linux/hdreg.h", "HDIO_GET_UNMASKINTR", 0x302},
-{"linux/hdreg.h", "HDIO_GET_MULTCOUNT", 0x304},
-{"linux/hdreg.h", "HDIO_GET_IDENTITY", 0x307},
-{"linux/hdreg.h", "HDIO_GET_KEEPSETTINGS", 0x308},
-{"linux/hdreg.h", "HDIO_GET_32BIT", 0x309},
-{"linux/hdreg.h", "HDIO_GET_NOWERR", 0x30a},
-{"linux/hdreg.h", "HDIO_GET_DMA", 0x30b},
-{"linux/hdreg.h", "HDIO_DRIVE_CMD", 0x31f},
-{"linux/hdreg.h", "HDIO_SET_MULTCOUNT", 0x321},
-{"linux/hdreg.h", "HDIO_SET_UNMASKINTR", 0x322},
-{"linux/hdreg.h", "HDIO_SET_KEEPSETTINGS", 0x323},
-{"linux/hdreg.h", "HDIO_SET_32BIT", 0x324},
-{"linux/hdreg.h", "HDIO_SET_NOWERR", 0x325},
-{"linux/hdreg.h", "HDIO_SET_DMA", 0x326},
-{"linux/hdreg.h", "HDIO_SET_PIO_MODE", 0x327},
-{"linux/umsdos_fs.h", "UMSDOS_READDIR_DOS", 0x4d2},
-{"linux/umsdos_fs.h", "UMSDOS_UNLINK_DOS", 0x4d3},
-{"linux/umsdos_fs.h", "UMSDOS_RMDIR_DOS", 0x4d4},
-{"linux/umsdos_fs.h", "UMSDOS_STAT_DOS", 0x4d5},
-{"linux/umsdos_fs.h", "UMSDOS_CREAT_EMD", 0x4d6},
-{"linux/umsdos_fs.h", "UMSDOS_UNLINK_EMD", 0x4d7},
-{"linux/umsdos_fs.h", "UMSDOS_READDIR_EMD", 0x4d8},
-{"linux/umsdos_fs.h", "UMSDOS_GETVERSION", 0x4d9},
-{"linux/umsdos_fs.h", "UMSDOS_INIT_EMD", 0x4da},
-{"linux/umsdos_fs.h", "UMSDOS_DOS_SETUP", 0x4db},
-{"linux/umsdos_fs.h", "UMSDOS_RENAME_DOS", 0x4dc},
-{"linux/quota.h", "Q_SYNC", 0x600},
-{"linux/lp.h", "LPCHAR", 0x601},
-{"linux/lp_m68k.h", "LPCHAR", 0x601},
-{"linux/lp.h", "LPTIME", 0x602},
-{"linux/lp_m68k.h", "LPTIME", 0x602},
-{"linux/lp.h", "LPABORT", 0x604},
-{"linux/lp_m68k.h", "LPABORT", 0x604},
-{"linux/lp.h", "LPSETIRQ", 0x605},
-{"linux/lp_m68k.h", "LPSETIRQ", 0x605},
-{"linux/lp.h", "LPGETIRQ", 0x606},
-{"linux/lp_m68k.h", "LPGETIRQ", 0x606},
-{"linux/lp.h", "LPWAIT", 0x608},
-{"linux/lp_m68k.h", "LPWAIT", 0x608},
-{"linux/lp.h", "LPCAREFUL", 0x609},
-{"linux/lp_m68k.h", "LPCAREFUL", 0x609},
-{"linux/lp.h", "LPABORTOPEN", 0x60a},
-{"linux/lp_m68k.h", "LPABORTOPEN", 0x60a},
-{"linux/lp.h", "LPGETSTATUS", 0x60b},
-{"linux/lp_m68k.h", "LPGETSTATUS", 0x60b},
-{"linux/lp.h", "LPRESET", 0x60c},
-{"linux/lp_m68k.h", "LPRESET", 0x60c},
-{"linux/lp.h", "LPGETSTATS", 0x60d},
-{"linux/lp.h", "LPGETFLAGS", 0x60e},
-{"linux/md.h", "REGISTER_DEV", 0x901},
-{"linux/md.h", "START_MD", 0x902},
-{"linux/md.h", "STOP_MD", 0x903},
-{"linux/md.h", "MD_INVALID", 0x904},
-{"linux/md.h", "MD_VALID", 0x905},
-{"linux/fs.h", "BLKROSET", 0x125d},
-{"linux/fs.h", "BLKROGET", 0x125e},
-{"linux/fs.h", "BLKRRPART", 0x125f},
-{"linux/fs.h", "BLKGETSIZE", 0x1260},
-{"linux/fs.h", "BLKFLSBUF", 0x1261},
-{"linux/fs.h", "BLKRASET", 0x1262},
-{"linux/fs.h", "BLKRAGET", 0x1263},
-{"linux/scc.h", "TIOCSCCCFG", 0x2200},
-{"linux/scc.h", "TIOCSCCINI", 0x2201},
-{"linux/scc.h", "TIOCCHANINI", 0x2202},
-{"linux/scc.h", "TIOCCHANMEM", 0x2210},
-{"linux/scc.h", "TIOCGKISS", 0x2282},
-{"linux/scc.h", "TIOCSKISS", 0x2283},
-{"linux/scc.h", "TIOCSCCSTAT", 0x2284},
-{"linux/apm_bios.h", "APM_IOC_STANDBY", 0x4101},
-{"linux/apm_bios.h", "APM_IOC_SUSPEND", 0x4102},
-{"linux/soundcard.h", "SNDCTL_COPR_RESET", 0x4300},
-{"linux/fb.h", "FBIOGET_VSCREENINFO", 0x4600},
-{"linux/fb.h", "FBIOPUT_VSCREENINFO", 0x4601},
-{"linux/fb.h", "FBIOGET_FSCREENINFO", 0x4602},
-{"linux/fb.h", "FBIOGETCMAP", 0x4604},
-{"linux/fb.h", "FBIOPUTCMAP", 0x4605},
-{"linux/fb.h", "FBIOPAN_DISPLAY", 0x4606},
-{"linux/fb.h", "FBIOGET_FCURSORINFO", 0x4607},
-{"linux/fb.h", "FBIOGET_VCURSORINFO", 0x4608},
-{"linux/fb.h", "FBIOPUT_VCURSORINFO", 0x4609},
-{"linux/fb.h", "FBIOGET_CURSORSTATE", 0x460a},
-{"linux/fb.h", "FBIOPUT_CURSORSTATE", 0x460b},
-{"linux/fb.h", "FBCMD_DRAWLINE", 0x4621},
-{"linux/fb.h", "FBCMD_MOVE", 0x4622},
-{"linux/isdn.h", "IIOCNETAIF", 0x4901},
-{"linux/isdn.h", "IIOCNETDIF", 0x4902},
-{"linux/isdn.h", "IIOCNETSCF", 0x4903},
-{"linux/isdn.h", "IIOCNETGCF", 0x4904},
-{"linux/isdn.h", "IIOCNETANM", 0x4905},
-{"linux/isdn.h", "IIOCNETDNM", 0x4906},
-{"linux/isdn.h", "IIOCNETGNM", 0x4907},
-{"linux/isdn.h", "IIOCGETSET", 0x4908},
-{"linux/isdn.h", "IIOCSETSET", 0x4909},
-{"linux/isdn.h", "IIOCSETVER", 0x490a},
-{"linux/isdn.h", "IIOCNETHUP", 0x490b},
-{"linux/isdn.h", "IIOCSETGST", 0x490c},
-{"linux/isdn.h", "IIOCSETBRJ", 0x490d},
-{"linux/isdn.h", "IIOCSIGPRF", 0x490e},
-{"linux/isdn.h", "IIOCGETPRF", 0x490f},
-{"linux/isdn.h", "IIOCSETPRF", 0x4910},
-{"linux/isdn.h", "IIOCGETMAP", 0x4911},
-{"linux/isdn.h", "IIOCSETMAP", 0x4912},
-{"linux/isdn.h", "IIOCNETASL", 0x4913},
-{"linux/isdn.h", "IIOCNETDIL", 0x4914},
-{"linux/isdn.h", "IIOCGETCPS", 0x4915},
-{"linux/isdn.h", "IIOCNETALN", 0x4920},
-{"linux/isdn.h", "IIOCNETDLN", 0x4921},
-{"linux/isdn.h", "IIOCDBGVAR", 0x497f},
-{"linux/isdn.h", "IIOCDRVCTL", 0x4980},
-{"linux/kd.h", "KIOCSOUND", 0x4b2f},
-{"linux/kd.h", "KDMKTONE", 0x4b30},
-{"linux/kd.h", "KDGETLED", 0x4b31},
-{"linux/kd.h", "KDSETLED", 0x4b32},
-{"linux/kd.h", "KDGKBTYPE", 0x4b33},
-{"linux/kd.h", "KDADDIO", 0x4b34},
-{"linux/kd.h", "KDDELIO", 0x4b35},
-{"linux/kd.h", "KDENABIO", 0x4b36},
-{"linux/kd.h", "KDDISABIO", 0x4b37},
-{"linux/kd.h", "KDSETMODE", 0x4b3a},
-{"linux/kd.h", "KDGETMODE", 0x4b3b},
-{"linux/kd.h", "KDMAPDISP", 0x4b3c},
-{"linux/kd.h", "KDUNMAPDISP", 0x4b3d},
-{"linux/kd.h", "GIO_SCRNMAP", 0x4b40},
-{"linux/kd.h", "PIO_SCRNMAP", 0x4b41},
-{"linux/kd.h", "KDGKBMODE", 0x4b44},
-{"linux/kd.h", "KDSKBMODE", 0x4b45},
-{"linux/kd.h", "KDGKBENT", 0x4b46},
-{"linux/kd.h", "KDSKBENT", 0x4b47},
-{"linux/kd.h", "KDGKBSENT", 0x4b48},
-{"linux/kd.h", "KDSKBSENT", 0x4b49},
-{"linux/kd.h", "KDGKBDIACR", 0x4b4a},
-{"linux/kd.h", "KDSKBDIACR", 0x4b4b},
-{"linux/kd.h", "KDGETKEYCODE", 0x4b4c},
-{"linux/kd.h", "KDSETKEYCODE", 0x4b4d},
-{"linux/kd.h", "KDSIGACCEPT", 0x4b4e},
-{"linux/kd.h", "GIO_FONT", 0x4b60},
-{"linux/kd.h", "PIO_FONT", 0x4b61},
-{"linux/kd.h", "KDGKBMETA", 0x4b62},
-{"linux/kd.h", "KDSKBMETA", 0x4b63},
-{"linux/kd.h", "KDGKBLED", 0x4b64},
-{"linux/kd.h", "KDSKBLED", 0x4b65},
-{"linux/kd.h", "GIO_UNIMAP", 0x4b66},
-{"linux/kd.h", "PIO_UNIMAP", 0x4b67},
-{"linux/kd.h", "PIO_UNIMAPCLR", 0x4b68},
-{"linux/kd.h", "GIO_UNISCRNMAP", 0x4b69},
-{"linux/kd.h", "PIO_UNISCRNMAP", 0x4b6a},
-{"linux/kd.h", "GIO_FONTX", 0x4b6b},
-{"linux/kd.h", "PIO_FONTX", 0x4b6c},
-{"linux/kd.h", "PIO_FONTRESET", 0x4b6d},
-{"linux/kd.h", "GIO_CMAP", 0x4b70},
-{"linux/kd.h", "PIO_CMAP", 0x4b71},
-{"linux/loop.h", "LOOP_SET_FD", 0x4c00},
-{"linux/loop.h", "LOOP_CLR_FD", 0x4c01},
-{"linux/loop.h", "LOOP_SET_STATUS", 0x4c02},
-{"linux/loop.h", "LOOP_GET_STATUS", 0x4c03},
-{"linux/soundcard.h", "SNDCTL_DSP_RESET", 0x5000},
-{"linux/soundcard.h", "SNDCTL_DSP_SYNC", 0x5001},
-{"linux/soundcard.h", "SNDCTL_DSP_POST", 0x5008},
-{"linux/soundcard.h", "SNDCTL_DSP_NONBLOCK", 0x500e},
-{"linux/soundcard.h", "SNDCTL_DSP_SETSYNCRO", 0x5015},
-{"linux/soundcard.h", "SNDCTL_DSP_SETDUPLEX", 0x5016},
-{"linux/soundcard.h", "SNDCTL_SEQ_RESET", 0x5100},
-{"linux/soundcard.h", "SNDCTL_SEQ_SYNC", 0x5101},
-{"linux/soundcard.h", "SNDCTL_SEQ_PANIC", 0x5111},
-{"linux/random.h", "RNDZAPENTCNT", 0x5204},
-{"linux/random.h", "RNDCLEARPOOL", 0x5206},
-{"linux/cdrom.h", "CDROMPAUSE", 0x5301},
-{"linux/cdrom.h", "CDROMRESUME", 0x5302},
-{"linux/cdrom.h", "CDROMPLAYMSF", 0x5303},
-{"linux/cdrom.h", "CDROMPLAYTRKIND", 0x5304},
-{"linux/cdrom.h", "CDROMREADTOCHDR", 0x5305},
-{"linux/cdrom.h", "CDROMREADTOCENTRY", 0x5306},
-{"linux/cdrom.h", "CDROMSTOP", 0x5307},
-{"linux/cdrom.h", "CDROMSTART", 0x5308},
-{"linux/cdrom.h", "CDROMEJECT", 0x5309},
-{"linux/cdrom.h", "CDROMVOLCTRL", 0x530a},
-{"linux/cdrom.h", "CDROMSUBCHNL", 0x530b},
-{"linux/cdrom.h", "CDROMREADMODE2", 0x530c},
-{"linux/cdrom.h", "CDROMREADMODE1", 0x530d},
-{"linux/cdrom.h", "CDROMREADAUDIO", 0x530e},
-{"linux/cdrom.h", "CDROMEJECT_SW", 0x530f},
-{"linux/cdrom.h", "CDROMMULTISESSION", 0x5310},
-{"linux/cdrom.h", "CDROM_GET_UPC", 0x5311},
-{"linux/cm206.h", "CDROM_GET_UPC", 0x5311},
-{"linux/cdrom.h", "CDROMRESET", 0x5312},
-{"linux/cm206.h", "CDROMRESET", 0x5312},
-{"linux/cdrom.h", "CDROMVOLREAD", 0x5313},
-{"linux/cdrom.h", "CDROMREADRAW", 0x5314},
-{"linux/cdrom.h", "CDROMREADCOOKED", 0x5315},
-{"linux/cdrom.h", "CDROMSEEK", 0x5316},
-{"linux/cdrom.h", "CDROMPLAYBLK", 0x5317},
-{"linux/cdrom.h", "CDROMREADALL", 0x5318},
-{"linux/cdrom.h", "CDROMCLOSETRAY", 0x5319},
-{"linux/cdrom.h", "CDROMLOADFROMSLOT", 0x531a},
-{"linux/ucdrom.h", "CDROM_SET_OPTIONS", 0x5320},
-{"linux/ucdrom.h", "CDROM_CLEAR_OPTIONS", 0x5321},
-{"linux/ucdrom.h", "CDROM_SELECT_SPEED", 0x5322},
-{"linux/ucdrom.h", "CDROM_SELECT_DISC", 0x5323},
-{"linux/ucdrom.h", "CDROM_MEDIA_CHANGED", 0x5325},
-{"linux/ucdrom.h", "CDROM_DRIVE_STATUS", 0x5326},
-{"linux/ucdrom.h", "CDROM_DISC_STATUS", 0x5327},
-{"linux/sbpcd.h", "CDROMAUDIOBUFSIZ", 0x5382},
-{"asm/ioctls.h", "TCGETS", 0x5401},
-{"asm/ioctls.h", "TCSETS", 0x5402},
-{"linux/soundcard.h", "SNDCTL_TMR_START", 0x5402},
-{"asm/ioctls.h", "TCSETSW", 0x5403},
-{"linux/soundcard.h", "SNDCTL_TMR_STOP", 0x5403},
-{"asm/ioctls.h", "TCSETSF", 0x5404},
-{"linux/soundcard.h", "SNDCTL_TMR_CONTINUE", 0x5404},
-{"asm/ioctls.h", "TCGETA", 0x5405},
-{"asm/ioctls.h", "TCSETA", 0x5406},
-{"asm/ioctls.h", "TCSETAW", 0x5407},
-{"asm/ioctls.h", "TCSETAF", 0x5408},
-{"asm/ioctls.h", "TCSBRK", 0x5409},
-{"asm/ioctls.h", "TCXONC", 0x540a},
-{"asm/ioctls.h", "TCFLSH", 0x540b},
-{"asm/ioctls.h", "TIOCEXCL", 0x540c},
-{"asm/ioctls.h", "TIOCNXCL", 0x540d},
-{"asm/ioctls.h", "TIOCSCTTY", 0x540e},
-{"asm/ioctls.h", "TIOCGPGRP", 0x540f},
-{"asm/ioctls.h", "TIOCSPGRP", 0x5410},
-{"asm/ioctls.h", "TIOCOUTQ", 0x5411},
-{"asm/ioctls.h", "TIOCSTI", 0x5412},
-{"asm/ioctls.h", "TIOCGWINSZ", 0x5413},
-{"asm/ioctls.h", "TIOCSWINSZ", 0x5414},
-{"asm/ioctls.h", "TIOCMGET", 0x5415},
-{"asm/ioctls.h", "TIOCMBIS", 0x5416},
-{"asm/ioctls.h", "TIOCMBIC", 0x5417},
-{"asm/ioctls.h", "TIOCMSET", 0x5418},
-{"asm/ioctls.h", "TIOCGSOFTCAR", 0x5419},
-{"asm/ioctls.h", "TIOCSSOFTCAR", 0x541a},
-{"asm/ioctls.h", "FIONREAD", 0x541b},
-{"asm/ioctls.h", "TIOCLINUX", 0x541c},
-{"asm/ioctls.h", "TIOCCONS", 0x541d},
-{"asm/ioctls.h", "TIOCGSERIAL", 0x541e},
-{"asm/ioctls.h", "TIOCSSERIAL", 0x541f},
-{"asm/ioctls.h", "TIOCPKT", 0x5420},
-{"asm/ioctls.h", "FIONBIO", 0x5421},
-{"asm/ioctls.h", "TIOCNOTTY", 0x5422},
-{"asm/ioctls.h", "TIOCSETD", 0x5423},
-{"asm/ioctls.h", "TIOCGETD", 0x5424},
-{"asm/ioctls.h", "TCSBRKP", 0x5425},
-{"asm/ioctls.h", "TIOCTTYGSTRUCT", 0x5426},
-{"asm/ioctls.h", "FIONCLEX", 0x5450},
-{"asm/ioctls.h", "FIOCLEX", 0x5451},
-{"asm/ioctls.h", "FIOASYNC", 0x5452},
-{"asm/ioctls.h", "TIOCSERCONFIG", 0x5453},
-{"asm/ioctls.h", "TIOCSERGWILD", 0x5454},
-{"asm/ioctls.h", "TIOCSERSWILD", 0x5455},
-{"asm/ioctls.h", "TIOCGLCKTRMIOS", 0x5456},
-{"asm/ioctls.h", "TIOCSLCKTRMIOS", 0x5457},
-{"asm/ioctls.h", "TIOCSERGSTRUCT", 0x5458},
-{"asm/ioctls.h", "TIOCSERGETLSR", 0x5459},
-{"asm/ioctls.h", "TIOCSERGETMULTI", 0x545a},
-{"asm/ioctls.h", "TIOCSERSETMULTI", 0x545b},
-{"asm/ioctls.h", "TIOCMIWAIT", 0x545c},
-{"asm/ioctls.h", "TIOCGICOUNT", 0x545d},
-{"linux/vt.h", "VT_OPENQRY", 0x5600},
-{"linux/vt.h", "VT_GETMODE", 0x5601},
-{"linux/vt.h", "VT_SETMODE", 0x5602},
-{"linux/vt.h", "VT_GETSTATE", 0x5603},
-{"linux/vt.h", "VT_SENDSIG", 0x5604},
-{"linux/vt.h", "VT_RELDISP", 0x5605},
-{"linux/vt.h", "VT_ACTIVATE", 0x5606},
-{"linux/vt.h", "VT_WAITACTIVE", 0x5607},
-{"linux/vt.h", "VT_DISALLOCATE", 0x5608},
-{"linux/vt.h", "VT_RESIZE", 0x5609},
-{"linux/vt.h", "VT_RESIZEX", 0x560a},
-{"linux/vt.h", "VT_LOCKSWITCH", 0x560b},
-{"linux/vt.h", "VT_UNLOCKSWITCH", 0x560c},
-{"linux/comstats.h", "COM_GETPORTSTATS", 0x631e},
-{"linux/comstats.h", "COM_CLRPORTSTATS", 0x631f},
-{"linux/comstats.h", "COM_GETBRDSTATS", 0x6320},
-{"linux/comstats.h", "COM_READPORT", 0x6328},
-{"linux/comstats.h", "COM_READBOARD", 0x6329},
-{"linux/comstats.h", "COM_READPANEL", 0x632a},
-{"linux/ncp_fs.h", "NCP_IOC_CONN_LOGGED_IN", 0x6e03},
-{"linux/cdk.h", "STL_BINTR", 0x7314},
-{"linux/cdk.h", "STL_BSTART", 0x7315},
-{"linux/cdk.h", "STL_BSTOP", 0x7316},
-{"linux/cdk.h", "STL_BRESET", 0x7317},
-{"linux/cdk.h", "STL_GETPFLAG", 0x7350},
-{"linux/cdk.h", "STL_SETPFLAG", 0x7351},
-{"linux/if_ppp.h", "PPPIOCXFERUNIT", 0x744e},
-{"asm/sockios.h", "FIOSETOWN", 0x8901},
-{"asm/sockios.h", "SIOCSPGRP", 0x8902},
-{"asm/sockios.h", "FIOGETOWN", 0x8903},
-{"asm/sockios.h", "SIOCGPGRP", 0x8904},
-{"asm/sockios.h", "SIOCATMARK", 0x8905},
-{"asm/sockios.h", "SIOCGSTAMP", 0x8906},
-{"linux/sockios.h", "SIOCADDRT", 0x890b},
-{"linux/sockios.h", "SIOCDELRT", 0x890c},
-{"linux/sockios.h", "SIOCGIFNAME", 0x8910},
-{"linux/sockios.h", "SIOCSIFLINK", 0x8911},
-{"linux/sockios.h", "SIOCGIFCONF", 0x8912},
-{"linux/sockios.h", "SIOCGIFFLAGS", 0x8913},
-{"linux/sockios.h", "SIOCSIFFLAGS", 0x8914},
-{"linux/sockios.h", "SIOCGIFADDR", 0x8915},
-{"linux/sockios.h", "SIOCSIFADDR", 0x8916},
-{"linux/sockios.h", "SIOCGIFDSTADDR", 0x8917},
-{"linux/sockios.h", "SIOCSIFDSTADDR", 0x8918},
-{"linux/sockios.h", "SIOCGIFBRDADDR", 0x8919},
-{"linux/sockios.h", "SIOCSIFBRDADDR", 0x891a},
-{"linux/sockios.h", "SIOCGIFNETMASK", 0x891b},
-{"linux/sockios.h", "SIOCSIFNETMASK", 0x891c},
-{"linux/sockios.h", "SIOCGIFMETRIC", 0x891d},
-{"linux/sockios.h", "SIOCSIFMETRIC", 0x891e},
-{"linux/sockios.h", "SIOCGIFMEM", 0x891f},
-{"linux/sockios.h", "SIOCSIFMEM", 0x8920},
-{"linux/sockios.h", "SIOCGIFMTU", 0x8921},
-{"linux/sockios.h", "SIOCSIFMTU", 0x8922},
-{"linux/sockios.h", "SIOCSIFHWADDR", 0x8924},
-{"linux/sockios.h", "SIOCGIFENCAP", 0x8925},
-{"linux/sockios.h", "SIOCSIFENCAP", 0x8926},
-{"linux/sockios.h", "SIOCGIFHWADDR", 0x8927},
-{"linux/sockios.h", "SIOCGIFSLAVE", 0x8929},
-{"linux/sockios.h", "SIOCSIFSLAVE", 0x8930},
-{"linux/sockios.h", "SIOCADDMULTI", 0x8931},
-{"linux/sockios.h", "SIOCDELMULTI", 0x8932},
-{"linux/sockios.h", "SIOCGIFBR", 0x8940},
-{"linux/sockios.h", "SIOCSIFBR", 0x8941},
-{"linux/sockios.h", "OLD_SIOCDARP", 0x8950},
-{"linux/sockios.h", "OLD_SIOCGARP", 0x8951},
-{"linux/sockios.h", "OLD_SIOCSARP", 0x8952},
-{"linux/sockios.h", "SIOCDARP", 0x8953},
-{"linux/sockios.h", "SIOCGARP", 0x8954},
-{"linux/sockios.h", "SIOCSARP", 0x8955},
-{"linux/sockios.h", "SIOCDRARP", 0x8960},
-{"linux/sockios.h", "SIOCGRARP", 0x8961},
-{"linux/sockios.h", "SIOCSRARP", 0x8962},
-{"linux/sockios.h", "SIOCGIFMAP", 0x8970},
-{"linux/sockios.h", "SIOCSIFMAP", 0x8971},
-{"linux/sockios.h", "SIOCADDDLCI", 0x8980},
-{"linux/sockios.h", "SIOCDELDLCI", 0x8981},
-{"linux/sockios.h", "SIOCPROTOPRIVATE", 0x89e0},
-{"linux/sockios.h", "SIOCDEVPRIVATE", 0x89f0},
-{"linux/sbpcd.h", "DDIOCSDBG", 0x9000},
-{"linux/cyclades.h", "CYGETMON", 0x435901},
-{"linux/cyclades.h", "CYGETTHRESH", 0x435902},
-{"linux/cyclades.h", "CYSETTHRESH", 0x435903},
-{"linux/cyclades.h", "CYGETDEFTHRESH", 0x435904},
-{"linux/cyclades.h", "CYSETDEFTHRESH", 0x435905},
-{"linux/cyclades.h", "CYGETTIMEOUT", 0x435906},
-{"linux/cyclades.h", "CYSETTIMEOUT", 0x435907},
-{"linux/cyclades.h", "CYGETDEFTIMEOUT", 0x435908},
-{"linux/cyclades.h", "CYSETDEFTIMEOUT", 0x435909},
-{"linux/ncp_fs.h", "NCP_IOC_GETMOUNTUID", 0x40026e02},
-{"linux/soundcard.h", "SNDCTL_DSP_SETTRIGGER", 0x40045010},
-{"linux/soundcard.h", "SNDCTL_SEQ_PERCMODE", 0x40045106},
-{"linux/soundcard.h", "SNDCTL_SEQ_TESTMIDI", 0x40045108},
-{"linux/soundcard.h", "SNDCTL_SEQ_RESETSAMPLES", 0x40045109},
-{"linux/soundcard.h", "SNDCTL_SEQ_THRESHOLD", 0x4004510d},
-{"linux/soundcard.h", "SNDCTL_FM_4OP_ENABLE", 0x4004510f},
-{"linux/random.h", "RNDADDTOENTCNT", 0x40045201},
-{"linux/soundcard.h", "SNDCTL_TMR_METRONOME", 0x40045407},
-{"linux/soundcard.h", "SNDCTL_TMR_SELECT", 0x40045408},
-{"linux/ext2_fs.h", "EXT2_IOC_SETFLAGS", 0x40046602},
-{"linux/msdos_fs.h", "VFAT_IOCTL_READDIR_SHORT", 0x40047202},
-{"linux/if_ppp.h", "PPPIOCSDEBUG", 0x40047440},
-{"linux/if_ppp.h", "PPPIOCSMAXCID", 0x40047451},
-{"linux/if_ppp.h", "PPPIOCSMRU", 0x40047452},
-{"linux/if_ppp.h", "PPPIOCSRASYNCMAP", 0x40047454},
-{"linux/if_ppp.h", "PPPIOCSASYNCMAP", 0x40047457},
-{"linux/if_ppp.h", "PPPIOCSFLAGS", 0x40047459},
-{"linux/isdn_ppp.h", "PPPIOCBUNDLE", 0x40047481},
-{"linux/isdn_ppp.h", "PPPIOCSMPFLAGS", 0x40047483},
-{"linux/isdn_ppp.h", "PPPIOCSMPMTU", 0x40047484},
-{"linux/isdn_ppp.h", "PPPIOCSMPMRU", 0x40047485},
-{"linux/ext2_fs.h", "EXT2_IOC_SETVERSION", 0x40047602},
-{"linux/soundcard.h", "SNDCTL_SEQ_OUTOFBAND", 0x40085112},
-{"linux/random.h", "RNDADDENTROPY", 0x40085203},
-{"linux/mtio.h", "MTIOCTOP", 0x40086d01},
-{"linux/if_ppp.h", "PPPIOCSNPMODE", 0x4008744b},
-{"linux/fd.h", "FDFMTTRK", 0x400c0248},
-{"linux/if_ppp.h", "PPPIOCSCOMPRESS", 0x400c744d},
-{"linux/fd.h", "FDSETMAXERRS", 0x4014024c},
-{"linux/soundcard.h", "SNDCTL_COPR_WDATA", 0x40144304},
-{"linux/soundcard.h", "SNDCTL_COPR_WCODE", 0x40144305},
-{"linux/fd.h", "FDSETPRM", 0x401c0242},
-{"linux/fd.h", "FDDEFPRM", 0x401c0243},
-{"linux/if_ppp.h", "PPPIOCSXASYNCMAP", 0x4020744f},
-{"linux/soundcard.h", "SNDCTL_FM_LOAD_INSTR", 0x40285107},
-{"linux/fd.h", "FDSETDRVPRM", 0x40580290},
-{"linux/soundcard.h", "SNDCTL_COPR_SENDMSG", 0x4fa44308},
-{"linux/smb_fs.h", "SMB_IOC_GETMOUNTUID", 0x80027501},
-{"linux/soundcard.h", "SOUND_MIXER_READ_VOLUME", 0x80044d00},
-{"linux/soundcard.h", "SOUND_MIXER_READ_BASS", 0x80044d01},
-{"linux/soundcard.h", "SOUND_MIXER_READ_TREBLE", 0x80044d02},
-{"linux/soundcard.h", "SOUND_MIXER_READ_SYNTH", 0x80044d03},
-{"linux/soundcard.h", "SOUND_MIXER_READ_PCM", 0x80044d04},
-{"linux/soundcard.h", "SOUND_MIXER_READ_SPEAKER", 0x80044d05},
-{"linux/soundcard.h", "SOUND_MIXER_READ_LINE", 0x80044d06},
-{"linux/soundcard.h", "SOUND_MIXER_READ_MIC", 0x80044d07},
-{"linux/soundcard.h", "SOUND_MIXER_READ_CD", 0x80044d08},
-{"linux/soundcard.h", "SOUND_MIXER_READ_IMIX", 0x80044d09},
-{"linux/soundcard.h", "SOUND_MIXER_READ_ALTPCM", 0x80044d0a},
-{"linux/soundcard.h", "SOUND_MIXER_READ_RECLEV", 0x80044d0b},
-{"linux/soundcard.h", "SOUND_MIXER_READ_IGAIN", 0x80044d0c},
-{"linux/soundcard.h", "SOUND_MIXER_READ_OGAIN", 0x80044d0d},
-{"linux/soundcard.h", "SOUND_MIXER_READ_LINE1", 0x80044d0e},
-{"linux/soundcard.h", "SOUND_MIXER_READ_LINE2", 0x80044d0f},
-{"linux/soundcard.h", "SOUND_MIXER_READ_LINE3", 0x80044d10},
-{"linux/soundcard.h", "SOUND_MIXER_READ_MUTE", 0x80044d1c},
-{"linux/soundcard.h", "SOUND_MIXER_READ_ENHANCE", 0x80044d1d},
-{"linux/soundcard.h", "SOUND_MIXER_READ_LOUD", 0x80044d1e},
-{"linux/soundcard.h", "SOUND_MIXER_READ_STEREODEVS", 0x80044dfb},
-{"linux/soundcard.h", "SOUND_MIXER_READ_CAPS", 0x80044dfc},
-{"linux/soundcard.h", "SOUND_MIXER_READ_RECMASK", 0x80044dfd},
-{"linux/soundcard.h", "SOUND_MIXER_READ_DEVMASK", 0x80044dfe},
-{"linux/soundcard.h", "SOUND_MIXER_READ_RECSRC", 0x80044dff},
-{"linux/soundcard.h", "SOUND_PCM_READ_RATE", 0x80045002},
-{"linux/soundcard.h", "SOUND_PCM_READ_BITS", 0x80045005},
-{"linux/soundcard.h", "SOUND_PCM_READ_CHANNELS", 0x80045006},
-{"linux/soundcard.h", "SOUND_PCM_READ_FILTER", 0x80045007},
-{"linux/soundcard.h", "SNDCTL_DSP_GETFMTS", 0x8004500b},
-{"linux/soundcard.h", "SNDCTL_DSP_GETCAPS", 0x8004500f},
-{"linux/soundcard.h", "SNDCTL_DSP_GETTRIGGER", 0x80045010},
-{"linux/soundcard.h", "SNDCTL_SEQ_GETOUTCOUNT", 0x80045104},
-{"linux/soundcard.h", "SNDCTL_SEQ_GETINCOUNT", 0x80045105},
-{"linux/soundcard.h", "SNDCTL_SEQ_NRSYNTHS", 0x8004510a},
-{"linux/soundcard.h", "SNDCTL_SEQ_NRMIDIS", 0x8004510b},
-{"linux/random.h", "RNDGETENTCNT", 0x80045200},
-{"linux/ext2_fs.h", "EXT2_IOC_GETFLAGS", 0x80046601},
-{"linux/mtio.h", "MTIOCPOS", 0x80046d03},
-{"linux/msdos_fs.h", "VFAT_IOCTL_READDIR_BOTH", 0x80047201},
-{"linux/if_ppp.h", "PPPIOCGDEBUG", 0x80047441},
-{"linux/if_ppp.h", "PPPIOCGMRU", 0x80047453},
-{"linux/if_ppp.h", "PPPIOCGRASYNCMAP", 0x80047455},
-{"linux/if_ppp.h", "PPPIOCGUNIT", 0x80047456},
-{"linux/if_ppp.h", "PPPIOCGASYNCMAP", 0x80047458},
-{"linux/if_ppp.h", "PPPIOCGFLAGS", 0x8004745a},
-{"linux/isdn_ppp.h", "PPPIOCGMPFLAGS", 0x80047482},
-{"linux/ext2_fs.h", "EXT2_IOC_GETVERSION", 0x80047601},
-{"linux/soundcard.h", "SNDCTL_DSP_MAPINBUF", 0x80085013},
-{"linux/soundcard.h", "SNDCTL_DSP_MAPOUTBUF", 0x80085014},
-{"linux/random.h", "RNDGETPOOL", 0x80085202},
-{"linux/if_ppp.h", "PPPIOCGIDLE", 0x8008743f},
-{"linux/soundcard.h", "SNDCTL_DSP_GETIPTR", 0x800c5011},
-{"linux/soundcard.h", "SNDCTL_DSP_GETOPTR", 0x800c5012},
-{"linux/ncp_fs.h", "NCP_IOC_NCPREQUEST", 0x800c6e01},
-{"linux/fd.h", "FDGETDRVTYP", 0x8010020f},
-{"linux/soundcard.h", "SNDCTL_DSP_GETOSPACE", 0x8010500c},
-{"linux/soundcard.h", "SNDCTL_DSP_GETISPACE", 0x8010500d},
-{"linux/fd.h", "FDGETMAXERRS", 0x8014020e},
-{"linux/fd.h", "FDWERRORGET", 0x80180217},
-{"linux/fd.h", "FDGETPRM", 0x801c0204},
-{"linux/mtio.h", "MTIOCGET", 0x801c6d02},
-{"linux/fd.h", "FDGETFDCSTAT", 0x80200215},
-{"linux/if_ppp.h", "PPPIOCGXASYNCMAP", 0x80207450},
-{"linux/fd.h", "FDGETDRVSTAT", 0x80340212},
-{"linux/fd.h", "FDPOLLDRVSTAT", 0x80340213},
-{"linux/fd.h", "FDGETDRVPRM", 0x80580211},
-{"linux/soundcard.h", "SNDCTL_COPR_RCVMSG", 0x8fa44309},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_VOLUME", 0xc0044d00},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_BASS", 0xc0044d01},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_TREBLE", 0xc0044d02},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_SYNTH", 0xc0044d03},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_PCM", 0xc0044d04},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_SPEAKER", 0xc0044d05},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_LINE", 0xc0044d06},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_MIC", 0xc0044d07},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_CD", 0xc0044d08},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_IMIX", 0xc0044d09},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_ALTPCM", 0xc0044d0a},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_RECLEV", 0xc0044d0b},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_IGAIN", 0xc0044d0c},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_OGAIN", 0xc0044d0d},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_LINE1", 0xc0044d0e},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_LINE2", 0xc0044d0f},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_LINE3", 0xc0044d10},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_MUTE", 0xc0044d1c},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_ENHANCE", 0xc0044d1d},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_LOUD", 0xc0044d1e},
-{"linux/soundcard.h", "SOUND_MIXER_WRITE_RECSRC", 0xc0044dff},
-{"linux/soundcard.h", "SNDCTL_DSP_SPEED", 0xc0045002},
-{"linux/soundcard.h", "SNDCTL_DSP_STEREO", 0xc0045003},
-{"linux/soundcard.h", "SNDCTL_DSP_GETBLKSIZE", 0xc0045004},
-{"linux/soundcard.h", "SNDCTL_DSP_SETFMT", 0xc0045005},
-{"linux/soundcard.h", "SOUND_PCM_WRITE_CHANNELS", 0xc0045006},
-{"linux/soundcard.h", "SOUND_PCM_WRITE_FILTER", 0xc0045007},
-{"linux/soundcard.h", "SNDCTL_DSP_SUBDIVIDE", 0xc0045009},
-{"linux/soundcard.h", "SNDCTL_DSP_SETFRAGMENT", 0xc004500a},
-{"linux/soundcard.h", "SNDCTL_SEQ_CTRLRATE", 0xc0045103},
-{"linux/soundcard.h", "SNDCTL_SYNTH_MEMAVL", 0xc004510e},
-{"linux/soundcard.h", "SNDCTL_TMR_TIMEBASE", 0xc0045401},
-{"linux/soundcard.h", "SNDCTL_TMR_TEMPO", 0xc0045405},
-{"linux/soundcard.h", "SNDCTL_TMR_SOURCE", 0xc0045406},
-{"linux/soundcard.h", "SNDCTL_MIDI_PRETIME", 0xc0046d00},
-{"linux/soundcard.h", "SNDCTL_MIDI_MPUMODE", 0xc0046d01},
-{"linux/if_ppp.h", "PPPIOCGNPMODE", 0xc008744c},
-{"linux/soundcard.h", "SNDCTL_COPR_RDATA", 0xc0144302},
-{"linux/soundcard.h", "SNDCTL_COPR_RCODE", 0xc0144303},
-{"linux/soundcard.h", "SNDCTL_COPR_RUN", 0xc0144306},
-{"linux/soundcard.h", "SNDCTL_COPR_HALT", 0xc0144307},
-{"linux/soundcard.h", "SNDCTL_MIDI_MPUCMD", 0xc0216d02},
-{"linux/isdn_ppp.h", "PPPIOCLINKINFO", 0xc0247480},
-{"linux/ncp_fs.h", "NCP_IOC_GET_FS_INFO", 0xc0286e04},
-{"linux/soundcard.h", "SNDCTL_MIDI_INFO", 0xc074510c},
-{"linux/soundcard.h", "SNDCTL_SYNTH_INFO", 0xc08c5102},
-{"linux/soundcard.h", "SNDCTL_COPR_LOAD", 0xcfb04301},
-{"linux/soundcard.h", "SNDCTL_PMGR_IFACE", 0xcfb85001},
-{"linux/soundcard.h", "SNDCTL_PMGR_ACCESS", 0xcfb85110},
+	{"linux/agpgart.h",	"AGPIOC_INFO",	0x4100},
+	{"linux/agpgart.h",	"AGPIOC_ACQUIRE",	0x4101},
+	{"linux/agpgart.h",	"AGPIOC_RELEASE",	0x4102},
+	{"linux/agpgart.h",	"AGPIOC_SETUP",	0x4103},
+	{"linux/agpgart.h",	"AGPIOC_RESERVE",	0x4104},
+	{"linux/agpgart.h",	"AGPIOC_PROTECT",	0x4105},
+	{"linux/agpgart.h",	"AGPIOC_ALLOCATE",	0x4106},
+	{"linux/agpgart.h",	"AGPIOC_DEALLOCATE",	0x4107},
+	{"linux/agpgart.h",	"AGPIOC_BIND",	0x4108},
+	{"linux/agpgart.h",	"AGPIOC_UNBIND",	0x4109},
+	{"linux/apm_bios.h",	"APM_IOC_STANDBY",	0x4101},
+	{"linux/apm_bios.h",	"APM_IOC_SUSPEND",	0x4102},
+	{"linux/atm_eni.h",	"ENI_MEMDUMP",	0x6160},
+	{"linux/atm_eni.h",	"ENI_SETMULT",	0x6167},
+	{"linux/atm_idt77105.h",	"IDT77105_GETSTAT",	0x6132},
+	{"linux/atm_idt77105.h",	"IDT77105_GETSTATZ",	0x6133},
+	{"linux/atm_nicstar.h",	"NS_GETPSTAT",	0x6161},
+	{"linux/atm_nicstar.h",	"NS_SETBUFLEV",	0x6162},
+	{"linux/atm_nicstar.h",	"NS_ADJBUFLEV",	0x6163},
+	{"linux/atm_tcp.h",	"SIOCSIFATMTCP",	0x6180},
+	{"linux/atm_tcp.h",	"ATMTCP_CREATE",	0x618e},
+	{"linux/atm_tcp.h",	"ATMTCP_REMOVE",	0x618f},
+	{"linux/atm_zatm.h",	"ZATM_GETPOOL",	0x6161},
+	{"linux/atm_zatm.h",	"ZATM_GETPOOLZ",	0x6162},
+	{"linux/atm_zatm.h",	"ZATM_SETPOOL",	0x6163},
+	{"linux/atm_zatm.h",	"ZATM_GETTHIST",	0x6164},
+	{"linux/atmarp.h",	"ATMARPD_CTRL",	0x61e1},
+	{"linux/atmarp.h",	"ATMARP_MKIP",	0x61e2},
+	{"linux/atmarp.h",	"ATMARP_SETENTRY",	0x61e3},
+	{"linux/atmarp.h",	"ATMARP_ENCAP",	0x61e5},
+	{"linux/atmclip.h",	"SIOCMKCLIP",	0x61e0},
+	{"linux/atmdev.h",	"ATM_GETLINKRATE",	0x6181},
+	{"linux/atmdev.h",	"ATM_GETNAMES",	0x6183},
+	{"linux/atmdev.h",	"ATM_GETTYPE",	0x6184},
+	{"linux/atmdev.h",	"ATM_GETESI",	0x6185},
+	{"linux/atmdev.h",	"ATM_GETADDR",	0x6186},
+	{"linux/atmdev.h",	"ATM_RSTADDR",	0x6187},
+	{"linux/atmdev.h",	"ATM_ADDADDR",	0x6188},
+	{"linux/atmdev.h",	"ATM_DELADDR",	0x6189},
+	{"linux/atmdev.h",	"ATM_GETCIRANGE",	0x618a},
+	{"linux/atmdev.h",	"ATM_SETCIRANGE",	0x618b},
+	{"linux/atmdev.h",	"ATM_SETESI",	0x618c},
+	{"linux/atmdev.h",	"ATM_SETESIF",	0x618d},
+	{"linux/atmdev.h",	"ATM_GETSTAT",	0x6150},
+	{"linux/atmdev.h",	"ATM_GETSTATZ",	0x6151},
+	{"linux/atmdev.h",	"ATM_GETLOOP",	0x6152},
+	{"linux/atmdev.h",	"ATM_SETLOOP",	0x6153},
+	{"linux/atmdev.h",	"ATM_QUERYLOOP",	0x6154},
+	{"linux/atmdev.h",	"ATM_SETSC",	0x61f1},
+	{"linux/atmlec.h",	"ATMLEC_CTRL",	0x61d0},
+	{"linux/atmlec.h",	"ATMLEC_DATA",	0x61d1},
+	{"linux/atmlec.h",	"ATMLEC_MCAST",	0x61d2},
+	{"linux/atmmpc.h",	"ATMMPC_CTRL",	0x61d8},
+	{"linux/atmmpc.h",	"ATMMPC_DATA",	0x61d9},
+	{"linux/atmsvc.h",	"ATMSIGD_CTRL",	0x61f0},
+	{"linux/auto_fs.h",	"AUTOFS_IOC_READY",	0x9360},
+	{"linux/auto_fs.h",	"AUTOFS_IOC_FAIL",	0x9361},
+	{"linux/auto_fs.h",	"AUTOFS_IOC_CATATONIC",	0x9362},
+	{"linux/auto_fs.h",	"AUTOFS_IOC_PROTOVER",	0x9363},
+	{"linux/auto_fs.h",	"AUTOFS_IOC_SETTIMEOUT",	0x9364},
+	{"linux/auto_fs.h",	"AUTOFS_IOC_EXPIRE",	0x9365},
+	{"linux/auto_fs4.h",	"AUTOFS_IOC_EXPIRE_MULTI",	0x9366},
+	{"linux/blkpg.h",	"BLKPG",	0x1269},
+	{"linux/capi.h",	"CAPI_REGISTER",	0x4301},
+	{"linux/capi.h",	"CAPI_GET_MANUFACTURER",	0x4306},
+	{"linux/capi.h",	"CAPI_GET_VERSION",	0x4307},
+	{"linux/capi.h",	"CAPI_GET_SERIAL",	0x4308},
+	{"linux/capi.h",	"CAPI_GET_PROFILE",	0x4309},
+	{"linux/capi.h",	"CAPI_MANUFACTURER_CMD",	0x4320},
+	{"linux/capi.h",	"CAPI_GET_ERRCODE",	0x4321},
+	{"linux/capi.h",	"CAPI_INSTALLED",	0x4322},
+	{"linux/capi.h",	"CAPI_GET_FLAGS",	0x4323},
+	{"linux/capi.h",	"CAPI_SET_FLAGS",	0x4324},
+	{"linux/capi.h",	"CAPI_CLR_FLAGS",	0x4325},
+	{"linux/capi.h",	"CAPI_NCCI_OPENCOUNT",	0x4326},
+	{"linux/capi.h",	"CAPI_NCCI_GETUNIT",	0x4327},
+	{"linux/cciss_ioctl.h",	"CCISS_GETPCIINFO",	0x4201},
+	{"linux/cciss_ioctl.h",	"CCISS_GETINTINFO",	0x4202},
+	{"linux/cciss_ioctl.h",	"CCISS_SETINTINFO",	0x4203},
+	{"linux/cciss_ioctl.h",	"CCISS_GETNODENAME",	0x4204},
+	{"linux/cciss_ioctl.h",	"CCISS_SETNODENAME",	0x4205},
+	{"linux/cciss_ioctl.h",	"CCISS_GETHEARTBEAT",	0x4206},
+	{"linux/cciss_ioctl.h",	"CCISS_GETBUSTYPES",	0x4207},
+	{"linux/cciss_ioctl.h",	"CCISS_GETFIRMVER",	0x4208},
+	{"linux/cciss_ioctl.h",	"CCISS_GETDRIVVER",	0x4209},
+	{"linux/cciss_ioctl.h",	"CCISS_REVALIDVOLS",	0x420a},
+	{"linux/cciss_ioctl.h",	"CCISS_PASSTHRU",	0x420b},
+	{"linux/cdk.h",	"STL_BINTR",	0x7314},
+	{"linux/cdk.h",	"STL_BSTART",	0x7315},
+	{"linux/cdk.h",	"STL_BSTOP",	0x7316},
+	{"linux/cdk.h",	"STL_BRESET",	0x7317},
+	{"linux/cdk.h",	"STL_GETPFLAG",	0x7350},
+	{"linux/cdk.h",	"STL_SETPFLAG",	0x7351},
+	{"linux/coda.h",	"CIOC_KERNEL_VERSION",	0x630a},
+	{"linux/comstats.h",	"COM_GETPORTSTATS",	0x631e},
+	{"linux/comstats.h",	"COM_CLRPORTSTATS",	0x631f},
+	{"linux/comstats.h",	"COM_GETBRDSTATS",	0x6320},
+	{"linux/comstats.h",	"COM_READPORT",	0x6328},
+	{"linux/comstats.h",	"COM_READBOARD",	0x6329},
+	{"linux/comstats.h",	"COM_READPANEL",	0x632a},
+	{"linux/devfs_fs.h",	"DEVFSDIOC_GET_PROTO_REV",	0x6400},
+	{"linux/devfs_fs.h",	"DEVFSDIOC_SET_EVENT_MASK",	0x6402},
+	{"linux/devfs_fs.h",	"DEVFSDIOC_RELEASE_EVENT_QUEUE",	0x6403},
+	{"linux/devfs_fs.h",	"DEVFSDIOC_SET_DEBUG_MASK",	0x6404},
+	{"linux/dn.h",	"SIOCSNETADDR",	0x89e0},
+	{"linux/dn.h",	"SIOCGNETADDR",	0x89e1},
+	{"linux/dn.h",	"OSIOCSNETADDR",	0x89e0},
+	{"linux/dn.h",	"OSIOCGNETADDR",	0x89e1},
+	{"linux/elevator.h",	"BLKELVGET",	0x126a},
+	{"linux/elevator.h",	"BLKELVSET",	0x126b},
+	{"linux/ext2_fs.h",	"EXT2_IOC_GETFLAGS",	0x6601},
+	{"linux/ext2_fs.h",	"EXT2_IOC_SETFLAGS",	0x6602},
+	{"linux/ext2_fs.h",	"EXT2_IOC_GETVERSION",	0x7601},
+	{"linux/ext2_fs.h",	"EXT2_IOC_SETVERSION",	0x7602},
+	{"linux/fb.h",	"FBIOGET_VBLANK",	0x4612},
+	{"linux/fd.h",	"FDCLRPRM",	0x241},
+	{"linux/fd.h",	"FDSETPRM",	0x242},
+	{"linux/fd.h",	"FDDEFPRM",	0x243},
+	{"linux/fd.h",	"FDGETPRM",	0x204},
+	{"linux/fd.h",	"FDMSGON",	0x245},
+	{"linux/fd.h",	"FDMSGOFF",	0x246},
+	{"linux/fd.h",	"FDFMTBEG",	0x247},
+	{"linux/fd.h",	"FDFMTTRK",	0x248},
+	{"linux/fd.h",	"FDFMTEND",	0x249},
+	{"linux/fd.h",	"FDSETEMSGTRESH",	0x24a},
+	{"linux/fd.h",	"FDFLUSH",	0x24b},
+	{"linux/fd.h",	"FDSETMAXERRS",	0x24c},
+	{"linux/fd.h",	"FDGETMAXERRS",	0x20e},
+	{"linux/fd.h",	"FDGETDRVTYP",	0x20f},
+	{"linux/fd.h",	"FDSETDRVPRM",	0x290},
+	{"linux/fd.h",	"FDGETDRVPRM",	0x211},
+	{"linux/fd.h",	"FDGETDRVSTAT",	0x212},
+	{"linux/fd.h",	"FDPOLLDRVSTAT",	0x213},
+	{"linux/fd.h",	"FDRESET",	0x254},
+	{"linux/fd.h",	"FDGETFDCSTAT",	0x215},
+	{"linux/fd.h",	"FDWERRORCLR",	0x256},
+	{"linux/fd.h",	"FDWERRORGET",	0x217},
+	{"linux/fd.h",	"FDRAWCMD",	0x258},
+	{"linux/fd.h",	"FDTWADDLE",	0x259},
+	{"linux/fd.h",	"FDEJECT",	0x25a},
+	{"linux/fs.h",	"BLKROSET",	0x125d},
+	{"linux/fs.h",	"BLKROGET",	0x125e},
+	{"linux/fs.h",	"BLKRRPART",	0x125f},
+	{"linux/fs.h",	"BLKGETSIZE",	0x1260},
+	{"linux/fs.h",	"BLKFLSBUF",	0x1261},
+	{"linux/fs.h",	"BLKRASET",	0x1262},
+	{"linux/fs.h",	"BLKRAGET",	0x1263},
+	{"linux/fs.h",	"BLKFRASET",	0x1264},
+	{"linux/fs.h",	"BLKFRAGET",	0x1265},
+	{"linux/fs.h",	"BLKSECTSET",	0x1266},
+	{"linux/fs.h",	"BLKSECTGET",	0x1267},
+	{"linux/fs.h",	"BLKSSZGET",	0x1268},
+	{"linux/fs.h",	"BLKPG",	0x1269},
+	{"linux/fs.h",	"BLKELVGET",	0x126a},
+	{"linux/fs.h",	"BLKELVSET",	0x126b},
+	{"linux/fs.h",	"FIBMAP",	0x1},
+	{"linux/fs.h",	"FIGETBSZ",	0x2},
+	{"linux/i2o-dev.h",	"I2OGETIOPS",	0x6900},
+	{"linux/i2o-dev.h",	"I2OHRTGET",	0x6901},
+	{"linux/i2o-dev.h",	"I2OLCTGET",	0x6902},
+	{"linux/i2o-dev.h",	"I2OPARMSET",	0x6903},
+	{"linux/i2o-dev.h",	"I2OPARMGET",	0x6904},
+	{"linux/i2o-dev.h",	"I2OSWDL",	0x6905},
+	{"linux/i2o-dev.h",	"I2OSWUL",	0x6906},
+	{"linux/i2o-dev.h",	"I2OSWDEL",	0x6907},
+	{"linux/i2o-dev.h",	"I2OVALIDATE",	0x6908},
+	{"linux/i2o-dev.h",	"I2OHTML",	0x6909},
+	{"linux/i2o-dev.h",	"I2OEVTREG",	0x690a},
+	{"linux/i2o-dev.h",	"I2OEVTGET",	0x690b},
+	{"linux/if_ppp.h",	"PPPIOCGFLAGS",	0x745a},
+	{"linux/if_ppp.h",	"PPPIOCSFLAGS",	0x7459},
+	{"linux/if_ppp.h",	"PPPIOCGASYNCMAP",	0x7458},
+	{"linux/if_ppp.h",	"PPPIOCSASYNCMAP",	0x7457},
+	{"linux/if_ppp.h",	"PPPIOCGUNIT",	0x7456},
+	{"linux/if_ppp.h",	"PPPIOCGRASYNCMAP",	0x7455},
+	{"linux/if_ppp.h",	"PPPIOCSRASYNCMAP",	0x7454},
+	{"linux/if_ppp.h",	"PPPIOCGMRU",	0x7453},
+	{"linux/if_ppp.h",	"PPPIOCSMRU",	0x7452},
+	{"linux/if_ppp.h",	"PPPIOCSMAXCID",	0x7451},
+	{"linux/if_ppp.h",	"PPPIOCGXASYNCMAP",	0x7450},
+	{"linux/if_ppp.h",	"PPPIOCSXASYNCMAP",	0x744f},
+	{"linux/if_ppp.h",	"PPPIOCXFERUNIT",	0x744e},
+	{"linux/if_ppp.h",	"PPPIOCSCOMPRESS",	0x744d},
+	{"linux/if_ppp.h",	"PPPIOCGNPMODE",	0x744c},
+	{"linux/if_ppp.h",	"PPPIOCSNPMODE",	0x744b},
+	{"linux/if_ppp.h",	"PPPIOCGDEBUG",	0x7441},
+	{"linux/if_ppp.h",	"PPPIOCSDEBUG",	0x7440},
+	{"linux/if_ppp.h",	"PPPIOCGIDLE",	0x743f},
+	{"linux/if_ppp.h",	"PPPIOCNEWUNIT",	0x743e},
+	{"linux/if_ppp.h",	"PPPIOCATTACH",	0x743d},
+	{"linux/if_ppp.h",	"PPPIOCDETACH",	0x743c},
+	{"linux/if_ppp.h",	"PPPIOCSMRRU",	0x743b},
+	{"linux/if_ppp.h",	"PPPIOCCONNECT",	0x743a},
+	{"linux/if_ppp.h",	"PPPIOCDISCONN",	0x7439},
+	{"linux/if_ppp.h",	"PPPIOCATTCHAN",	0x7438},
+	{"linux/if_ppp.h",	"PPPIOCGCHAN",	0x7437},
+	{"linux/if_pppox.h",	"PPPOEIOCSFWD",	0xb100},
+	{"linux/if_pppox.h",	"PPPOEIOCDFWD",	0xb101},
+	{"linux/input.h",	"EVIOCGVERSION",	0x4501},
+	{"linux/input.h",	"EVIOCGID",	0x4502},
+	{"linux/input.h",	"EVIOCGREP",	0x4503},
+	{"linux/input.h",	"EVIOCSREP",	0x4503},
+	{"linux/input.h",	"EVIOCGKEYCODE",	0x4504},
+	{"linux/input.h",	"EVIOCSKEYCODE",	0x4504},
+	{"linux/input.h",	"EVIOCGKEY",	0x4505},
+	{"linux/isdn.h",	"IIOCNETAIF",	0x4901},
+	{"linux/isdn.h",	"IIOCNETDIF",	0x4902},
+	{"linux/isdn.h",	"IIOCNETSCF",	0x4903},
+	{"linux/isdn.h",	"IIOCNETGCF",	0x4904},
+	{"linux/isdn.h",	"IIOCNETANM",	0x4905},
+	{"linux/isdn.h",	"IIOCNETDNM",	0x4906},
+	{"linux/isdn.h",	"IIOCNETGNM",	0x4907},
+	{"linux/isdn.h",	"IIOCGETSET",	0x4908},
+	{"linux/isdn.h",	"IIOCSETSET",	0x4909},
+	{"linux/isdn.h",	"IIOCSETVER",	0x490a},
+	{"linux/isdn.h",	"IIOCNETHUP",	0x490b},
+	{"linux/isdn.h",	"IIOCSETGST",	0x490c},
+	{"linux/isdn.h",	"IIOCSETBRJ",	0x490d},
+	{"linux/isdn.h",	"IIOCSIGPRF",	0x490e},
+	{"linux/isdn.h",	"IIOCGETPRF",	0x490f},
+	{"linux/isdn.h",	"IIOCSETPRF",	0x4910},
+	{"linux/isdn.h",	"IIOCGETMAP",	0x4911},
+	{"linux/isdn.h",	"IIOCSETMAP",	0x4912},
+	{"linux/isdn.h",	"IIOCNETASL",	0x4913},
+	{"linux/isdn.h",	"IIOCNETDIL",	0x4914},
+	{"linux/isdn.h",	"IIOCGETCPS",	0x4915},
+	{"linux/isdn.h",	"IIOCGETDVR",	0x4916},
+	{"linux/isdn.h",	"IIOCNETLCR",	0x4917},
+	{"linux/isdn.h",	"IIOCNETDWRSET",	0x4918},
+	{"linux/isdn.h",	"IIOCNETALN",	0x4920},
+	{"linux/isdn.h",	"IIOCNETDLN",	0x4921},
+	{"linux/isdn.h",	"IIOCNETGPN",	0x4922},
+	{"linux/isdn.h",	"IIOCDBGVAR",	0x497f},
+	{"linux/isdn.h",	"IIOCDRVCTL",	0x4980},
+	{"linux/isdn_ppp.h",	"PPPIOCGCALLINFO",	0x7480},
+	{"linux/isdn_ppp.h",	"PPPIOCBUNDLE",	0x7481},
+	{"linux/isdn_ppp.h",	"PPPIOCGMPFLAGS",	0x7482},
+	{"linux/isdn_ppp.h",	"PPPIOCSMPFLAGS",	0x7483},
+	{"linux/isdn_ppp.h",	"PPPIOCSMPMTU",	0x7484},
+	{"linux/isdn_ppp.h",	"PPPIOCSMPMRU",	0x7485},
+	{"linux/isdn_ppp.h",	"PPPIOCGCOMPRESSORS",	0x7486},
+	{"linux/isdn_ppp.h",	"PPPIOCSCOMPRESSOR",	0x7487},
+	{"linux/isdn_ppp.h",	"PPPIOCGIFNAME",	0x7488},
+	{"linux/ixjuser.h",	"IXJCTL_DSP_RESET",	0x71c0},
+	{"linux/ixjuser.h",	"IXJCTL_CARDTYPE",	0x71c1},
+	{"linux/ixjuser.h",	"IXJCTL_SERIAL",	0x71c2},
+	{"linux/ixjuser.h",	"IXJCTL_DSP_TYPE",	0x71c3},
+	{"linux/ixjuser.h",	"IXJCTL_DSP_VERSION",	0x71c4},
+	{"linux/ixjuser.h",	"IXJCTL_VERSION",	0x71da},
+	{"linux/ixjuser.h",	"IXJCTL_DSP_IDLE",	0x71c5},
+	{"linux/ixjuser.h",	"IXJCTL_TESTRAM",	0x71c6},
+	{"linux/ixjuser.h",	"IXJCTL_SET_FILTER",	0x71c7},
+	{"linux/ixjuser.h",	"IXJCTL_GET_FILTER_HIST",	0x71c8},
+	{"linux/ixjuser.h",	"IXJCTL_FILTER_CADENCE",	0x71d6},
+	{"linux/ixjuser.h",	"IXJCTL_PLAY_CID",	0x71d7},
+	{"linux/ixjuser.h",	"IXJCTL_INIT_TONE",	0x71c9},
+	{"linux/ixjuser.h",	"IXJCTL_TONE_CADENCE",	0x71ca},
+	{"linux/ixjuser.h",	"IXJCTL_AEC_START",	0x71cb},
+	{"linux/ixjuser.h",	"IXJCTL_AEC_STOP",	0x71cc},
+	{"linux/ixjuser.h",	"IXJCTL_AEC_GET_LEVEL",	0x71cd},
+	{"linux/ixjuser.h",	"IXJCTL_SET_LED",	0x71ce},
+	{"linux/ixjuser.h",	"IXJCTL_MIXER",	0x71cf},
+	{"linux/ixjuser.h",	"IXJCTL_DAA_COEFF_SET",	0x71d0},
+	{"linux/ixjuser.h",	"IXJCTL_PORT",	0x71d1},
+	{"linux/ixjuser.h",	"IXJCTL_DAA_AGAIN",	0x71d2},
+	{"linux/ixjuser.h",	"IXJCTL_PSTN_LINETEST",	0x71d3},
+	{"linux/ixjuser.h",	"IXJCTL_CID",	0x71d4},
+	{"linux/ixjuser.h",	"IXJCTL_VMWI",	0x71d8},
+	{"linux/ixjuser.h",	"IXJCTL_CIDCW",	0x71d9},
+	{"linux/ixjuser.h",	"IXJCTL_POTS_PSTN",	0x71d5},
+	{"linux/ixjuser.h",	"IXJCTL_HZ",	0x71e0},
+	{"linux/ixjuser.h",	"IXJCTL_RATE",	0x71e1},
+	{"linux/ixjuser.h",	"IXJCTL_FRAMES_READ",	0x71e2},
+	{"linux/ixjuser.h",	"IXJCTL_FRAMES_WRITTEN",	0x71e3},
+	{"linux/ixjuser.h",	"IXJCTL_READ_WAIT",	0x71e4},
+	{"linux/ixjuser.h",	"IXJCTL_WRITE_WAIT",	0x71e5},
+	{"linux/ixjuser.h",	"IXJCTL_DRYBUFFER_READ",	0x71e6},
+	{"linux/ixjuser.h",	"IXJCTL_DRYBUFFER_CLEAR",	0x71e7},
+	{"linux/ixjuser.h",	"IXJCTL_INTERCOM_START",	0x71fd},
+	{"linux/ixjuser.h",	"IXJCTL_INTERCOM_STOP",	0x71fe},
+	{"linux/jffs.h",	"JFFS_PRINT_HASH",	0x745a},
+	{"linux/jffs.h",	"JFFS_PRINT_TREE",	0x745b},
+	{"linux/jffs.h",	"JFFS_GET_STATUS",	0x745c},
+	{"linux/joystick.h",	"JSIOCGVERSION",	0x6a01},
+	{"linux/joystick.h",	"JSIOCGAXES",	0x6a11},
+	{"linux/joystick.h",	"JSIOCGBUTTONS",	0x6a12},
+	{"linux/joystick.h",	"JSIOCSCORR",	0x6a21},
+	{"linux/joystick.h",	"JSIOCGCORR",	0x6a22},
+	{"linux/lvm.h",	"VG_CREATE_OLD",	0xfe00},
+	{"linux/lvm.h",	"VG_REMOVE",	0xfe01},
+	{"linux/lvm.h",	"VG_EXTEND",	0xfe03},
+	{"linux/lvm.h",	"VG_REDUCE",	0xfe04},
+	{"linux/lvm.h",	"VG_STATUS",	0xfe05},
+	{"linux/lvm.h",	"VG_STATUS_GET_COUNT",	0xfe06},
+	{"linux/lvm.h",	"VG_STATUS_GET_NAMELIST",	0xfe07},
+	{"linux/lvm.h",	"VG_SET_EXTENDABLE",	0xfe08},
+	{"linux/lvm.h",	"VG_RENAME",	0xfe09},
+	{"linux/lvm.h",	"VG_CREATE",	0xfe0a},
+	{"linux/lvm.h",	"LV_CREATE",	0xfe20},
+	{"linux/lvm.h",	"LV_REMOVE",	0xfe21},
+	{"linux/lvm.h",	"LV_ACTIVATE",	0xfe22},
+	{"linux/lvm.h",	"LV_DEACTIVATE",	0xfe23},
+	{"linux/lvm.h",	"LV_EXTEND",	0xfe24},
+	{"linux/lvm.h",	"LV_REDUCE",	0xfe25},
+	{"linux/lvm.h",	"LV_STATUS_BYNAME",	0xfe26},
+	{"linux/lvm.h",	"LV_STATUS_BYINDEX",	0xfe27},
+	{"linux/lvm.h",	"LV_SET_ACCESS",	0xfe28},
+	{"linux/lvm.h",	"LV_SET_ALLOCATION",	0xfe29},
+	{"linux/lvm.h",	"LV_SET_STATUS",	0xfe2a},
+	{"linux/lvm.h",	"LE_REMAP",	0xfe2b},
+	{"linux/lvm.h",	"LV_SNAPSHOT_USE_RATE",	0xfe2c},
+	{"linux/lvm.h",	"LV_STATUS_BYDEV",	0xfe2e},
+	{"linux/lvm.h",	"LV_RENAME",	0xfe2f},
+	{"linux/lvm.h",	"LV_BMAP",	0xfe30},
+	{"linux/lvm.h",	"PV_STATUS",	0xfe40},
+	{"linux/lvm.h",	"PV_CHANGE",	0xfe41},
+	{"linux/lvm.h",	"PV_FLUSH",	0xfe42},
+	{"linux/lvm.h",	"PE_LOCK_UNLOCK",	0xfe50},
+	{"linux/lvm.h",	"LVM_GET_IOP_VERSION",	0xfe98},
+	{"linux/lvm.h",	"LVM_RESET",	0xfe99},
+	{"linux/lvm.h",	"LVM_LOCK_LVM",	0xff00},
+	{"linux/matroxfb.h",	"MATROXFB_SET_OUTPUT_MODE",	0x6efa},
+	{"linux/matroxfb.h",	"MATROXFB_GET_OUTPUT_MODE",	0x6efa},
+	{"linux/matroxfb.h",	"MATROXFB_SET_OUTPUT_CONNECTION",	0x6ef8},
+	{"linux/matroxfb.h",	"MATROXFB_GET_OUTPUT_CONNECTION",	0x6ef8},
+	{"linux/matroxfb.h",	"MATROXFB_GET_AVAILABLE_OUTPUTS",	0x6ef9},
+	{"linux/matroxfb.h",	"MATROXFB_GET_ALL_OUTPUTS",	0x6efb},
+	{"linux/msdos_fs.h",	"VFAT_IOCTL_READDIR_BOTH",	0x7201},
+	{"linux/msdos_fs.h",	"VFAT_IOCTL_READDIR_SHORT",	0x7202},
+	{"linux/mtio.h",	"MTIOCTOP",	0x6d01},
+	{"linux/mtio.h",	"MTIOCGET",	0x6d02},
+	{"linux/mtio.h",	"MTIOCPOS",	0x6d03},
+	{"linux/mtio.h",	"MTIOCGETCONFIG",	0x6d04},
+	{"linux/mtio.h",	"MTIOCSETCONFIG",	0x6d05},
+	{"linux/mtio.h",	"MTIOCRDFTSEG",	0x6d06},
+	{"linux/mtio.h",	"MTIOCWRFTSEG",	0x6d07},
+	{"linux/mtio.h",	"MTIOCVOLINFO",	0x6d08},
+	{"linux/mtio.h",	"MTIOCGETSIZE",	0x6d09},
+	{"linux/mtio.h",	"MTIOCFTFORMAT",	0x6d0a},
+	{"linux/mtio.h",	"MTIOCFTCMD",	0x6d0b},
+	{"linux/nbd.h",	"NBD_SET_SOCK",	0xab00},
+	{"linux/nbd.h",	"NBD_SET_BLKSIZE",	0xab01},
+	{"linux/nbd.h",	"NBD_SET_SIZE",	0xab02},
+	{"linux/nbd.h",	"NBD_DO_IT",	0xab03},
+	{"linux/nbd.h",	"NBD_CLEAR_SOCK",	0xab04},
+	{"linux/nbd.h",	"NBD_CLEAR_QUE",	0xab05},
+	{"linux/nbd.h",	"NBD_PRINT_DEBUG",	0xab06},
+	{"linux/nbd.h",	"NBD_SET_SIZE_BLOCKS",	0xab07},
+	{"linux/nbd.h",	"NBD_DISCONNECT",	0xab08},
+	{"linux/ncp_fs.h",	"NCP_IOC_NCPREQUEST",	0x6e01},
+	{"linux/ncp_fs.h",	"NCP_IOC_GETMOUNTUID",	0x6e02},
+	{"linux/ncp_fs.h",	"NCP_IOC_GETMOUNTUID2",	0x6e02},
+	{"linux/ncp_fs.h",	"NCP_IOC_CONN_LOGGED_IN",	0x6e03},
+	{"linux/ncp_fs.h",	"NCP_IOC_GET_FS_INFO",	0x6e04},
+	{"linux/ncp_fs.h",	"NCP_IOC_GET_FS_INFO_V2",	0x6e04},
+	{"linux/ncp_fs.h",	"NCP_IOC_SIGN_INIT",	0x6e05},
+	{"linux/ncp_fs.h",	"NCP_IOC_SIGN_WANTED",	0x6e06},
+	{"linux/ncp_fs.h",	"NCP_IOC_SET_SIGN_WANTED",	0x6e06},
+	{"linux/ncp_fs.h",	"NCP_IOC_LOCKUNLOCK",	0x6e07},
+	{"linux/ncp_fs.h",	"NCP_IOC_GETROOT",	0x6e08},
+	{"linux/ncp_fs.h",	"NCP_IOC_SETROOT",	0x6e08},
+	{"linux/ncp_fs.h",	"NCP_IOC_GETOBJECTNAME",	0x6e09},
+	{"linux/ncp_fs.h",	"NCP_IOC_SETOBJECTNAME",	0x6e09},
+	{"linux/ncp_fs.h",	"NCP_IOC_GETPRIVATEDATA",	0x6e0a},
+	{"linux/ncp_fs.h",	"NCP_IOC_SETPRIVATEDATA",	0x6e0a},
+	{"linux/ncp_fs.h",	"NCP_IOC_GETCHARSETS",	0x6e0b},
+	{"linux/ncp_fs.h",	"NCP_IOC_SETCHARSETS",	0x6e0b},
+	{"linux/ncp_fs.h",	"NCP_IOC_GETDENTRYTTL",	0x6e0c},
+	{"linux/ncp_fs.h",	"NCP_IOC_SETDENTRYTTL",	0x6e0c},
+	{"linux/nvram.h",	"NVRAM_INIT",	0x7040},
+	{"linux/nvram.h",	"NVRAM_SETCKS",	0x7041},
+	{"linux/pmu.h",	"PMU_IOC_SLEEP",	0x4200},
+	{"linux/pmu.h",	"PMU_IOC_GET_BACKLIGHT",	0x4201},
+	{"linux/pmu.h",	"PMU_IOC_SET_BACKLIGHT",	0x4202},
+	{"linux/pmu.h",	"PMU_IOC_GET_MODEL",	0x4203},
+	{"linux/pmu.h",	"PMU_IOC_HAS_ADB",	0x4204},
+	{"linux/ppdev.h",	"PPSETMODE",	0x7080},
+	{"linux/ppdev.h",	"PPRSTATUS",	0x7081},
+	{"linux/ppdev.h",	"PPRCONTROL",	0x7083},
+	{"linux/ppdev.h",	"PPWCONTROL",	0x7084},
+	{"linux/ppdev.h",	"PPFCONTROL",	0x708e},
+	{"linux/ppdev.h",	"PPRDATA",	0x7085},
+	{"linux/ppdev.h",	"PPWDATA",	0x7086},
+	{"linux/ppdev.h",	"PPCLAIM",	0x708b},
+	{"linux/ppdev.h",	"PPRELEASE",	0x708c},
+	{"linux/ppdev.h",	"PPYIELD",	0x708d},
+	{"linux/ppdev.h",	"PPEXCL",	0x708f},
+	{"linux/ppdev.h",	"PPDATADIR",	0x7090},
+	{"linux/ppdev.h",	"PPNEGOT",	0x7091},
+	{"linux/ppdev.h",	"PPWCTLONIRQ",	0x7092},
+	{"linux/ppdev.h",	"PPCLRIRQ",	0x7093},
+	{"linux/ppdev.h",	"PPSETPHASE",	0x7094},
+	{"linux/ppdev.h",	"PPGETTIME",	0x7095},
+	{"linux/ppdev.h",	"PPSETTIME",	0x7096},
+	{"linux/random.h",	"RNDGETENTCNT",	0x5200},
+	{"linux/random.h",	"RNDADDTOENTCNT",	0x5201},
+	{"linux/random.h",	"RNDGETPOOL",	0x5202},
+	{"linux/random.h",	"RNDADDENTROPY",	0x5203},
+	{"linux/random.h",	"RNDZAPENTCNT",	0x5204},
+	{"linux/random.h",	"RNDCLEARPOOL",	0x5206},
+	{"linux/raw.h",	"RAW_SETBIND",	0xac00},
+	{"linux/raw.h",	"RAW_GETBIND",	0xac01},
+	{"linux/reiserfs_fs.h",	"REISERFS_IOC_UNPACK",	0xcd01},
+	{"linux/rtc.h",	"RTC_AIE_ON",	0x7001},
+	{"linux/rtc.h",	"RTC_AIE_OFF",	0x7002},
+	{"linux/rtc.h",	"RTC_UIE_ON",	0x7003},
+	{"linux/rtc.h",	"RTC_UIE_OFF",	0x7004},
+	{"linux/rtc.h",	"RTC_PIE_ON",	0x7005},
+	{"linux/rtc.h",	"RTC_PIE_OFF",	0x7006},
+	{"linux/rtc.h",	"RTC_WIE_ON",	0x700f},
+	{"linux/rtc.h",	"RTC_WIE_OFF",	0x7010},
+	{"linux/rtc.h",	"RTC_ALM_SET",	0x7007},
+	{"linux/rtc.h",	"RTC_ALM_READ",	0x7008},
+	{"linux/rtc.h",	"RTC_RD_TIME",	0x7009},
+	{"linux/rtc.h",	"RTC_SET_TIME",	0x700a},
+	{"linux/rtc.h",	"RTC_IRQP_READ",	0x700b},
+	{"linux/rtc.h",	"RTC_IRQP_SET",	0x700c},
+	{"linux/rtc.h",	"RTC_EPOCH_READ",	0x700d},
+	{"linux/rtc.h",	"RTC_EPOCH_SET",	0x700e},
+	{"linux/rtc.h",	"RTC_WKALM_SET",	0x700f},
+	{"linux/rtc.h",	"RTC_WKALM_RD",	0x7010},
+	{"linux/serio.h",	"SPIOCSTYPE",	0x7101},
+	{"linux/smb_fs.h",	"SMB_IOC_GETMOUNTUID",	0x7501},
+	{"linux/smb_fs.h",	"SMB_IOC_NEWCONN",	0x7502},
+	{"linux/smb_fs.h",	"SMB_IOC_GETMOUNTUID32",	0x7503},
+	{"linux/sonet.h",	"SONET_GETSTAT",	0x6110},
+	{"linux/sonet.h",	"SONET_GETSTATZ",	0x6111},
+	{"linux/sonet.h",	"SONET_SETDIAG",	0x6112},
+	{"linux/sonet.h",	"SONET_CLRDIAG",	0x6113},
+	{"linux/sonet.h",	"SONET_GETDIAG",	0x6114},
+	{"linux/sonet.h",	"SONET_SETFRAMING",	0x6115},
+	{"linux/sonet.h",	"SONET_GETFRAMING",	0x6116},
+	{"linux/sonet.h",	"SONET_GETFRSENSE",	0x6117},
+	{"linux/synclink.h",	"MGSL_IOCSPARAMS",	0x6d00},
+	{"linux/synclink.h",	"MGSL_IOCGPARAMS",	0x6d01},
+	{"linux/synclink.h",	"MGSL_IOCSTXIDLE",	0x6d02},
+	{"linux/synclink.h",	"MGSL_IOCGTXIDLE",	0x6d03},
+	{"linux/synclink.h",	"MGSL_IOCTXENABLE",	0x6d04},
+	{"linux/synclink.h",	"MGSL_IOCRXENABLE",	0x6d05},
+	{"linux/synclink.h",	"MGSL_IOCTXABORT",	0x6d06},
+	{"linux/synclink.h",	"MGSL_IOCGSTATS",	0x6d07},
+	{"linux/synclink.h",	"MGSL_IOCWAITEVENT",	0x6d08},
+	{"linux/synclink.h",	"MGSL_IOCCLRMODCOUNT",	0x6d0f},
+	{"linux/synclink.h",	"MGSL_IOCLOOPTXDONE",	0x6d09},
+	{"linux/telephony.h",	"PHONE_CAPABILITIES",	0x7180},
+	{"linux/telephony.h",	"PHONE_CAPABILITIES_LIST",	0x7181},
+	{"linux/telephony.h",	"PHONE_CAPABILITIES_CHECK",	0x7182},
+	{"linux/telephony.h",	"PHONE_RING",	0x7183},
+	{"linux/telephony.h",	"PHONE_HOOKSTATE",	0x7184},
+	{"linux/telephony.h",	"PHONE_MAXRINGS",	0x7185},
+	{"linux/telephony.h",	"PHONE_RING_CADENCE",	0x7186},
+	{"linux/telephony.h",	"OLD_PHONE_RING_START",	0x7187},
+	{"linux/telephony.h",	"PHONE_RING_START",	0x7187},
+	{"linux/telephony.h",	"PHONE_RING_STOP",	0x7188},
+	{"linux/telephony.h",	"PHONE_REC_CODEC",	0x7189},
+	{"linux/telephony.h",	"PHONE_REC_START",	0x718a},
+	{"linux/telephony.h",	"PHONE_REC_STOP",	0x718b},
+	{"linux/telephony.h",	"PHONE_REC_DEPTH",	0x718c},
+	{"linux/telephony.h",	"PHONE_FRAME",	0x718d},
+	{"linux/telephony.h",	"PHONE_REC_VOLUME",	0x718e},
+	{"linux/telephony.h",	"PHONE_REC_LEVEL",	0x718f},
+	{"linux/telephony.h",	"PHONE_PLAY_CODEC",	0x7190},
+	{"linux/telephony.h",	"PHONE_PLAY_START",	0x7191},
+	{"linux/telephony.h",	"PHONE_PLAY_STOP",	0x7192},
+	{"linux/telephony.h",	"PHONE_PLAY_DEPTH",	0x7193},
+	{"linux/telephony.h",	"PHONE_PLAY_VOLUME",	0x7194},
+	{"linux/telephony.h",	"PHONE_PLAY_LEVEL",	0x7195},
+	{"linux/telephony.h",	"PHONE_DTMF_READY",	0x7196},
+	{"linux/telephony.h",	"PHONE_GET_DTMF",	0x7197},
+	{"linux/telephony.h",	"PHONE_GET_DTMF_ASCII",	0x7198},
+	{"linux/telephony.h",	"PHONE_DTMF_OOB",	0x7199},
+	{"linux/telephony.h",	"PHONE_EXCEPTION",	0x719a},
+	{"linux/telephony.h",	"PHONE_PLAY_TONE",	0x719b},
+	{"linux/telephony.h",	"PHONE_SET_TONE_ON_TIME",	0x719c},
+	{"linux/telephony.h",	"PHONE_SET_TONE_OFF_TIME",	0x719d},
+	{"linux/telephony.h",	"PHONE_GET_TONE_ON_TIME",	0x719e},
+	{"linux/telephony.h",	"PHONE_GET_TONE_OFF_TIME",	0x719f},
+	{"linux/telephony.h",	"PHONE_GET_TONE_STATE",	0x71a0},
+	{"linux/telephony.h",	"PHONE_BUSY",	0x71a1},
+	{"linux/telephony.h",	"PHONE_RINGBACK",	0x71a2},
+	{"linux/telephony.h",	"PHONE_DIALTONE",	0x71a3},
+	{"linux/telephony.h",	"PHONE_CPT_STOP",	0x71a4},
+	{"linux/telephony.h",	"PHONE_PSTN_SET_STATE",	0x71a4},
+	{"linux/telephony.h",	"PHONE_PSTN_GET_STATE",	0x71a5},
+	{"linux/telephony.h",	"PHONE_WINK_DURATION",	0x71a6},
+	{"linux/telephony.h",	"PHONE_QUERY_CODEC",	0x71a7},
+	{"linux/telephony.h",	"PHONE_PSTN_LINETEST",	0x71a8},
+	{"linux/telephony.h",	"PHONE_VAD",	0x71a9},
+	{"linux/toshiba.h",	"TOSH_SMM",	0x7490},
+	{"linux/udf_fs_i.h",	"UDF_GETEASIZE",	0x6c40},
+	{"linux/udf_fs_i.h",	"UDF_GETEABLOCK",	0x6c41},
+	{"linux/udf_fs_i.h",	"UDF_GETVOLIDENT",	0x6c42},
+	{"linux/umsdos_fs.h",	"UMSDOS_READDIR_DOS",	0x4d2},
+	{"linux/umsdos_fs.h",	"UMSDOS_UNLINK_DOS",	0x4d3},
+	{"linux/umsdos_fs.h",	"UMSDOS_RMDIR_DOS",	0x4d4},
+	{"linux/umsdos_fs.h",	"UMSDOS_STAT_DOS",	0x4d5},
+	{"linux/umsdos_fs.h",	"UMSDOS_CREAT_EMD",	0x4d6},
+	{"linux/umsdos_fs.h",	"UMSDOS_UNLINK_EMD",	0x4d7},
+	{"linux/umsdos_fs.h",	"UMSDOS_READDIR_EMD",	0x4d8},
+	{"linux/umsdos_fs.h",	"UMSDOS_GETVERSION",	0x4d9},
+	{"linux/umsdos_fs.h",	"UMSDOS_INIT_EMD",	0x4da},
+	{"linux/umsdos_fs.h",	"UMSDOS_DOS_SETUP",	0x4db},
+	{"linux/umsdos_fs.h",	"UMSDOS_RENAME_DOS",	0x4dc},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_CONTROL",	0x5500},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_BULK",	0x5502},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_RESETEP",	0x5503},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_SETINTERFACE",	0x5504},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_SETCONFIGURATION",	0x5505},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_GETDRIVER",	0x5508},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_SUBMITURB",	0x550a},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_DISCARDURB",	0x550b},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_REAPURB",	0x550c},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_REAPURBNDELAY",	0x550d},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_DISCSIGNAL",	0x550e},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_CLAIMINTERFACE",	0x550f},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_RELEASEINTERFACE",	0x5510},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_CONNECTINFO",	0x5511},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_IOCTL",	0x5512},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_HUB_PORTINFO",	0x5513},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_RESET",	0x5514},
+	{"linux/usbdevice_fs.h",	"USBDEVFS_CLEAR_HALT",	0x5515},
+	{"linux/video_decoder.h",	"DECODER_GET_CAPABILITIES",	0x6401},
+	{"linux/video_decoder.h",	"DECODER_GET_STATUS",	0x6402},
+	{"linux/video_decoder.h",	"DECODER_SET_NORM",	0x6403},
+	{"linux/video_decoder.h",	"DECODER_SET_INPUT",	0x6404},
+	{"linux/video_decoder.h",	"DECODER_SET_OUTPUT",	0x6405},
+	{"linux/video_decoder.h",	"DECODER_ENABLE_OUTPUT",	0x6406},
+	{"linux/video_decoder.h",	"DECODER_SET_PICTURE",	0x6407},
+	{"linux/video_decoder.h",	"DECODER_DUMP",	0x64c0},
+	{"linux/video_encoder.h",	"ENCODER_GET_CAPABILITIES",	0x6501},
+	{"linux/video_encoder.h",	"ENCODER_SET_NORM",	0x6502},
+	{"linux/video_encoder.h",	"ENCODER_SET_INPUT",	0x6503},
+	{"linux/video_encoder.h",	"ENCODER_SET_OUTPUT",	0x6504},
+	{"linux/video_encoder.h",	"ENCODER_ENABLE_OUTPUT",	0x6505},
+	{"linux/videodev.h",	"VIDIOCGCAP",	0x7601},
+	{"linux/videodev.h",	"VIDIOCGCHAN",	0x7602},
+	{"linux/videodev.h",	"VIDIOCSCHAN",	0x7603},
+	{"linux/videodev.h",	"VIDIOCGTUNER",	0x7604},
+	{"linux/videodev.h",	"VIDIOCSTUNER",	0x7605},
+	{"linux/videodev.h",	"VIDIOCGPICT",	0x7606},
+	{"linux/videodev.h",	"VIDIOCSPICT",	0x7607},
+	{"linux/videodev.h",	"VIDIOCCAPTURE",	0x7608},
+	{"linux/videodev.h",	"VIDIOCGWIN",	0x7609},
+	{"linux/videodev.h",	"VIDIOCSWIN",	0x760a},
+	{"linux/videodev.h",	"VIDIOCGFBUF",	0x760b},
+	{"linux/videodev.h",	"VIDIOCSFBUF",	0x760c},
+	{"linux/videodev.h",	"VIDIOCKEY",	0x760d},
+	{"linux/videodev.h",	"VIDIOCGFREQ",	0x760e},
+	{"linux/videodev.h",	"VIDIOCSFREQ",	0x760f},
+	{"linux/videodev.h",	"VIDIOCGAUDIO",	0x7610},
+	{"linux/videodev.h",	"VIDIOCSAUDIO",	0x7611},
+	{"linux/videodev.h",	"VIDIOCSYNC",	0x7612},
+	{"linux/videodev.h",	"VIDIOCMCAPTURE",	0x7613},
+	{"linux/videodev.h",	"VIDIOCGMBUF",	0x7614},
+	{"linux/videodev.h",	"VIDIOCGUNIT",	0x7615},
+	{"linux/videodev.h",	"VIDIOCGCAPTURE",	0x7616},
+	{"linux/videodev.h",	"VIDIOCSCAPTURE",	0x7617},
+	{"linux/videodev.h",	"VIDIOCSPLAYMODE",	0x7618},
+	{"linux/videodev.h",	"VIDIOCSWRITEMODE",	0x7619},
+	{"linux/videodev.h",	"VIDIOCGPLAYINFO",	0x761a},
+	{"linux/videodev.h",	"VIDIOCSMICROCODE",	0x761b},
+	{"linux/videodev.h",	"VIDIOCGVBIFMT",	0x761c},
+	{"linux/videodev.h",	"VIDIOCSVBIFMT",	0x761d},
+	{"linux/watchdog.h",	"WDIOC_GETSUPPORT",	0x5700},
+	{"linux/watchdog.h",	"WDIOC_GETSTATUS",	0x5701},
+	{"linux/watchdog.h",	"WDIOC_GETBOOTSTATUS",	0x5702},
+	{"linux/watchdog.h",	"WDIOC_GETTEMP",	0x5703},
+	{"linux/watchdog.h",	"WDIOC_SETOPTIONS",	0x5704},
+	{"linux/watchdog.h",	"WDIOC_KEEPALIVE",	0x5705},
+	{"linux/zftape.h",	"MTIOC_ZFTAPE_GETBLKSZ",	0x6d68},
+	{"asm/ioctls.h",	"TIOCGPTN",	0x5430},
+	{"asm/ioctls.h",	"TIOCSPTLCK",	0x5431},
+	{"asm/mtrr.h",	"MTRRIOC_ADD_ENTRY",	0x4d00},
+	{"asm/mtrr.h",	"MTRRIOC_SET_ENTRY",	0x4d01},
+	{"asm/mtrr.h",	"MTRRIOC_DEL_ENTRY",	0x4d02},
+	{"asm/mtrr.h",	"MTRRIOC_GET_ENTRY",	0x4d03},
+	{"asm/mtrr.h",	"MTRRIOC_KILL_ENTRY",	0x4d04},
+	{"asm/mtrr.h",	"MTRRIOC_ADD_PAGE_ENTRY",	0x4d05},
+	{"asm/mtrr.h",	"MTRRIOC_SET_PAGE_ENTRY",	0x4d06},
+	{"asm/mtrr.h",	"MTRRIOC_DEL_PAGE_ENTRY",	0x4d07},
+	{"asm/mtrr.h",	"MTRRIOC_GET_PAGE_ENTRY",	0x4d08},
+	{"asm/mtrr.h",	"MTRRIOC_KILL_PAGE_ENTRY",	0x4d09},
+	{"asm/processor.h",	"MICROCODE_IOCFREE",	0x3600},
diff --git a/linux/ioctlent.sh b/linux/ioctlent.sh
index dd5fd9d..8493e23 100644
--- a/linux/ioctlent.sh
+++ b/linux/ioctlent.sh
@@ -1,98 +1,21 @@
-#!/bin/sh
-# Copyright (c) 1993, 1994, 1995 Rick Sladkey <jrs@world.std.com>
-# All rights reserved.
-#
-# Copyright (c) 1995, 1996 Michael Elizabeth Chastain <mec@duracef.shout.net>
-# All rights reserved.
-#
-# 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. The name of the author may not be used to endorse or promote products
-#    derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
-#
-#	$Id$
+#! /bin/sh
 
-# Files to find.
-file_find='asm/*.h linux/*.h scsi/*.h'
+files="linux/* asm/* scsi/*"
 
-# Files to stop.
-file_stop='asm/byteorder.h linux/config.h linux/pci.h linux/xd.h'
+# Build the list of all ioctls
+regexp='^[[:space:]]*#[[:space:]]*define[[:space:]]\+[A-Z][A-Z0-9_]*[[:space:]]\+_\(IO\|IOW\|IOR\|IOWR\)\>'
+grep $regexp $files 2>/dev/null | \
+	sed -ne 's/^\(.*\):[[:space:]]*#[[:space:]]*define[[:space:]]*\([A-Z0-9_]*\)[[:space:]]*_I.*(\([^[,]*\),\([^,)]*\).*/	{ "\1",	"\2",	_IOC(_IOC_NONE,\3,\4,0)	},/p' \
+	> ioctls.h
 
-# Defs to find.
-# Work on the kernel source to convert all to df_iowr.
-# Don't know how to find low-numbered ioctls in linux/mc146818rtc.h.
-df_name='^[	 ]*#[	 ]*define[	 ]+[A-Z_][A-Z0-9_]*[	 ]+'
-df_iowr='_IO|_IOR|_IOW|_IOWR'
-df_NNNN='0[Xx](03|06|22|46|4B|4C|53|54|56|89|90)[0-9A-Fa-f][0-9A-Fa-f]'
-df_4359='0[Xx]4359[0-9A-Fa-f][0-9A-Fa-f]'	# linux/cyclades.h
-df_470N='470[0-9]'				# linux/fs.h        (only in 1.2.13)
-df_smix='MIXER_READ|MIXER_WRITE'		# linux/soundcard.h
-df_12NN='12[3-4][0-9]'				# linux/umsdos_fs.h (only in 1.2.13)
-df_tail='([()	 ]|$)'
-def_find="$df_name($df_iowr|$df_NNNN|$df_4359|$df_470N|$df_smix|$df_12NN)$df_tail"
+# Some use a special base to offset their ioctls on. Extract that as well.
+: > ioctldefs.h
 
-# Defs to stop.
-ds_tail='_MAGIC|_PATCH'
-ds_fdmp='FD(DEF|GET|SET)MEDIAPRM'		# linux/fd.h aliases (only in 1.2.13)
-ds_mtio='MTIOC(GET|SET)CONFIG'			# linux/mtio.h needs config (only in 1.2.13)
-def_stop="$ds_tail|$ds_fdmp|$ds_mtio"
+bases=$(sed -ne 's/.*_IOC_NONE,\([A-Z][A-Z0-9_]\+\),.*/\1/p' ioctls.h | uniq | sort)
+for base in $bases ; do
+	echo "Looking for $base"
+	regexp="^[[:space:]]*#[[:space:]]*define[[:space:]]\+$base"
+	grep -h $regexp 2>/dev/null $files | grep -v '\<_IO' >> ioctldefs.h
+done
 
-# Validate arg count.
-if [ $# -ne 1 ]
-then
-	echo "usage: $0 include-directory" >&2
-	exit 1
-fi
 
-# Grep through the files.
-(
-	# Construct list: find files minus stop files.
-	cd $1 || exit
-	file_list=`(ls $file_find $file_stop $file_stop 2>/dev/null) | sort | uniq -u`
-
-	# Grep matching #define lines.
-	# Transform to C structure form.
-	# Filter out stop list.
-	egrep "$def_find" $file_list |
-		sed -n -e 's/^\(.*\):#[	 ]*define[	 ]*\([A-Z_][A-Z0-9_]*\).*$/	{ "\1",	"\2",	\2	},/p' |
-		egrep -v "$def_stop"
-) > ioctlent.tmp
-
-# Generate the output file.
-echo '/* This file is automatically generated by ioctlent.sh */'
-echo
-echo '#include <sys/types.h>'
-echo
-echo '/* Needed for <linux/baycom.h> */'
-echo '#define BAYCOM_DEBUG'
-echo
-echo '/* Needed for <linux/cyclades.h> */'
-echo '#include <linux/termios.h>'
-echo '#include <linux/tqueue.h>'
-echo
-awk '{ print "#include <" substr($2, 2, length($2) - 3) ">" }' ioctlent.tmp | sort -u
-echo
-echo 'struct ioctlent ioctlent [] ='
-echo '{'
-cat ioctlent.tmp
-echo '};'
-
-# Clean up.
-rm -f ioctlent.tmp