Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 05 Dec 2016 15:43:05 -0800
From:      Chris Torek <torek@torek.net>
To:        freebsd-hackers@freebsd.org
Subject:   kernel ioctl aggregator script, might be generally useful
Message-ID:  <201612052343.uB5Nh5Dm078198@elf.torek.net>

next in thread | raw e-mail | index | archive | help
I wrote a little Python script to let me view existing kernel
_IO*(group, number, type) ioctls.  Here's a sample of the kind
of data it prints:

group 'F':
  0: _IOR('F', 0, struct fbtype)            sys/fbio.h:106
  2: _IOR('F', 2, struct fbinfo)            sys/fbio.h:178
  3: _IOW('F', 3, struct fbcmap)            sys/fbio.h:191
  4: _IOW('F', 4, struct fbcmap)            sys/fbio.h:192
  5: _IOW('F', 5, struct fbsattr)           sys/fbio.h:216
  6: _IOR('F', 6, struct fbgattr)           sys/fbio.h:217
[snip]

group 'I':
  0: _IOWR('I', 0, struct iodev_pio_req)    dev/io/iodev.h:42
  1: _IOR('I', 1, struct iscsi_daemon_request) dev/iscsi/iscsi_ioctl.h:125
     _IOR('I', 1, struct autofs_daemon_request) fs/autofs/autofs_ioctl.h:1=
12
     _IOWR('I', 1, struct iodev_efivar_req) ia64/include/iodev.h:53
  2: _IOW('I', 2, struct iscsi_daemon_handoff) dev/iscsi/iscsi_ioctl.h:126
     _IOW('I', 2, struct autofs_daemon_done_101) fs/autofs/autofs_ioctl.h:=
113
  3: _IOW('I', 3, struct iscsi_daemon_fail) dev/iscsi/iscsi_ioctl.h:127
     _IOW('I', 3, struct autofs_daemon_done) fs/autofs/autofs_ioctl.h:114
  4: _IOWR('I', 4, struct iscsi_daemon_connect) dev/iscsi/iscsi_ioctl.h:17=
9
[snip]

which lets us see that there are overlapping uses of some of the
group-'I' ioctls (overlapping uses are OK as long as they don't
really collide, of course, this just lets you check for potential
issues).  (Also it does not know about #ifdef so it finds things
like these:

group r:
 60: _IOW(r, 60, struct ipfobj)             contrib/ipfilter/netinet/ip_fi=
l.h:88

which is inside the "#else" part of a __STDC__ ifdef.)

Anyway, if anyone wants it for whatever purpose, I put it up
for public access at https://github.com/chris3torek/scripts
(https://raw.githubusercontent.com/chris3torek/scripts/master/sysioctl.py)

Chris



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201612052343.uB5Nh5Dm078198>