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 13/17] linux-user: Add support for getting/setting RTC time and alarm using ioctls
Date: Thu, 23 Jan 2020 09:22:23 +0100	[thread overview]
Message-ID: <20200123082227.2037994-14-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_RD_TIME - Getting RTC time

    Returns this RTC's time in the following structure:

        struct rtc_time {
            int tm_sec;
            int tm_min;
            int tm_hour;
            int tm_mday;
            int tm_mon;
            int tm_year;
            int tm_wday;     /* unused */
            int tm_yday;     /* unused */
            int tm_isdst;    /* unused */
        };

    The fields in this structure have the same meaning and ranges
    as the tm structure described in gmtime man page. A pointer
    to this structure should be passed as the third ioctl's argument.

RTC_SET_TIME - Setting RTC time

    Sets this RTC's time to the time specified by the rtc_time
    structure pointed to by the third ioctl's argument. To set
    the RTC's time the process must be privileged (i.e., have the
    CAP_SYS_TIME capability).

RTC_ALM_READ, RTC_ALM_SET - Getting/Setting alarm time

    Read and set the alarm time, for RTCs that support alarms.
    The alarm interrupt must be separately enabled or disabled
    using the RTC_AIE_ON, RTC_AIE_OFF requests. The third
    ioctl's argument is a pointer to a rtc_time structure. Only
    the tm_sec, tm_min, and tm_hour fields of this structure are
    used.

Implementation notes:

    All ioctls in this patch have pointer to a structure rtc_time
    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 of type 'int', 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-3-git-send-email-Filip.Bozuta@rt-rk.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
---
 linux-user/ioctls.h        |  4 ++++
 linux-user/syscall_defs.h  |  4 ++++
 linux-user/syscall_types.h | 11 +++++++++++
 3 files changed, 19 insertions(+)

diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
index 55ad47186dc0..c39dd0128a60 100644
--- a/linux-user/ioctls.h
+++ b/linux-user/ioctls.h
@@ -77,6 +77,10 @@
      IOCTL(RTC_PIE_OFF, 0, TYPE_NULL)
      IOCTL(RTC_WIE_ON, 0, TYPE_NULL)
      IOCTL(RTC_WIE_OFF, 0, TYPE_NULL)
+     IOCTL(RTC_ALM_READ, IOC_R, MK_PTR(MK_STRUCT(STRUCT_rtc_time)))
+     IOCTL(RTC_ALM_SET, IOC_W, MK_PTR(MK_STRUCT(STRUCT_rtc_time)))
+     IOCTL(RTC_RD_TIME, IOC_R, MK_PTR(MK_STRUCT(STRUCT_rtc_time)))
+     IOCTL(RTC_SET_TIME, IOC_W, MK_PTR(MK_STRUCT(STRUCT_rtc_time)))
 
      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 fc3d79ab9762..dc36dd475112 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -772,6 +772,10 @@ struct target_pollfd {
 #define TARGET_RTC_PIE_OFF          TARGET_IO('p', 0x06)
 #define TARGET_RTC_WIE_ON           TARGET_IO('p', 0x0f)
 #define TARGET_RTC_WIE_OFF          TARGET_IO('p', 0x10)
+#define TARGET_RTC_ALM_READ         TARGET_IOR('p', 0x08, struct rtc_time)
+#define TARGET_RTC_ALM_SET          TARGET_IOW('p', 0x07, struct rtc_time)
+#define TARGET_RTC_RD_TIME          TARGET_IOR('p', 0x09, struct rtc_time)
+#define TARGET_RTC_SET_TIME         TARGET_IOW('p', 0x0a, struct rtc_time)
 
 #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 8ff78a625ace..bddc89a6641b 100644
--- a/linux-user/syscall_types.h
+++ b/linux-user/syscall_types.h
@@ -255,6 +255,17 @@ STRUCT(blkpg_partition,
        MK_ARRAY(TYPE_CHAR, BLKPG_DEVNAMELTH), /* devname */
        MK_ARRAY(TYPE_CHAR, BLKPG_VOLNAMELTH)) /* volname */
 
+STRUCT(rtc_time,
+       TYPE_INT, /* tm_sec */
+       TYPE_INT, /* tm_min */
+       TYPE_INT, /* tm_hour */
+       TYPE_INT, /* tm_mday */
+       TYPE_INT, /* tm_mon */
+       TYPE_INT, /* tm_year */
+       TYPE_INT, /* tm_wday */
+       TYPE_INT, /* tm_yday */
+       TYPE_INT) /* tm_isdst */
+
 STRUCT(blkpg_ioctl_arg,
        TYPE_INT, /* op */
        TYPE_INT, /* flags */
-- 
2.24.1



  parent reply	other threads:[~2020-01-23  8:35 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 ` Laurent Vivier [this message]
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 ` [PULL 15/17] linux-user: Add support for getting/setting RTC wakeup alarm " Laurent Vivier
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-14-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.