Le 09/01/2020 à 13:59, Filip Bozuta a écrit :
> This patch implements functionalities of following ioctls:
>
> SNDRV_TIMER_IOCTL_START - Start selected alsa timer
>
> Starts the timer device that is selected. The third ioctl's argument is
> ignored. Before calling this ioctl, the ioctl "SNDRV_TIMER_IOCTL_SELECT"
> should be called first to select the timer that is to be started. If no
> timer is selected, the error EBADFD ("File descriptor in bad shape")
> is returned.
>
> SNDRV_TIMER_IOCTL_STOP - Stop selected alsa timer
>
> Stops the timer device that is selected. The third ioctl's argument is
> ignored. Before calling this ioctl, the ioctl "SNDRV_TIMER_IOCTL_SELECT"
> should be called first to select the timer that is to be stopped. If no
> timer is selected, the error EBADFD ("File descriptor in bad shape")
> is returned.
>
> SNDRV_TIMER_IOCTL_CONTINUE - Continue selected alsa timer
>
> Continues the timer device that is selected. The third ioctl's argument is
> ignored. Before calling this ioctl, the ioctl "SNDRV_TIMER_IOCTL_SELECT"
> should be called first to select the timer that is to be continued. If no
> timer is selected, the error EBADFD ("File descriptor in bad shape")
> is returned.
>
> SNDRV_TIMER_IOCTL_PAUSE - Pause selected alsa timer
>
> Pauses the timer device that is selected. The third ioctl's argument is
> ignored. Before calling this ioctl, the ioctl "SNDRV_TIMER_IOCTL_SELECT"
> should be called first to select the timer that is to be paused. If no
> timer is selected, the error EBADFD ("File descriptor in bad shape")
> is returned.
>
> Implementation notes:
>
> Since all of the implemented ioctls have NULL as their third argument,
> their implementation was straightforward.
>
> Signed-off-by: Filip Bozuta <Filip.Bozuta@rt-rk.com>
> ---
> linux-user/ioctls.h | 4 ++++
> linux-user/syscall_defs.h | 4 ++++
> 2 files changed, 8 insertions(+)
>
> diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
> index 43e7e5d..75a2f0e 100644
> --- a/linux-user/ioctls.h
> +++ b/linux-user/ioctls.h
> @@ -466,6 +466,10 @@
> 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(HDIO_GETGEO, IOC_R, MK_PTR(MK_STRUCT(STRUCT_hd_geometry)))
> IOCTL(HDIO_GET_UNMASKINTR, IOC_R, MK_PTR(TYPE_INT))
> diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
> index d76124d..311aec0 100644
> --- a/linux-user/syscall_defs.h
> +++ b/linux-user/syscall_defs.h
> @@ -2505,6 +2505,10 @@ struct target_snd_timer_status {
> struct snd_timer_params)
> #define TARGET_SNDRV_TIMER_IOCTL_STATUS TARGET_IOR('T', 0x14, \
> struct target_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)
>
> /* vfat ioctls */
> #define TARGET_VFAT_IOCTL_READDIR_BOTH TARGET_IORU('r', 1)
>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>