diff options
Diffstat (limited to 'sys/linux/sndcontrol.txt')
-rw-r--r-- | sys/linux/sndcontrol.txt | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/sys/linux/sndcontrol.txt b/sys/linux/sndcontrol.txt new file mode 100644 index 000000000..458e4767f --- /dev/null +++ b/sys/linux/sndcontrol.txt @@ -0,0 +1,118 @@ +# Copyright 2015 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 <sound/asound.h> + +resource fd_sndctrl[fd] + +syz_open_dev$sndctrl(dev ptr[in, string["/dev/snd/controlC#"]], id intptr, flags flags[open_flags]) fd_sndctrl + +ioctl$SNDRV_CTL_IOCTL_PVERSION(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_PVERSION], arg ptr[out, int32]) +ioctl$SNDRV_CTL_IOCTL_CARD_INFO(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_CARD_INFO], arg buffer[out]) +ioctl$SNDRV_CTL_IOCTL_HWDEP_INFO(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_HWDEP_INFO], arg buffer[out]) +ioctl$SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE], arg buffer[out]) +ioctl$SNDRV_CTL_IOCTL_POWER_STATE(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_POWER_STATE], arg ptr[out, int32]) +ioctl$SNDRV_CTL_IOCTL_ELEM_LIST(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_ELEM_LIST], arg ptr[in, snd_ctl_elem_list]) +ioctl$SNDRV_CTL_IOCTL_ELEM_INFO(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_ELEM_INFO], arg ptr[in, snd_ctl_elem_info]) +ioctl$SNDRV_CTL_IOCTL_ELEM_READ(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_ELEM_READ], arg ptr[in, snd_ctl_elem_value]) +ioctl$SNDRV_CTL_IOCTL_ELEM_WRITE(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_ELEM_WRITE], arg ptr[in, snd_ctl_elem_value]) +ioctl$SNDRV_CTL_IOCTL_ELEM_LOCK(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_ELEM_LOCK], arg ptr[in, snd_ctl_elem_id]) +ioctl$SNDRV_CTL_IOCTL_ELEM_UNLOCK(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_ELEM_UNLOCK], arg ptr[in, snd_ctl_elem_id]) +ioctl$SNDRV_CTL_IOCTL_SUBSCRIBE_EVENTS(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_SUBSCRIBE_EVENTS], arg ptr[in, int32]) +ioctl$SNDRV_CTL_IOCTL_ELEM_ADD(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_ELEM_ADD], arg ptr[in, snd_ctl_elem_info]) +ioctl$SNDRV_CTL_IOCTL_ELEM_REPLACE(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_ELEM_REPLACE], arg ptr[in, snd_ctl_elem_info]) +ioctl$SNDRV_CTL_IOCTL_ELEM_REMOVE(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_ELEM_REMOVE], arg ptr[in, snd_ctl_elem_id]) +ioctl$SNDRV_CTL_IOCTL_TLV_READ(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_TLV_READ], arg ptr[in, snd_ctl_tlv]) +ioctl$SNDRV_CTL_IOCTL_TLV_WRITE(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_TLV_WRITE], arg ptr[in, snd_ctl_tlv]) +ioctl$SNDRV_CTL_IOCTL_TLV_COMMAND(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_TLV_COMMAND], arg ptr[in, snd_ctl_tlv]) +ioctl$SNDRV_CTL_IOCTL_HWDEP_NEXT_DEVICE(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_HWDEP_NEXT_DEVICE], arg ptr[in, int32]) +ioctl$SNDRV_CTL_IOCTL_PCM_INFO(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_PCM_INFO], arg ptr[in, snd_pcm_info]) +ioctl$SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE], arg ptr[in, int32]) +ioctl$SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE], arg ptr[in, int32]) +ioctl$SNDRV_CTL_IOCTL_RAWMIDI_INFO(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_RAWMIDI_INFO], arg ptr[in, snd_rawmidi_info]) +ioctl$SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE(fd fd_sndctrl, cmd const[SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE], arg ptr[in, int32]) + +snd_ctl_iface = SNDRV_CTL_ELEM_IFACE_CARD, SNDRV_CTL_ELEM_IFACE_HWDEP, SNDRV_CTL_ELEM_IFACE_MIXER, SNDRV_CTL_ELEM_IFACE_PCM, SNDRV_CTL_ELEM_IFACE_RAWMIDI, SNDRV_CTL_ELEM_IFACE_TIMER, SNDRV_CTL_ELEM_IFACE_SEQUENCER +snd_ctl_access = SNDRV_CTL_ELEM_ACCESS_READ, SNDRV_CTL_ELEM_ACCESS_WRITE, SNDRV_CTL_ELEM_ACCESS_READWRITE, SNDRV_CTL_ELEM_ACCESS_VOLATILE, SNDRV_CTL_ELEM_ACCESS_TIMESTAMP, SNDRV_CTL_ELEM_ACCESS_TLV_READ, SNDRV_CTL_ELEM_ACCESS_TLV_WRITE, SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE, SNDRV_CTL_ELEM_ACCESS_TLV_COMMAND, SNDRV_CTL_ELEM_ACCESS_INACTIVE, SNDRV_CTL_ELEM_ACCESS_LOCK, SNDRV_CTL_ELEM_ACCESS_OWNER, SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK, SNDRV_CTL_ELEM_ACCESS_USER +snd_ctl_names = "", "syz0", "syz1" +snd_ctl_elem_names = "syz0", "syz1" + +snd_ctl_elem_id { + numid int32[0:10] + iface flags[snd_ctl_iface, int32] + dev int32 + subdev int32 + name string[snd_ctl_names, SNDRV_CTL_ELEM_ID_NAME_MAXLEN] + index int32 +} + +snd_ctl_elem_list { + off int32 + space len[pids, int32] + used int32 + count int32 + pids ptr[out, array[snd_ctl_elem_id]] + pad array[const[0, int8], 50] +} + +snd_ctl_elem_info { + id snd_ctl_elem_id + type int32[SNDRV_CTL_ELEM_TYPE_NONE:SNDRV_CTL_ELEM_TYPE_LAST] + access flags[snd_ctl_access, int32] + count int32 + owner pid + items len[names_ptr, int32] + item int32 + name string[snd_ctl_elem_names, 64] + names_ptr ptr64[in, array[string]] + names_length bytesize[names_ptr, int32] + pad1 array[const[0, int8], 44] + d array[int16, 4] +} [size[SND_CTL_ELEM_INFO_SIZE]] + +define SND_CTL_ELEM_INFO_SIZE sizeof(struct snd_ctl_elem_info) + +snd_ctl_elem_value { + id snd_ctl_elem_id + indir bool32 + value array[intptr, 128] + tstamp timespec +} [size[SND_CTL_ELEM_VALUE_SIZE]] + +define SND_CTL_ELEM_VALUE_SIZE sizeof(struct snd_ctl_elem_value) + +snd_ctl_tlv { + numid int32 + len bytesize[tlv, int32] + tlv array[int32] +} + +snd_pcm_info { + dev int32 + subdev int32 + stream int32 + card int32 + id array[const[0, int8], 64] + name array[const[0, int8], 80] + subname array[const[0, int8], 32] + devcl int32 + devscl int32 + count int32 + avail int32 + sync array[int8, 16] + pad array[const[0, int8], 64] +} + +snd_rawmidi_info { + dev int32 + subdev int32 + 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] + count int32 + avail int32 + pad array[const[0, int8], 64] +} |