diff mbox series

[12/12] linux-user: Add support for selected alsa timer instructions using ioctls

Message ID 1578574763-8327-13-git-send-email-Filip.Bozuta@rt-rk.com
State New
Headers show
Series linux-user: Add support for real time clock and | expand

Commit Message

Filip Bozuta Jan. 9, 2020, 12:59 p.m. UTC
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(+)

Comments

Laurent Vivier Jan. 14, 2020, 12:57 p.m. UTC | #1
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>
diff mbox series

Patch

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)