[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 07/12] linux-user: Add support for getting alsa timer version
From: |
Laurent Vivier |
Subject: |
Re: [PATCH 07/12] linux-user: Add support for getting alsa timer version and id |
Date: |
Tue, 14 Jan 2020 13:42:57 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.3.1 |
Le 09/01/2020 à 13:59, Filip Bozuta a écrit :
> This patch implements functionalities of following ioctls:
>
> SNDRV_TIMER_IOCTL_PVERSION - Getting the sound timer version
>
> Read the sound timer version. The third ioctl's argument is
> a pointer to an int in which the specified timers version
> is returned.
>
> SNDRV_TIMER_IOCTL_NEXT_DEVICE - Getting id information about next timer
>
> Read id information about the next timer device from the sound timer
> device list. The id infomration is returned in the following structure:
>
> struct snd_timer_id {
> int dev_class; /* timer device class number */
> int dev_sclass; /* slave device class number (unused) */
> int card; /* card number */
> int device; /* device number */
> int subdevice; /* sub-device number */
> };
>
> The devices in the sound timer device list are arranged by the fields
> of this structure respectively (first by dev_class number, then by
> card number, ...). A pointer to this structure should be passed as
> the third ioctl's argument. Before calling the ioctl, the parameters
> of this structure should be initialized in relation to the next timer
> device which information is to be obtained. For example, if a wanted
> timer device has the device class number equal to or bigger then 2,
> the field dev_class should be initialized to 2. After the ioctl call,
> the structure fields are filled with values from the next device in
> the sound timer device list. If there is no next device in the list,
> then the structure is filled with "zero" id values (in that case all
> fields are filled with value -1).
>
> Implementation notes:
>
> The ioctl 'SNDRV_TIMER_IOCTL_NEXT_DEVICE' has a pointer to a
> 'struct snd_timer_id' as its third argument. That is the reason why
> corresponding definition is added in 'linux-user/syscall_types.h'.
> Since all elements of this structure are of type 'int', the rest of
> the implementation is straightforward.
>
> The line '#include <linux/rtc.h>' was added to recognize
> preprocessor definitions for these ioctls. This needs to be
> done only once in this series of commits. Also, the content
> of this file (with respect to ioctl definitions) remained
> unchanged for a long time, therefore there is no need to
> worry about supporting older Linux kernel version.
>
> Signed-off-by: Filip Bozuta <address@hidden>
> ---
> linux-user/ioctls.h | 4 ++++
> linux-user/syscall.c | 1 +
> linux-user/syscall_defs.h | 5 +++++
> linux-user/syscall_types.h | 7 +++++++
> 4 files changed, 17 insertions(+)
>
> diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
> index 1f1f3e6..ed1bd4c 100644
> --- a/linux-user/ioctls.h
> +++ b/linux-user/ioctls.h
> @@ -449,6 +449,10 @@
> IOCTL(SOUND_MIXER_WRITE_LOUD, IOC_W, MK_PTR(TYPE_INT))
> IOCTL(SOUND_MIXER_WRITE_RECSRC, IOC_W, MK_PTR(TYPE_INT))
>
> + IOCTL(SNDRV_TIMER_IOCTL_PVERSION, IOC_R, MK_PTR(TYPE_INT))
> + IOCTL(SNDRV_TIMER_IOCTL_NEXT_DEVICE, IOC_RW,
> + MK_PTR(MK_STRUCT(STRUCT_snd_timer_id)))
> +
> IOCTL(HDIO_GETGEO, IOC_R, MK_PTR(MK_STRUCT(STRUCT_hd_geometry)))
> IOCTL(HDIO_GET_UNMASKINTR, IOC_R, MK_PTR(TYPE_INT))
> IOCTL(HDIO_GET_MULTCOUNT, IOC_R, MK_PTR(TYPE_INT))
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 74c3c08..a3993a2 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -108,6 +108,7 @@
> #include <linux/netlink.h>
> #include <linux/if_alg.h>
> #include <linux/rtc.h>
> +#include <sound/asound.h>
> #include "linux_loop.h"
> #include "uname.h"
>
> diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
> index af4f366..7409021 100644
> --- a/linux-user/syscall_defs.h
> +++ b/linux-user/syscall_defs.h
> @@ -2425,6 +2425,11 @@ struct target_statfs64 {
>
> #define TARGET_SOUND_MIXER_WRITE_RECSRC
> TARGET_MIXER_WRITE(SOUND_MIXER_RECSRC)
>
> +/* alsa timer ioctls */
> +#define TARGET_SNDRV_TIMER_IOCTL_PVERSION TARGET_IOR('T', 0x00, int)
> +#define TARGET_SNDRV_TIMER_IOCTL_NEXT_DEVICE TARGET_IOWR('T', 0x01,
> \
> + struct
> snd_timer_id)
> +
> /* vfat ioctls */
> #define TARGET_VFAT_IOCTL_READDIR_BOTH TARGET_IORU('r', 1)
> #define TARGET_VFAT_IOCTL_READDIR_SHORT TARGET_IORU('r', 2)
> diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h
> index 4027272..2f4cd78 100644
> --- a/linux-user/syscall_types.h
> +++ b/linux-user/syscall_types.h
> @@ -83,6 +83,13 @@ STRUCT(buffmem_desc,
> STRUCT(mixer_info,
> MK_ARRAY(TYPE_CHAR, 16), MK_ARRAY(TYPE_CHAR, 32), TYPE_INT,
> MK_ARRAY(TYPE_INT, 10))
>
> +STRUCT(snd_timer_id,
> + TYPE_INT, /* dev_class */
> + TYPE_INT, /* dev_sclass */
> + TYPE_INT, /* card */
> + TYPE_INT, /* device */
> + TYPE_INT) /* subdevice */
> +
> /* loop device ioctls */
> STRUCT(loop_info,
> TYPE_INT, /* lo_number */
>
Reviewed-by: Laurent Vivier <address@hidden>
- [PATCH 00/12] linux-user: Add support for real time clock and, Filip Bozuta, 2020/01/09
- [PATCH 02/12] linux-user: Add support for getting/setting RTC time and alarm using ioctls, Filip Bozuta, 2020/01/09
- [PATCH 07/12] linux-user: Add support for getting alsa timer version and id, Filip Bozuta, 2020/01/09
- Re: [PATCH 07/12] linux-user: Add support for getting alsa timer version and id,
Laurent Vivier <=
- [PATCH 03/12] linux-user: Add support for getting/setting RTC periodic interrupt and epoch using ioctls, Filip Bozuta, 2020/01/09
- [PATCH 04/12] linux-user: Add support for getting/setting RTC wakeup alarm using ioctls, Filip Bozuta, 2020/01/09
- [PATCH 06/12] linux-user: Add support for read/clear RTC voltage low detector using ioctls, Filip Bozuta, 2020/01/09
- [PATCH 01/12] linux-user: Add support for enabling/disabling RTC features using ioctls, Filip Bozuta, 2020/01/09
- [PATCH 08/12] linux-user: Add support for setting alsa timer enhanced read using ioctl, Filip Bozuta, 2020/01/09