static int snd_compr_ioctl_avail(struct snd_compr_stream *stream, unsigned long arg) { struct snd_compr_avail ioctl_avail; size_t avail; avail = snd_compr_calc_avail(stream, &ioctl_avail); ioctl_avail.avail = avail; if (copy_to_user((__u64 __user *)arg, &ioctl_avail, sizeof(ioctl_avail))) return -EFAULT; return 0; }
static int snd_compr_ioctl_avail(struct snd_compr_stream *stream, unsigned long arg) { struct snd_compr_avail ioctl_avail; size_t avail; avail = snd_compr_calc_avail(stream, &ioctl_avail); ioctl_avail.avail = avail; switch (stream->runtime->state) { case SNDRV_PCM_STATE_OPEN: return -EBADFD; case SNDRV_PCM_STATE_XRUN: return -EPIPE; default: break; } if (copy_to_user((__u64 __user *)arg, &ioctl_avail, sizeof(ioctl_avail))) return -EFAULT; return 0; }
static inline size_t snd_compr_get_avail(struct snd_compr_stream *stream) { struct snd_compr_avail avail; return snd_compr_calc_avail(stream, &avail); }