diff options
| author | VeronicaRadu <veronicaa.radu@gmail.com> | 2019-07-26 09:07:19 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2019-07-26 09:07:19 +0200 |
| commit | 091bb0070faa61066041adf59b088a7a873a480d (patch) | |
| tree | fde7ceaf25c6103292d77d0617c953fd0e1f359d /sys/linux/dev_usbmon.txt | |
| parent | 732bc5a0a4cc7468b8abfdf8ba14f349f6d8acfa (diff) | |
sys/linux: add usbmon add vfio descriptions
Diffstat (limited to 'sys/linux/dev_usbmon.txt')
| -rw-r--r-- | sys/linux/dev_usbmon.txt | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/sys/linux/dev_usbmon.txt b/sys/linux/dev_usbmon.txt new file mode 100644 index 000000000..0ffc90b9e --- /dev/null +++ b/sys/linux/dev_usbmon.txt @@ -0,0 +1,90 @@ +# Copyright 2019 syzkaller project authors. All rights reserved. +# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +# https://elixir.bootlin.com/linux/latest/source/Documentation/usb/usbmon.txt +# https://elixir.bootlin.com/linux/latest/source/drivers/usb/mon/mon_bin.c + +include <linux/fcntl.h> +include <linux/ioctl.h> + +# The following macros were defined here because they are not visible from a separate header file + +define MON_IOC_MAGIC 0x92 + +define SETUP_LEN 8 +define PAGE_SIZE 4096 +define CHUNK_SIZE PAGE_SIZE + +define BUFF_MAX (((1200*1024)+CHUNK_SIZE-1) & ~(CHUNK_SIZE-1)) +define BUFF_MIN (((8*1024)+CHUNK_SIZE-1) & ~(CHUNK_SIZE-1)) + +define MON_IOCQ_URB_LEN _IO(MON_IOC_MAGIC, 1) +define MON_IOCG_STATS _IOR(MON_IOC_MAGIC, 3, struct {u32 queued; u32 dropped;}) +define MON_IOCT_RING_SIZE _IO(MON_IOC_MAGIC, 4) +define MON_IOCQ_RING_SIZE _IO(MON_IOC_MAGIC, 5) +define MON_IOCX_GET _IOW(MON_IOC_MAGIC, 6, struct {void *hdr; void *data; size_t alloc;}) +define MON_IOCX_MFETCH _IOWR(MON_IOC_MAGIC, 7, struct {u32 *offvec; u32 nfetch; u32 nflush;}) +define MON_IOCH_MFLUSH _IO(MON_IOC_MAGIC, 8) +define MON_IOCX_GETX _IOW(MON_IOC_MAGIC, 10, struct {void *hdr; void *data; size_t alloc;}) + +resource fd_usbmon[fd] + +openat$usbmon(fd const[AT_FDCWD], file ptr[in, string["/dev/usbmon0"]], flags flags[open_flags], mode const[0]) fd_usbmon + +ioctl$MON_IOCQ_URB_LEN(fd fd_usbmon, cmd const[MON_IOCQ_URB_LEN]) +ioctl$MON_IOCQ_RING_SIZE(fd fd_usbmon, cmd const[MON_IOCQ_RING_SIZE]) +ioctl$MON_IOCT_RING_SIZE(fd fd_usbmon, cmd const[MON_IOCT_RING_SIZE], arg int32[BUFF_MIN:BUFF_MAX]) +ioctl$MON_IOCH_MFLUSH(fd fd_usbmon, cmd const[MON_IOCH_MFLUSH], arg int32) +ioctl$MON_IOCX_GET(fd fd_usbmon, cmd const[MON_IOCX_GET], arg ptr[in, mon_bin_get]) +ioctl$MON_IOCX_GETX(fd fd_usbmon, cmd const[MON_IOCX_GETX], arg ptr[in, mon_bin_get]) + +ioctl$MON_IOCX_MFETCH(fd fd_usbmon, cmd const[MON_IOCX_MFETCH], arg ptr[inout, mon_bin_mfetch]) +ioctl$MON_IOCG_STATS(fd fd_usbmon, cmd const[MON_IOCG_STATS], arg ptr[out, mon_bin_stats]) + +iso_rec { + error_count int32 + numdesc int32 +} + +mon_bin_union [ + setup array[int8, SETUP_LEN] + iso iso_rec +] + +mon_bin_hdr { + id int64 + type int8 + xfer_type int8 + epnum int8 + devnum int8 + busnum int16 + flag_setup int8 + flag_data int8 + ts_sec int64 + ts_usec int32 + status int32 + len_urb int32 + len_cap int32 + s mon_bin_union + interval int32 + start_frame int32 + xfer_flags int32 + ndesc int32 +} + +mon_bin_get { + hdr ptr[out, mon_bin_hdr] + data ptr[out, array[int8]] + alloc bytesize[data, intptr] +} + +mon_bin_mfetch { + offvec ptr[out, array[int32]] + nfetch len[offvec, int32] + nflush int32 +} + +mon_bin_stats { + queued int32 + dropped int32 +} |
