On Sun, 5 Jul 2020 16:02:25 +0100 Diego Elio Pettenò <flameeyes@xxxxxxxxxxxxx> wrote: > Previously any application wanting to implement the usbmon binary > interfaces needed to re-declare the structures and constants, leading to > structure duplication and confusion over whether these structures fall into > the system call exception or not. I am not sure I follow the logic in the confusion claim above. Since the applications define their own headers, they do not use the kernel source at all. Therefore, there can be no question about any exceptions, and no confusion. But perhaps I'm missing a turn here. Feel free to educate me. As for the "duplication", I do not see it as harmful in any way. And they do not re-declare, they declare. You're trying to create a centralized language definition that did not exist previously. > +++ b/Documentation/usb/usbmon.rst > - struct usbmon_packet { > + struct mon_bin_hdr { > u64 id; /* 0: URB ID - from submission to callback */ It was named that specifically in order to underscore that it's not the actual code. > +++ b/include/uapi/linux/usb/mon.h > +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ Yeah, that. You created the confusion first, and then resolved it with licensing amendments. > +/* ioctl macros */ > +#define MON_IOC_MAGIC 0x92 > + > +#define MON_IOCQ_URB_LEN _IO(MON_IOC_MAGIC, 1) Okay. Our documentation refers to _IO(), which is a system macro, so we're not entirely self-containing. I can see an opening for some sophistry here. Fortunately, include/uapi/asm-generic/ioctl.h already includes that "GPL-2.0 WITH Linux-syscall-note" thing, so I think we're clear in usbmon. -- Pete