All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Vivier <laurent@vivier.eu>
To: qemu-devel@nongnu.org
Cc: Riku Voipio <riku.voipio@iki.fi>,
	Laurent Vivier <laurent@vivier.eu>,
	Filip Bozuta <Filip.Bozuta@rt-rk.com>
Subject: [PULL 15/17] linux-user: Add support for getting/setting RTC wakeup alarm using ioctls
Date: Thu, 23 Jan 2020 09:22:25 +0100	[thread overview]
Message-ID: <20200123082227.2037994-16-laurent@vivier.eu> (raw)
In-Reply-To: <20200123082227.2037994-1-laurent@vivier.eu>

From: Filip Bozuta <Filip.Bozuta@rt-rk.com>

This patch implements functionalities of following ioctls:

RTC_WKALM_SET, RTC_WKALM_GET - Getting/Setting wakeup alarm

    Some RTCs support a more powerful alarm interface, using these
    ioctls to read or write the RTC's alarm time (respectively)
    with this structure:

        struct rtc_wkalrm {
            unsigned char enabled;
            unsigned char pending;
            struct rtc_time time;
        };

    The enabled flag is used to enable or disable the alarm
    interrupt, or to read its current status; when using these
    calls, RTC_AIE_ON and RTC_AIE_OFF are not used. The pending
    flag is used by RTC_WKALM_RD to report a pending interrupt
    (so it's mostly useless on Linux, except when talking to the
    RTC managed by EFI firmware). The time field is as used with
    RTC_ALM_READ and RTC_ALM_SET except that the tm_mday, tm_mon,
    and tm_year fields are also valid. A pointer to this structure
    should be passed as the third ioctl's argument.

Implementation notes:

    All ioctls in this patch have a pointer to a structure
    rtc_wkalrm as their third argument. That is the reason why
    corresponding definition is added in linux-user/syscall_types.h.
    Since all  elements of this structure are either of type
    'unsigned char' or 'struct rtc_time' (that was covered in one
    of previous patches), the rest of the implementation is
    straightforward.

Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Signed-off-by: Filip Bozuta <Filip.Bozuta@rt-rk.com>
Message-Id: <1579117007-7565-5-git-send-email-Filip.Bozuta@rt-rk.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
 linux-user/ioctls.h        | 2 ++
 linux-user/syscall_defs.h  | 2 ++
 linux-user/syscall_types.h | 5 +++++
 3 files changed, 9 insertions(+)

diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
index 9e91eaae7705..e4c1fbf52b1b 100644
--- a/linux-user/ioctls.h
+++ b/linux-user/ioctls.h
@@ -85,6 +85,8 @@
      IOCTL(RTC_IRQP_SET, IOC_W, TYPE_ULONG)
      IOCTL(RTC_EPOCH_READ, IOC_R, MK_PTR(TYPE_ULONG))
      IOCTL(RTC_EPOCH_SET, IOC_W, TYPE_ULONG)
+     IOCTL(RTC_WKALM_RD, IOC_R, MK_PTR(MK_STRUCT(STRUCT_rtc_wkalrm)))
+     IOCTL(RTC_WKALM_SET, IOC_W, MK_PTR(MK_STRUCT(STRUCT_rtc_wkalrm)))
 
      IOCTL(BLKROSET, IOC_W, MK_PTR(TYPE_INT))
      IOCTL(BLKROGET, IOC_R, MK_PTR(TYPE_INT))
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index fcbb2ee9a387..c33432a374e5 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -780,6 +780,8 @@ struct target_pollfd {
 #define TARGET_RTC_IRQP_SET         TARGET_IOW('p', 0x0c, abi_ulong)
 #define TARGET_RTC_EPOCH_READ       TARGET_IOR('p', 0x0d, abi_ulong)
 #define TARGET_RTC_EPOCH_SET        TARGET_IOW('p', 0x0e, abi_ulong)
+#define TARGET_RTC_WKALM_RD         TARGET_IOR('p', 0x10, struct rtc_wkalrm)
+#define TARGET_RTC_WKALM_SET        TARGET_IOW('p', 0x0f, struct rtc_wkalrm)
 
 #if defined(TARGET_ALPHA) || defined(TARGET_MIPS) || defined(TARGET_SH4) ||    \
        defined(TARGET_XTENSA)
diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h
index bddc89a6641b..3efa9536ccfa 100644
--- a/linux-user/syscall_types.h
+++ b/linux-user/syscall_types.h
@@ -266,6 +266,11 @@ STRUCT(rtc_time,
        TYPE_INT, /* tm_yday */
        TYPE_INT) /* tm_isdst */
 
+STRUCT(rtc_wkalrm,
+       TYPE_CHAR, /* enabled */
+       TYPE_CHAR, /* pending */
+       MK_STRUCT(STRUCT_rtc_time)) /* time */
+
 STRUCT(blkpg_ioctl_arg,
        TYPE_INT, /* op */
        TYPE_INT, /* flags */
-- 
2.24.1



  parent reply	other threads:[~2020-01-23  8:32 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-23  8:22 [PULL 00/17] Linux user for 5.0 patches Laurent Vivier
2020-01-23  8:22 ` [PULL 01/17] linux-user:Fix align mistake when mmap guest space Laurent Vivier
2020-01-23  8:22 ` [PULL 02/17] linux-user: Reserve space for brk Laurent Vivier
2020-01-23  8:22 ` [PULL 03/17] linux-user: Add support for FS_IOC_<GET|SET>VERSION ioctls Laurent Vivier
2020-01-23  8:22 ` [PULL 04/17] linux-user: Add support for FS_IOC32_<GET|SET>FLAGS ioctls Laurent Vivier
2020-01-23  8:22 ` [PULL 05/17] linux-user: Add support for FS_IOC32_<GET|SET>VERSION ioctls Laurent Vivier
2020-01-23  8:22 ` [PULL 06/17] linux-user: Add support for FD<SETEMSGTRESH|SETMAXERRS|GETMAXERRS> ioctls Laurent Vivier
2020-01-23  8:22 ` [PULL 07/17] linux-user: Add support for FDFMT<BEG|TRK|END> ioctls Laurent Vivier
2020-01-23  8:22 ` [PULL 08/17] configure: Detect kcov support and introduce CONFIG_KCOV Laurent Vivier
2020-01-23  8:22 ` [PULL 09/17] linux-user: Add support for KCOV_<ENABLE|DISABLE> ioctls Laurent Vivier
2020-01-23  8:22 ` [PULL 10/17] linux-user: Add support for KCOV_INIT_TRACE ioctl Laurent Vivier
2020-01-23  8:22 ` [PULL 11/17] linux-user: Add support for TYPE_LONG and TYPE_ULONG in do_ioctl() Laurent Vivier
2020-01-23  8:22 ` [PULL 12/17] linux-user: Add support for enabling/disabling RTC features using ioctls Laurent Vivier
2020-01-23  8:22 ` [PULL 13/17] linux-user: Add support for getting/setting RTC time and alarm " Laurent Vivier
2020-01-23  8:22 ` [PULL 14/17] linux-user: Add support for getting/setting RTC periodic interrupt and epoch " Laurent Vivier
2020-01-23  8:22 ` Laurent Vivier [this message]
2020-01-23  8:22 ` [PULL 16/17] linux-user: Add support for getting/setting RTC PLL correction " Laurent Vivier
2020-01-23  8:22 ` [PULL 17/17] linux-user: Add support for read/clear RTC voltage low detector " Laurent Vivier
2020-01-23 15:17 ` [PULL 00/17] Linux user for 5.0 patches Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200123082227.2037994-16-laurent@vivier.eu \
    --to=laurent@vivier.eu \
    --cc=Filip.Bozuta@rt-rk.com \
    --cc=qemu-devel@nongnu.org \
    --cc=riku.voipio@iki.fi \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.