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.boz...@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 <laur...@vivier.eu>

Reply via email to