# 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 include include include 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