@@ -387,6 +387,78 @@
IOCTL_SPECIAL(SIOCDELRT, IOC_W, do_ioctl_rt,
MK_PTR(MK_STRUCT(STRUCT_rtentry)))
+ IOCTL(SNDRV_CTL_IOCTL_PVERSION, IOC_R, TYPE_INT)
+ IOCTL(SNDRV_CTL_IOCTL_CARD_INFO, IOC_R,
MK_PTR(MK_STRUCT(STRUCT_snd_ctl_card_info)))
+ IOCTL(SNDRV_CTL_IOCTL_ELEM_LIST, IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_ctl_elem_list)))
+ IOCTL(SNDRV_CTL_IOCTL_ELEM_INFO, IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_ctl_elem_info)))
+ IOCTL(SNDRV_CTL_IOCTL_ELEM_READ, IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_ctl_elem_value)))
+ IOCTL(SNDRV_CTL_IOCTL_ELEM_WRITE, IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_ctl_elem_value)))
+ IOCTL(SNDRV_CTL_IOCTL_ELEM_LOCK, IOC_W,
MK_PTR(MK_STRUCT(STRUCT_snd_ctl_elem_id)))
+ IOCTL(SNDRV_CTL_IOCTL_ELEM_UNLOCK, IOC_W,
MK_PTR(MK_STRUCT(STRUCT_snd_ctl_elem_id)))
+ IOCTL(SNDRV_CTL_IOCTL_SUBSCRIBE_EVENTS, IOC_RW, TYPE_INT)
+ IOCTL(SNDRV_CTL_IOCTL_ELEM_ADD, IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_ctl_elem_info)))
+ IOCTL(SNDRV_CTL_IOCTL_ELEM_REPLACE, IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_ctl_elem_info)))
+ IOCTL(SNDRV_CTL_IOCTL_ELEM_REMOVE, IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_ctl_elem_id)))
+ IOCTL(SNDRV_CTL_IOCTL_TLV_READ, IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_ctl_tlv)))
+ IOCTL(SNDRV_CTL_IOCTL_TLV_WRITE, IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_ctl_tlv)))
+ IOCTL(SNDRV_CTL_IOCTL_TLV_COMMAND, IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_ctl_tlv)))
+ IOCTL(SNDRV_CTL_IOCTL_HWDEP_NEXT_DEVICE, IOC_RW, TYPE_INT)
+ IOCTL(SNDRV_CTL_IOCTL_HWDEP_INFO, IOC_R,
MK_PTR(MK_STRUCT(STRUCT_snd_hwdep_info)))
+ IOCTL(SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE, IOC_R, TYPE_INT)
+ IOCTL(SNDRV_CTL_IOCTL_PCM_INFO, IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_pcm_info)))
+ IOCTL(SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE, IOC_W, TYPE_INT)
+ IOCTL(SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE, IOC_RW, TYPE_INT)
+ IOCTL(SNDRV_CTL_IOCTL_RAWMIDI_INFO, IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_rawmidi_info)))
+ IOCTL(SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE, IOC_W, TYPE_INT)
+ IOCTL(SNDRV_CTL_IOCTL_POWER, IOC_RW, TYPE_INT)
+ IOCTL(SNDRV_CTL_IOCTL_POWER_STATE, IOC_R, TYPE_INT)
+
+ IOCTL(SNDRV_PCM_IOCTL_PVERSION , IOC_R, TYPE_INT)
+ IOCTL(SNDRV_PCM_IOCTL_INFO , IOC_R,
MK_PTR(MK_STRUCT(STRUCT_snd_pcm_info)))
+ IOCTL(SNDRV_PCM_IOCTL_TSTAMP , IOC_W, TYPE_INT)
+ IOCTL(SNDRV_PCM_IOCTL_TTSTAMP , IOC_W, TYPE_INT)
+ IOCTL(SNDRV_PCM_IOCTL_HW_REFINE , IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_pcm_hw_params)))
+ IOCTL(SNDRV_PCM_IOCTL_HW_PARAMS , IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_pcm_hw_params)))
+ IOCTL(SNDRV_PCM_IOCTL_HW_FREE , 0, TYPE_NULL)
+ IOCTL(SNDRV_PCM_IOCTL_SW_PARAMS , IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_pcm_sw_params)))
+ IOCTL(SNDRV_PCM_IOCTL_STATUS , IOC_R,
MK_PTR(MK_STRUCT(STRUCT_snd_pcm_status)))
+ IOCTL(SNDRV_PCM_IOCTL_DELAY , IOC_R, TYPE_ULONG)
+ IOCTL(SNDRV_PCM_IOCTL_HWSYNC , 0, TYPE_NULL)
+ IOCTL(SNDRV_PCM_IOCTL_SYNC_PTR , IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_pcm_sync_ptr)))
+ IOCTL(SNDRV_PCM_IOCTL_STATUS_EXT , IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_pcm_status)))
+ IOCTL(SNDRV_PCM_IOCTL_CHANNEL_INFO , IOC_R,
MK_PTR(MK_STRUCT(STRUCT_snd_pcm_channel_info)))
+ IOCTL(SNDRV_PCM_IOCTL_PREPARE , 0, TYPE_NULL)
+ IOCTL(SNDRV_PCM_IOCTL_RESET , 0, TYPE_NULL)
+ IOCTL(SNDRV_PCM_IOCTL_START , 0, TYPE_NULL)
+ IOCTL(SNDRV_PCM_IOCTL_DROP , 0, TYPE_NULL)
+ IOCTL(SNDRV_PCM_IOCTL_DRAIN , 0, TYPE_NULL)
+ IOCTL(SNDRV_PCM_IOCTL_PAUSE , IOC_W, TYPE_INT)
+ IOCTL(SNDRV_PCM_IOCTL_REWIND , IOC_W, TYPE_ULONG)
+ IOCTL(SNDRV_PCM_IOCTL_RESUME , 0, TYPE_NULL)
+ IOCTL(SNDRV_PCM_IOCTL_XRUN , 0, TYPE_NULL)
+ IOCTL(SNDRV_PCM_IOCTL_FORWARD , IOC_W, TYPE_ULONG)
+ IOCTL(SNDRV_PCM_IOCTL_WRITEI_FRAMES , IOC_W,
MK_PTR(MK_STRUCT(STRUCT_snd_xferi)))
+ IOCTL(SNDRV_PCM_IOCTL_READI_FRAMES , IOC_R,
MK_PTR(MK_STRUCT(STRUCT_snd_xferi)))
+ IOCTL(SNDRV_PCM_IOCTL_WRITEN_FRAMES , IOC_W,
MK_PTR(MK_STRUCT(STRUCT_snd_xfern)))
+ IOCTL(SNDRV_PCM_IOCTL_READN_FRAMES , IOC_R,
MK_PTR(MK_STRUCT(STRUCT_snd_xfern)))
+ IOCTL(SNDRV_PCM_IOCTL_LINK , IOC_W, TYPE_INT)
+ IOCTL(SNDRV_PCM_IOCTL_UNLINK , 0, TYPE_NULL)
+
+ IOCTL(SNDRV_TIMER_IOCTL_PVERSION , IOC_R, TYPE_INT)
+ IOCTL(SNDRV_TIMER_IOCTL_NEXT_DEVICE , IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_timer_id)))
+ IOCTL(SNDRV_TIMER_IOCTL_TREAD , IOC_W, TYPE_INT)
+ IOCTL(SNDRV_TIMER_IOCTL_GINFO , IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_timer_ginfo)))
+ IOCTL(SNDRV_TIMER_IOCTL_GPARAMS , IOC_W,
MK_PTR(MK_STRUCT(STRUCT_snd_timer_gparams)))
+ IOCTL(SNDRV_TIMER_IOCTL_GSTATUS , IOC_RW,
MK_PTR(MK_STRUCT(STRUCT_snd_timer_gstatus)))
+ IOCTL(SNDRV_TIMER_IOCTL_SELECT , IOC_W,
MK_PTR(MK_STRUCT(STRUCT_snd_timer_select)))
+ IOCTL(SNDRV_TIMER_IOCTL_INFO , IOC_R,
MK_PTR(MK_STRUCT(STRUCT_snd_timer_info)))
+ IOCTL(SNDRV_TIMER_IOCTL_PARAMS , IOC_W,
MK_PTR(MK_STRUCT(STRUCT_snd_timer_params)))
+ IOCTL(SNDRV_TIMER_IOCTL_STATUS , IOC_R,
MK_PTR(MK_STRUCT(STRUCT_snd_timer_status)))
+ IOCTL(SNDRV_TIMER_IOCTL_START , 0, TYPE_NULL)
+ IOCTL(SNDRV_TIMER_IOCTL_STOP , 0, TYPE_NULL)
+ IOCTL(SNDRV_TIMER_IOCTL_CONTINUE , 0, TYPE_NULL)
+ IOCTL(SNDRV_TIMER_IOCTL_PAUSE , 0, TYPE_NULL)
+
IOCTL(DRM_IOCTL_VERSION, IOC_RW, MK_PTR(MK_STRUCT(STRUCT_drm_version)))
IOCTL(DRM_IOCTL_GET_UNIQUE, IOC_RW, MK_PTR(MK_STRUCT(STRUCT_drm_unique)))
IOCTL(DRM_IOCTL_GET_MAGIC, IOC_R, MK_PTR(MK_STRUCT(STRUCT_drm_auth)))
@@ -82,6 +82,7 @@ int __clone2(int (*fn)(void *), void *child_stack_base,
#define tchars host_tchars /* same as target */
#define ltchars host_ltchars /* same as target */
+#include <sound/asound.h>
#include <libdrm/drm.h>
#include <libdrm/i915_drm.h>
#include <libdrm/radeon_drm.h>
@@ -2605,6 +2605,79 @@ struct target_user_cap_data {
uint32_t inheritable;
};
+/* asound defines */
+#define TARGET_SNDRV_CTL_IOCTL_PVERSION
TARGET_IOR('U', 0x00, int)
+#define TARGET_SNDRV_CTL_IOCTL_CARD_INFO
TARGET_IOR('U', 0x01, struct snd_ctl_card_info)
+#define TARGET_SNDRV_CTL_IOCTL_ELEM_LIST
TARGET_IOWR('U', 0x10, struct snd_ctl_elem_list)
+#define TARGET_SNDRV_CTL_IOCTL_ELEM_INFO
TARGET_IOWR('U', 0x11, struct snd_ctl_elem_info)
+#define TARGET_SNDRV_CTL_IOCTL_ELEM_READ
TARGET_IOWR('U', 0x12, struct snd_ctl_elem_value)
+#define TARGET_SNDRV_CTL_IOCTL_ELEM_WRITE
TARGET_IOWR('U', 0x13, struct snd_ctl_elem_value)
+#define TARGET_SNDRV_CTL_IOCTL_ELEM_LOCK
TARGET_IOW('U', 0x14, struct snd_ctl_elem_id)
+#define TARGET_SNDRV_CTL_IOCTL_ELEM_UNLOCK
TARGET_IOW('U', 0x15, struct snd_ctl_elem_id)
+#define TARGET_SNDRV_CTL_IOCTL_SUBSCRIBE_EVENTS
TARGET_IOWR('U', 0x16, int)
+#define TARGET_SNDRV_CTL_IOCTL_ELEM_ADD
TARGET_IOWR('U', 0x17, struct snd_ctl_elem_info)
+#define TARGET_SNDRV_CTL_IOCTL_ELEM_REPLACE
TARGET_IOWR('U', 0x18, struct snd_ctl_elem_info)
+#define TARGET_SNDRV_CTL_IOCTL_ELEM_REMOVE
TARGET_IOWR('U', 0x19, struct snd_ctl_elem_id)
+#define TARGET_SNDRV_CTL_IOCTL_TLV_READ
TARGET_IOWR('U', 0x1a, struct snd_ctl_tlv)
+#define TARGET_SNDRV_CTL_IOCTL_TLV_WRITE
TARGET_IOWR('U', 0x1b, struct snd_ctl_tlv)
+#define TARGET_SNDRV_CTL_IOCTL_TLV_COMMAND
TARGET_IOWR('U', 0x1c, struct snd_ctl_tlv)
+#define TARGET_SNDRV_CTL_IOCTL_HWDEP_NEXT_DEVICE
TARGET_IOWR('U', 0x20, int)
+#define TARGET_SNDRV_CTL_IOCTL_HWDEP_INFO
TARGET_IOR('U', 0x21, struct snd_hwdep_info)
+#define TARGET_SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE
TARGET_IOR('U', 0x30, int)
+#define TARGET_SNDRV_CTL_IOCTL_PCM_INFO
TARGET_IOWR('U', 0x31, struct snd_pcm_info)
+#define TARGET_SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE
TARGET_IOW('U', 0x32, int)
+#define TARGET_SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE
TARGET_IOWR('U', 0x40, int)
+#define TARGET_SNDRV_CTL_IOCTL_RAWMIDI_INFO
TARGET_IOWR('U', 0x41, struct snd_rawmidi_info)
+#define TARGET_SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE
TARGET_IOW('U', 0x42, int)
+#define TARGET_SNDRV_CTL_IOCTL_POWER
TARGET_IOWR('U', 0xd0, int)
+#define TARGET_SNDRV_CTL_IOCTL_POWER_STATE
TARGET_IOR('U', 0xd1, int)
+
+#define TARGET_SNDRV_PCM_IOCTL_PVERSION
TARGET_IOR('A', 0x00, int)
+#define TARGET_SNDRV_PCM_IOCTL_INFO
TARGET_IOR('A', 0x01, struct snd_pcm_info)
+#define TARGET_SNDRV_PCM_IOCTL_TSTAMP
TARGET_IOW('A', 0x02, int)
+#define TARGET_SNDRV_PCM_IOCTL_TTSTAMP
TARGET_IOW('A', 0x03, int)
+#define TARGET_SNDRV_PCM_IOCTL_HW_REFINE
TARGET_IOWR('A', 0x10, struct snd_pcm_hw_params)
+#define TARGET_SNDRV_PCM_IOCTL_HW_PARAMS
TARGET_IOWR('A', 0x11, struct snd_pcm_hw_params)
+#define TARGET_SNDRV_PCM_IOCTL_HW_FREE
TARGET_IO('A', 0x12)
+#define TARGET_SNDRV_PCM_IOCTL_SW_PARAMS
TARGET_IOWR('A', 0x13, struct snd_pcm_sw_params)
+#define TARGET_SNDRV_PCM_IOCTL_STATUS
TARGET_IOR('A', 0x20, struct snd_pcm_status)
+#define TARGET_SNDRV_PCM_IOCTL_DELAY
TARGET_IOR('A', 0x21, long)
+#define TARGET_SNDRV_PCM_IOCTL_HWSYNC
TARGET_IO('A', 0x22)
+#define TARGET_SNDRV_PCM_IOCTL_SYNC_PTR
TARGET_IOWR('A', 0x23, struct snd_pcm_sync_ptr)
+#define TARGET_SNDRV_PCM_IOCTL_STATUS_EXT
TARGET_IOWR('A', 0x24, struct snd_pcm_status)
+#define TARGET_SNDRV_PCM_IOCTL_CHANNEL_INFO
TARGET_IOR('A', 0x32, struct snd_pcm_channel_info)
+#define TARGET_SNDRV_PCM_IOCTL_PREPARE
TARGET_IO('A', 0x40)
+#define TARGET_SNDRV_PCM_IOCTL_RESET
TARGET_IO('A', 0x41)
+#define TARGET_SNDRV_PCM_IOCTL_START
TARGET_IO('A', 0x42)
+#define TARGET_SNDRV_PCM_IOCTL_DROP
TARGET_IO('A', 0x43)
+#define TARGET_SNDRV_PCM_IOCTL_DRAIN
TARGET_IO('A', 0x44)
+#define TARGET_SNDRV_PCM_IOCTL_PAUSE
TARGET_IOW('A', 0x45, int)
+#define TARGET_SNDRV_PCM_IOCTL_REWIND
TARGET_IOW('A', 0x46, unsigned long)
+#define TARGET_SNDRV_PCM_IOCTL_RESUME
TARGET_IO('A', 0x47)
+#define TARGET_SNDRV_PCM_IOCTL_XRUN
TARGET_IO('A', 0x48)
+#define TARGET_SNDRV_PCM_IOCTL_FORWARD
TARGET_IOW('A', 0x49, unsigned long)
+#define TARGET_SNDRV_PCM_IOCTL_WRITEI_FRAMES
TARGET_IOW('A', 0x50, struct snd_xferi)
+#define TARGET_SNDRV_PCM_IOCTL_READI_FRAMES
TARGET_IOR('A', 0x51, struct snd_xferi)
+#define TARGET_SNDRV_PCM_IOCTL_WRITEN_FRAMES
TARGET_IOW('A', 0x52, struct snd_xfern)
+#define TARGET_SNDRV_PCM_IOCTL_READN_FRAMES
TARGET_IOR('A', 0x53, struct snd_xfern)
+#define TARGET_SNDRV_PCM_IOCTL_LINK
TARGET_IOW('A', 0x60, int)
+#define TARGET_SNDRV_PCM_IOCTL_UNLINK
TARGET_IO('A', 0x61)
+
+#define TARGET_SNDRV_TIMER_IOCTL_PVERSION
TARGET_IOR('T', 0x00, int)
+#define TARGET_SNDRV_TIMER_IOCTL_NEXT_DEVICE
TARGET_IOWR('T', 0x01, struct snd_timer_id)
+#define TARGET_SNDRV_TIMER_IOCTL_TREAD
TARGET_IOW('T', 0x02, int)
+#define TARGET_SNDRV_TIMER_IOCTL_GINFO
TARGET_IOWR('T', 0x03, struct snd_timer_ginfo)
+#define TARGET_SNDRV_TIMER_IOCTL_GPARAMS
TARGET_IOW('T', 0x04, struct snd_timer_gparams)
+#define TARGET_SNDRV_TIMER_IOCTL_GSTATUS
TARGET_IOWR('T', 0x05, struct snd_timer_gstatus)
+#define TARGET_SNDRV_TIMER_IOCTL_SELECT
TARGET_IOW('T', 0x10, struct snd_timer_select)
+#define TARGET_SNDRV_TIMER_IOCTL_INFO
TARGET_IOR('T', 0x11, struct snd_timer_info)
+#define TARGET_SNDRV_TIMER_IOCTL_PARAMS
TARGET_IOW('T', 0x12, struct snd_timer_params)
+#define TARGET_SNDRV_TIMER_IOCTL_STATUS
TARGET_IOR('T', 0x14, struct snd_timer_status)
+#define TARGET_SNDRV_TIMER_IOCTL_START
TARGET_IO('T', 0xa0)
+#define TARGET_SNDRV_TIMER_IOCTL_STOP
TARGET_IO('T', 0xa1)
+#define TARGET_SNDRV_TIMER_IOCTL_CONTINUE
TARGET_IO('T', 0xa2)
+#define TARGET_SNDRV_TIMER_IOCTL_PAUSE
TARGET_IO('T', 0xa3)
+
/* drm defines */
#define TARGET_DRM_IOCTL_VERSION TARGET_IOWR('d',
0x00, struct drm_version)
#define TARGET_DRM_IOCTL_GET_UNIQUE TARGET_IOWR('d',
0x01, struct drm_unique)
@@ -254,6 +254,279 @@ STRUCT(blkpg_ioctl_arg,
TYPE_INT, /* datalen */
TYPE_PTRVOID) /* data */
+STRUCT(snd_ctl_card_info,
+ TYPE_INT, /* card */
+ TYPE_INT, /* pad */
+ MK_ARRAY(TYPE_CHAR, 16), /* id */
+ MK_ARRAY(TYPE_CHAR, 16), /* driver */
+ MK_ARRAY(TYPE_CHAR, 32), /* name */
+ MK_ARRAY(TYPE_CHAR, 80), /* longname */
+ MK_ARRAY(TYPE_CHAR, 16), /* reserved_ */
+ MK_ARRAY(TYPE_CHAR, 80), /* mixername */
+ MK_ARRAY(TYPE_CHAR, 128)) /* components */
+
+STRUCT(snd_ctl_elem_list,
+ TYPE_INT, /* offset */
+ TYPE_INT, /* space */
+ TYPE_INT, /* used */
+ TYPE_INT, /* count */
+ TYPE_PTRVOID, /* pids */
+ MK_ARRAY(TYPE_CHAR, 50)) /* reserved */
+
+STRUCT(snd_ctl_elem_info,
+ /* id struct */
+ TYPE_INT, /* numid */
+ TYPE_INT, /* iface */
+ TYPE_INT, /* device */
+ TYPE_INT, /* subdevice */
+ MK_ARRAY(TYPE_CHAR, SNDRV_CTL_ELEM_ID_NAME_MAXLEN), /* name */
+ TYPE_INT, /* index */
+
+ TYPE_INT, /*type */
+ TYPE_INT, /* access */
+ TYPE_INT, /* count */
+ TYPE_INT, /* owner */
+ MK_ARRAY(TYPE_CHAR, 128), /* value */
+ MK_ARRAY(TYPE_CHAR, 8), /* dimen */
+ MK_ARRAY(TYPE_CHAR, 56)) /* reserved */
+
+STRUCT(snd_ctl_elem_value,
+ /* id struct */
+ TYPE_INT, /* numid */
+ TYPE_INT, /* iface */
+ TYPE_INT, /* device */
+ TYPE_INT, /* subdevice */
+ MK_ARRAY(TYPE_CHAR, SNDRV_CTL_ELEM_ID_NAME_MAXLEN), /* name */
+ TYPE_INT, /* index */
+
+ TYPE_INT, /* indirect */
+ MK_ARRAY(TYPE_CHAR, 512), /* value */
+
+ /* timespec struct */
+ TYPE_LONG, /* tv_sec */
+ TYPE_LONG, /* tv_nsec */
+ MK_ARRAY(TYPE_CHAR, 112)) /* reserved */
+
+STRUCT(snd_ctl_elem_id,
+ TYPE_INT, /* numid */
+ TYPE_INT, /* iface */
+ TYPE_INT, /* device */
+ TYPE_INT, /* subdevice */
+ MK_ARRAY(TYPE_CHAR, SNDRV_CTL_ELEM_ID_NAME_MAXLEN), /* name */
+ TYPE_INT) /* index */
+
+STRUCT(snd_ctl_tlv,
+ TYPE_INT, /* numid */
+ TYPE_INT, /* length */
+ TYPE_INT) /* tlv */
+
+STRUCT(snd_hwdep_info,
+ TYPE_INT, /* device */
+ TYPE_INT, /* card */
+ MK_ARRAY(TYPE_CHAR, 64), /* id */
+ MK_ARRAY(TYPE_CHAR, 80), /* name */
+ TYPE_INT, /* iface */
+ MK_ARRAY(TYPE_CHAR, 64)) /* reserved */
+
+STRUCT(snd_pcm_info,
+ TYPE_INT, /* device */
+ TYPE_INT, /* subdevice */
+ TYPE_INT, /* stream */
+ TYPE_INT, /* card */
+ MK_ARRAY(TYPE_CHAR, 64), /* id */
+ MK_ARRAY(TYPE_CHAR, 80), /* name */
+ MK_ARRAY(TYPE_CHAR, 32), /* subname */
+ TYPE_INT, /* dev_class */
+ TYPE_INT, /* dev_subclass */
+ TYPE_INT, /* subdevices_count */
+ TYPE_INT, /* subdevices_avail */
+ MK_ARRAY(TYPE_CHAR, 16), /* sync */
+ MK_ARRAY(TYPE_CHAR, 64)) /* reserved */
+
+STRUCT(snd_rawmidi_info,
+ TYPE_INT, /* device */
+ TYPE_INT, /* subdevice */
+ TYPE_INT, /* stream */
+ TYPE_INT, /* card */
+ TYPE_INT, /* flags */
+ MK_ARRAY(TYPE_CHAR, 64), /* id */
+ MK_ARRAY(TYPE_CHAR, 80), /* name */
+ MK_ARRAY(TYPE_CHAR, 32), /* subname */
+ TYPE_INT, /* subdevices_count */
+ TYPE_INT, /* subdevices_avail */
+ MK_ARRAY(TYPE_CHAR, 64)) /* reserved */
+
+STRUCT(snd_pcm_hw_params,
+ TYPE_INT, /* flags */
+ MK_ARRAY(TYPE_INT, SNDRV_PCM_HW_PARAM_LAST_MASK -
SNDRV_PCM_HW_PARAM_FIRST_MASK + 1), /* masks */
+ MK_ARRAY(TYPE_INT, ((SNDRV_MASK_MAX+31)/32) * 5), /* mres */
+ MK_ARRAY(TYPE_INT, 6 * (SNDRV_PCM_HW_PARAM_LAST_INTERVAL -
SNDRV_PCM_HW_PARAM_FIRST_INTERVAL + 1)), /* snd_interval */
+ MK_ARRAY(TYPE_INT, 6 * 9), /* ires */
+ TYPE_INT, /* rmask */
+ TYPE_INT, /* cmask */
+ TYPE_INT, /* info */
+ TYPE_INT, /* msbits */
+ TYPE_INT, /* rate_num */
+ TYPE_INT, /* rate_den */
+ TYPE_LONG, /* fifo_size */
+ MK_ARRAY(TYPE_CHAR, 64)) /* reserved */
+
+STRUCT(snd_pcm_sw_params,
+ TYPE_INT, /* tstamp_mode */
+ TYPE_INT, /* period_step */
+ TYPE_INT, /* sleep_min */
+ TYPE_LONG, /* avail_min */
+ TYPE_LONG, /* xfer_align */
+ TYPE_LONG, /* start_threshold */
+ TYPE_LONG, /* stop_threshold */
+ TYPE_LONG, /* silence_threshold */
+ TYPE_LONG, /* silence_size */
+ TYPE_LONG, /* boundary */
+ TYPE_INT, /* proto */
+ TYPE_INT, /* tstamp_type */
+ MK_ARRAY(TYPE_CHAR, 56)) /* reserved */
+
+STRUCT(snd_pcm_status,
+ TYPE_INT, /* state */
+
+ /* timespec struct */
+ TYPE_LONG, /* tv_sec */
+ TYPE_LONG, /* tv_nsec */
+
+ /* timespec struct */
+ TYPE_LONG, /* tv_sec */
+ TYPE_LONG, /* tv_nsec */
+
+ TYPE_LONG, /* appl_ptr */
+ TYPE_LONG, /* hw_ptr */
+ TYPE_LONG, /* delay */
+ TYPE_LONG, /* avail */
+ TYPE_LONG, /* avail_max */
+ TYPE_LONG, /* overrange */
+ TYPE_INT, /* suspended_state */
+ TYPE_INT, /* audio_tstamp_data */
+
+ /* timespec struct */
+ TYPE_LONG, /* tv_sec */
+ TYPE_LONG, /* tv_nsec */
+
+ /* timespec struct */
+ TYPE_LONG, /* tv_sec */
+ TYPE_LONG, /* tv_nsec */
+
+ TYPE_INT, /* audio_tstamp_accuracy */
+ MK_ARRAY(TYPE_CHAR, 36)) /* reserved */
+
+STRUCT(snd_pcm_sync_ptr,
+ TYPE_INT, /* flags */
+ MK_ARRAY(TYPE_CHAR, 64), /* reserved */
+ MK_ARRAY(TYPE_CHAR, 64)) /* reserved */
+
+STRUCT(snd_pcm_channel_info,
+ TYPE_INT, /* channel */
+ TYPE_ULONGLONG, /* offset */
+ TYPE_INT, /* first */
+ TYPE_INT) /* step */
+
+STRUCT(snd_xferi,
+ TYPE_LONG, /* result */
+ TYPE_PTRVOID, /* buf */
+ TYPE_LONG) /* frames */
+
+STRUCT(snd_xfern,
+ TYPE_LONG, /* result */
+ TYPE_PTRVOID, /* bufs */
+ TYPE_LONG) /* frames */
+
+STRUCT(snd_timer_id,
+ TYPE_INT, /* dev_class */
+ TYPE_INT, /* dev_sclass */
+ TYPE_INT, /* card */
+ TYPE_INT, /* device */
+ TYPE_INT) /* subdevice */
+
+STRUCT(snd_timer_ginfo,
+ /* struct snd_timer_id */
+ TYPE_INT, /* dev_class */
+ TYPE_INT, /* dev_sclass */
+ TYPE_INT, /* card */
+ TYPE_INT, /* device */
+ TYPE_INT, /* subdevice */
+
+ TYPE_INT, /* flags */
+ TYPE_INT, /* card */
+ MK_ARRAY(TYPE_CHAR, 64), /* id */
+ MK_ARRAY(TYPE_CHAR, 80), /* name */
+ TYPE_LONG, /* reserved0 */
+ TYPE_LONG, /* resolution */
+ TYPE_LONG, /* resolution_min */
+ TYPE_LONG, /* resolution_max */
+ TYPE_INT, /* clients */
+ MK_ARRAY(TYPE_CHAR, 32)) /* reserved */
+
+STRUCT(snd_timer_gparams,
+ /* struct snd_timer_id */
+ TYPE_INT, /* dev_class */
+ TYPE_INT, /* dev_sclass */
+ TYPE_INT, /* card */
+ TYPE_INT, /* device */
+ TYPE_INT, /* subdevice */
+
+ TYPE_LONG, /* period_num */
+ TYPE_LONG, /* period_den */
+ MK_ARRAY(TYPE_CHAR, 32)) /* reserved */
+
+STRUCT(snd_timer_gstatus,
+ /* struct snd_timer_id */
+ TYPE_INT, /* dev_class */
+ TYPE_INT, /* dev_sclass */
+ TYPE_INT, /* card */
+ TYPE_INT, /* device */
+ TYPE_INT, /* subdevice */
+
+ TYPE_LONG, /* resolution */
+ TYPE_LONG, /* resolution_num */
+ TYPE_LONG, /* resolution_den */
+ MK_ARRAY(TYPE_CHAR, 32)) /* reserved */
+
+STRUCT(snd_timer_select,
+ /* struct snd_timer_id */
+ TYPE_INT, /* dev_class */
+ TYPE_INT, /* dev_sclass */
+ TYPE_INT, /* card */
+ TYPE_INT, /* device */
+ TYPE_INT, /* subdevice */
+
+ MK_ARRAY(TYPE_CHAR, 32)) /* reserved */
+
+STRUCT(snd_timer_info,
+ TYPE_INT, /* flags */
+ TYPE_INT, /* card */
+ MK_ARRAY(TYPE_CHAR, 64), /* id */
+ MK_ARRAY(TYPE_CHAR, 80), /* name */
+ TYPE_LONG, /* reserved0 */
+ TYPE_LONG, /* resolution */
+ MK_ARRAY(TYPE_CHAR, 64)) /* reserved */
+
+STRUCT(snd_timer_params,
+ TYPE_INT, /* flags */
+ TYPE_INT, /* ticks */
+ TYPE_INT, /* queue_size */
+ TYPE_INT, /* reserved0 */
+ TYPE_INT, /* filter */
+ MK_ARRAY(TYPE_CHAR, 60)) /* reserved */
+
+STRUCT(snd_timer_status,
+ /* timespec struct */
+ TYPE_LONG, /* tv_sec */
+ TYPE_LONG, /* tv_nsec */
+
+ TYPE_INT, /* resolution */
+ TYPE_INT, /* lost */
+ TYPE_INT, /* overrun */
+ TYPE_INT, /* queue */
+ MK_ARRAY(TYPE_CHAR, 64)) /* reserved */
+
STRUCT(drm_version,
TYPE_INT, /* version_major */
Tested with ExtremeTuxRacer in guest with HDMI audio sink on host Signed-off-by: Timothy Pearson <tpearson@raptorengineering.com> --- linux-user/ioctls.h | 72 ++++++++++++ linux-user/syscall.c | 1 + linux-user/syscall_defs.h | 73 ++++++++++++ linux-user/syscall_types.h | 273 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 419 insertions(+) TYPE_INT, /* version_minor */