| # Copyright 2018 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. |
| |
| include <uapi/asm/ioctl.h> |
| include <uapi/linux/fcntl.h> |
| include <uapi/linux/time.h> |
| include <uapi/sound/asound.h> |
| |
| resource fd_midi[fd] |
| |
| syz_open_dev$sndmidi(dev ptr[in, string["/dev/snd/midiC#D#"]], id intptr, flags flags[open_flags]) fd_midi |
| syz_open_dev$dmmidi(dev ptr[in, string["/dev/dmmidi#"]], id intptr, flags flags[open_flags]) fd_midi |
| syz_open_dev$admmidi(dev ptr[in, string["/dev/admmidi#"]], id intptr, flags flags[open_flags]) fd_midi |
| syz_open_dev$amidi(dev ptr[in, string["/dev/amidi#"]], id intptr, flags flags[open_flags]) fd_midi |
| syz_open_dev$midi(dev ptr[in, string["/dev/midi#"]], id intptr, flags flags[open_flags]) fd_midi |
| |
| write$midi(fd fd_midi, data ptr[in, array[int8]], len bytesize[data]) |
| read$midi(fd fd_midi, data ptr[out, array[int8]], len bytesize[data]) |
| ioctl$SNDRV_RAWMIDI_IOCTL_PVERSION(fd fd_midi, cmd const[SNDRV_RAWMIDI_IOCTL_PVERSION], arg ptr[out, int32]) |
| ioctl$SNDRV_RAWMIDI_IOCTL_INFO(fd fd_midi, cmd const[SNDRV_RAWMIDI_IOCTL_INFO], arg ptr[out, snd_rawmidi_info]) |
| ioctl$SNDRV_RAWMIDI_IOCTL_PARAMS(fd fd_midi, cmd const[SNDRV_RAWMIDI_IOCTL_PARAMS], arg ptr[inout, snd_rawmidi_params]) |
| ioctl$SNDRV_RAWMIDI_IOCTL_STATUS32(fd fd_midi, cmd const[SNDRV_RAWMIDI_IOCTL_STATUS32], arg ptr[inout, snd_rawmidi_status32]) |
| ioctl$SNDRV_RAWMIDI_IOCTL_STATUS64(fd fd_midi, cmd const[SNDRV_RAWMIDI_IOCTL_STATUS64], arg ptr[inout, snd_rawmidi_status64]) |
| ioctl$SNDRV_RAWMIDI_IOCTL_DROP(fd fd_midi, cmd const[SNDRV_RAWMIDI_IOCTL_DROP], arg ptr[in, int32]) |
| ioctl$SNDRV_RAWMIDI_IOCTL_DRAIN(fd fd_midi, cmd const[SNDRV_RAWMIDI_IOCTL_DRAIN], arg ptr[in, int32]) |
| |
| snd_rawmidi_info { |
| device int32 |
| subdevice int32 |
| stream flags[sndrv_rawmidi_stream, int32] |
| card const[0, int32] |
| flags const[0, int32] |
| id array[const[0, int8], 64] |
| name array[const[0, int8], 80] |
| subname array[const[0, int8], 32] |
| subdevices_count const[0, int32] |
| subdevices_avail const[0, int32] |
| reserved array[const[0, int8], 64] |
| } |
| |
| snd_rawmidi_params { |
| stream flags[sndrv_rawmidi_stream, int32] |
| buffer_size intptr |
| avail_min intptr |
| no_active_sensing int32:1 |
| mode int32 |
| reserved array[const[0, int8], 12] |
| } |
| |
| snd_rawmidi_status32 { |
| stream flags[sndrv_rawmidi_stream, int32] |
| tstamp_sec const[0, int32] |
| tstamp_nsec const[0, int32] |
| avail const[0, int32] |
| xruns const[0, int32] |
| reserved array[const[0, int8], 16] |
| } |
| |
| snd_rawmidi_status64 { |
| stream flags[sndrv_rawmidi_stream, int32] |
| rsvd array[const[0, int8], 4] |
| tstamp_sec const[0, int64] |
| tstamp_nsec const[0, int64] |
| avail const[0, intptr] |
| xruns const[0, intptr] |
| reserved array[const[0, int8], 16] |
| } |
| |
| define SNDRV_RAWMIDI_IOCTL_STATUS32 _IOWR('W', 0x20, char[36]) |
| define SNDRV_RAWMIDI_IOCTL_STATUS64 _IOWR('W', 0x20, char[56]) |
| |
| sndrv_rawmidi_stream = SNDRV_RAWMIDI_STREAM_OUTPUT, SNDRV_RAWMIDI_STREAM_INPUT |