Update generate_netbsd_ioctls.awk for NetBSD 8.99.25

Add dynamic detection of header files in /usr/include.
Handle "nvlist_ref_t" needed by npf(4) ioctl(2) operations.

llvm-svn: 345715
This commit is contained in:
Kamil Rytarowski 2018-10-31 12:52:08 +00:00
parent 3d2b7176fc
commit ec37188a86
1 changed files with 9 additions and 127 deletions

View File

@ -44,133 +44,13 @@ BEGIN {
rootdir = ENVIRON["ROOTDIR"]
}
# hardcode list of headers with ioctl(2) entries
# List generated manually with the following script:
# for w in `find /usr/include/ -type f -name '*.h' -exec echo {} \;`; \
# do awk '/[^a-zA-Z0-9_]_IO[W]*[R]*[ ]*\(/ && $2 ~ /^[A-Z_]+$/ {got=1} END{if(got) {print ARGV[1]}}' $w; \
# done|awk '{print " ARGV[ARGC++] = rootdir \"" substr($0, 14) "\""}'
ARGV[ARGC++] = rootdir "altq/altq_afmap.h"
ARGV[ARGC++] = rootdir "altq/altq.h"
ARGV[ARGC++] = rootdir "altq/altq_blue.h"
ARGV[ARGC++] = rootdir "altq/altq_cbq.h"
ARGV[ARGC++] = rootdir "altq/altq_cdnr.h"
ARGV[ARGC++] = rootdir "altq/altq_fifoq.h"
ARGV[ARGC++] = rootdir "altq/altq_hfsc.h"
ARGV[ARGC++] = rootdir "altq/altq_jobs.h"
ARGV[ARGC++] = rootdir "altq/altq_priq.h"
ARGV[ARGC++] = rootdir "altq/altq_red.h"
ARGV[ARGC++] = rootdir "altq/altq_rio.h"
ARGV[ARGC++] = rootdir "altq/altq_wfq.h"
ARGV[ARGC++] = rootdir "crypto/cryptodev.h"
ARGV[ARGC++] = rootdir "dev/apm/apmio.h"
ARGV[ARGC++] = rootdir "dev/dm/netbsd-dm.h"
ARGV[ARGC++] = rootdir "dev/dmover/dmover_io.h"
ARGV[ARGC++] = rootdir "dev/dtv/dtvio_demux.h"
ARGV[ARGC++] = rootdir "dev/dtv/dtvio_frontend.h"
ARGV[ARGC++] = rootdir "dev/filemon/filemon.h"
ARGV[ARGC++] = rootdir "dev/hdaudio/hdaudioio.h"
ARGV[ARGC++] = rootdir "dev/hdmicec/hdmicecio.h"
ARGV[ARGC++] = rootdir "dev/hpc/hpcfbio.h"
ARGV[ARGC++] = rootdir "dev/i2o/iopio.h"
ARGV[ARGC++] = rootdir "dev/ic/athioctl.h"
ARGV[ARGC++] = rootdir "dev/ic/bt8xx.h"
ARGV[ARGC++] = rootdir "dev/ic/hd44780var.h"
ARGV[ARGC++] = rootdir "dev/ic/icp_ioctl.h"
ARGV[ARGC++] = rootdir "dev/ic/isp_ioctl.h"
ARGV[ARGC++] = rootdir "dev/ic/mlxio.h"
ARGV[ARGC++] = rootdir "dev/ic/nvmeio.h"
ARGV[ARGC++] = rootdir "dev/ir/irdaio.h"
ARGV[ARGC++] = rootdir "dev/isa/satlinkio.h"
ARGV[ARGC++] = rootdir "dev/isa/isvio.h"
ARGV[ARGC++] = rootdir "dev/isa/wtreg.h"
ARGV[ARGC++] = rootdir "dev/iscsi/iscsi_ioctl.h"
ARGV[ARGC++] = rootdir "dev/ofw/openfirmio.h"
ARGV[ARGC++] = rootdir "dev/pci/amrio.h"
ARGV[ARGC++] = rootdir "dev/pci/mlyio.h"
ARGV[ARGC++] = rootdir "dev/pci/pciio.h"
ARGV[ARGC++] = rootdir "dev/pci/tweio.h"
ARGV[ARGC++] = rootdir "dev/pcmcia/if_cnwioctl.h"
ARGV[ARGC++] = rootdir "dev/pcmcia/if_rayreg.h"
ARGV[ARGC++] = rootdir "dev/raidframe/raidframeio.h"
ARGV[ARGC++] = rootdir "dev/sbus/mbppio.h"
ARGV[ARGC++] = rootdir "dev/scsipi/ses.h"
ARGV[ARGC++] = rootdir "dev/sun/disklabel.h"
ARGV[ARGC++] = rootdir "dev/sun/fbio.h"
ARGV[ARGC++] = rootdir "dev/sun/kbio.h"
ARGV[ARGC++] = rootdir "dev/sun/vuid_event.h"
ARGV[ARGC++] = rootdir "dev/tc/sticio.h"
ARGV[ARGC++] = rootdir "dev/usb/ukyopon.h"
ARGV[ARGC++] = rootdir "dev/usb/urio.h"
ARGV[ARGC++] = rootdir "dev/usb/usb.h"
ARGV[ARGC++] = rootdir "dev/usb/utoppy.h"
ARGV[ARGC++] = rootdir "dev/vme/xio.h"
ARGV[ARGC++] = rootdir "dev/wscons/wsdisplay_usl_io.h"
ARGV[ARGC++] = rootdir "dev/wscons/wsconsio.h"
ARGV[ARGC++] = rootdir "dev/biovar.h"
ARGV[ARGC++] = rootdir "dev/md.h"
ARGV[ARGC++] = rootdir "dev/ccdvar.h"
ARGV[ARGC++] = rootdir "dev/cgdvar.h"
ARGV[ARGC++] = rootdir "dev/fssvar.h"
ARGV[ARGC++] = rootdir "dev/bluetooth/btdev.h"
ARGV[ARGC++] = rootdir "dev/bluetooth/btsco.h"
ARGV[ARGC++] = rootdir "dev/kttcpio.h"
ARGV[ARGC++] = rootdir "dev/lockstat.h"
ARGV[ARGC++] = rootdir "dev/vndvar.h"
ARGV[ARGC++] = rootdir "dev/spkrio.h"
ARGV[ARGC++] = rootdir "net/bpf.h"
ARGV[ARGC++] = rootdir "net/if_atm.h"
ARGV[ARGC++] = rootdir "net/if_gre.h"
ARGV[ARGC++] = rootdir "net/if_ppp.h"
ARGV[ARGC++] = rootdir "net/npf.h"
ARGV[ARGC++] = rootdir "net/if_pppoe.h"
ARGV[ARGC++] = rootdir "net/if_sppp.h"
ARGV[ARGC++] = rootdir "net/if_srt.h"
ARGV[ARGC++] = rootdir "net/if_tap.h"
ARGV[ARGC++] = rootdir "net/if_tun.h"
ARGV[ARGC++] = rootdir "net/pfvar.h"
ARGV[ARGC++] = rootdir "net/slip.h"
ARGV[ARGC++] = rootdir "netbt/hci.h"
ARGV[ARGC++] = rootdir "netinet/ip_nat.h"
ARGV[ARGC++] = rootdir "netinet/ip_proxy.h"
ARGV[ARGC++] = rootdir "netinet6/in6_var.h"
ARGV[ARGC++] = rootdir "netnatm/natm.h"
ARGV[ARGC++] = rootdir "netsmb/smb_dev.h"
ARGV[ARGC++] = rootdir "sys/agpio.h"
ARGV[ARGC++] = rootdir "sys/audioio.h"
ARGV[ARGC++] = rootdir "sys/ataio.h"
ARGV[ARGC++] = rootdir "sys/cdio.h"
ARGV[ARGC++] = rootdir "sys/chio.h"
ARGV[ARGC++] = rootdir "sys/clockctl.h"
ARGV[ARGC++] = rootdir "sys/cpuio.h"
ARGV[ARGC++] = rootdir "sys/dkio.h"
ARGV[ARGC++] = rootdir "sys/drvctlio.h"
ARGV[ARGC++] = rootdir "sys/dvdio.h"
ARGV[ARGC++] = rootdir "sys/envsys.h"
ARGV[ARGC++] = rootdir "sys/event.h"
ARGV[ARGC++] = rootdir "sys/fdio.h"
ARGV[ARGC++] = rootdir "sys/filio.h"
ARGV[ARGC++] = rootdir "sys/gpio.h"
ARGV[ARGC++] = rootdir "sys/ioctl.h"
ARGV[ARGC++] = rootdir "sys/ioctl_compat.h"
ARGV[ARGC++] = rootdir "sys/joystick.h"
ARGV[ARGC++] = rootdir "sys/ksyms.h"
ARGV[ARGC++] = rootdir "sys/lua.h"
ARGV[ARGC++] = rootdir "sys/midiio.h"
ARGV[ARGC++] = rootdir "sys/mtio.h"
ARGV[ARGC++] = rootdir "sys/power.h"
ARGV[ARGC++] = rootdir "sys/radioio.h"
ARGV[ARGC++] = rootdir "sys/rndio.h"
ARGV[ARGC++] = rootdir "sys/scanio.h"
ARGV[ARGC++] = rootdir "sys/scsiio.h"
ARGV[ARGC++] = rootdir "sys/sockio.h"
ARGV[ARGC++] = rootdir "sys/timepps.h"
ARGV[ARGC++] = rootdir "sys/ttycom.h"
ARGV[ARGC++] = rootdir "sys/verified_exec.h"
ARGV[ARGC++] = rootdir "sys/videoio.h"
ARGV[ARGC++] = rootdir "sys/wdog.h"
ARGV[ARGC++] = rootdir "soundcard.h"
ARGV[ARGC++] = rootdir "xen/xenio.h"
# detect and register files to detect ioctl() definitions
ARGC = 1
cmd = "find " rootdir " -type f -name '*.h'"
while (cmd | getline) {
ARGV[ARGC++] = $0
}
close(cmd)
ioctl_table_max = 0
}
@ -744,6 +624,8 @@ function get_type(string)
return "struct_RF_SingleComponent_sz"
} else if (string == "RF_ProgressInfo_t") {
return "struct_RF_ProgressInfo_sz"
} else if (string == "nvlist_ref_t") {
return "struct_nvlist_ref_sz"
} else {
print "Unrecognized entry: " string
print "Aborting"