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>