[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 12/17] linux-user: Add support for enabling/disabling RTC features
From: |
Laurent Vivier |
Subject: |
[PULL 12/17] linux-user: Add support for enabling/disabling RTC features using ioctls |
Date: |
Thu, 23 Jan 2020 09:22:22 +0100 |
From: Filip Bozuta <address@hidden>
This patch implements functionalities of following ioctls:
RTC_AIE_ON, RTC_AIE_OFF - Alarm interrupt enabling on/off
Enable or disable the alarm interrupt, for RTCs that support
alarms. The third ioctl's argument is ignored.
RTC_UIE_ON, RTC_UIE_OFF - Update interrupt enabling on/off
Enable or disable the interrupt on every clock update, for
RTCs that support this once-per-second interrupt. The third
ioctl's argument is ignored.
RTC_PIE_ON, RTC_PIE_OFF - Periodic interrupt enabling on/off
Enable or disable the periodic interrupt, for RTCs that sup‐
port these periodic interrupts. The third ioctl's argument
is ignored. Only a privileged process (i.e., one having the
CAP_SYS_RESOURCE capability) can enable the periodic interrupt
if the frequency is currently set above the value specified in
/proc/sys/dev/rtc/max-user-freq.
RTC_WIE_ON, RTC_WIE_OFF - Watchdog interrupt enabling on/off
Enable or disable the Watchdog interrupt, for RTCs that sup-
port this Watchdog interrupt. The third ioctl's argument is
ignored.
Implementation notes:
Since all of involved ioctls have NULL as their third argument,
their implementation was 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.
Reviewed-by: Laurent Vivier <address@hidden>
Signed-off-by: Filip Bozuta <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Laurent Vivier <address@hidden>
---
linux-user/ioctls.h | 9 +++++++++
linux-user/syscall.c | 1 +
linux-user/syscall_defs.h | 10 ++++++++++
3 files changed, 20 insertions(+)
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
index 23f6d3feb5db..55ad47186dc0 100644
--- a/linux-user/ioctls.h
+++ b/linux-user/ioctls.h
@@ -69,6 +69,15 @@
IOCTL(KDSETLED, 0, TYPE_INT)
IOCTL_SPECIAL(KDSIGACCEPT, 0, do_ioctl_kdsigaccept, TYPE_INT)
+ IOCTL(RTC_AIE_ON, 0, TYPE_NULL)
+ IOCTL(RTC_AIE_OFF, 0, TYPE_NULL)
+ IOCTL(RTC_UIE_ON, 0, TYPE_NULL)
+ IOCTL(RTC_UIE_OFF, 0, TYPE_NULL)
+ IOCTL(RTC_PIE_ON, 0, TYPE_NULL)
+ IOCTL(RTC_PIE_OFF, 0, TYPE_NULL)
+ IOCTL(RTC_WIE_ON, 0, TYPE_NULL)
+ IOCTL(RTC_WIE_OFF, 0, TYPE_NULL)
+
IOCTL(BLKROSET, IOC_W, MK_PTR(TYPE_INT))
IOCTL(BLKROGET, IOC_R, MK_PTR(TYPE_INT))
IOCTL(BLKRRPART, 0, TYPE_NULL)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index bd2436b31007..d60142f0691c 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -110,6 +110,7 @@
#include <netpacket/packet.h>
#include <linux/netlink.h>
#include <linux/if_alg.h>
+#include <linux/rtc.h>
#include "linux_loop.h"
#include "uname.h"
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index fb8318d12185..fc3d79ab9762 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -763,6 +763,16 @@ struct target_pollfd {
#define TARGET_KDSETLED 0x4B32 /* set led state [lights, not flags] */
#define TARGET_KDSIGACCEPT 0x4B4E
+/* real time clock ioctls */
+#define TARGET_RTC_AIE_ON TARGET_IO('p', 0x01)
+#define TARGET_RTC_AIE_OFF TARGET_IO('p', 0x02)
+#define TARGET_RTC_UIE_ON TARGET_IO('p', 0x03)
+#define TARGET_RTC_UIE_OFF TARGET_IO('p', 0x04)
+#define TARGET_RTC_PIE_ON TARGET_IO('p', 0x05)
+#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)
+
#if defined(TARGET_ALPHA) || defined(TARGET_MIPS) || defined(TARGET_SH4) ||
\
defined(TARGET_XTENSA)
#define TARGET_FIOGETOWN TARGET_IOR('f', 123, int)
--
2.24.1
- [PULL 09/17] linux-user: Add support for KCOV_<ENABLE|DISABLE> ioctls, (continued)
- [PULL 09/17] linux-user: Add support for KCOV_<ENABLE|DISABLE> ioctls, Laurent Vivier, 2020/01/23
- [PULL 10/17] linux-user: Add support for KCOV_INIT_TRACE ioctl, Laurent Vivier, 2020/01/23
- [PULL 06/17] linux-user: Add support for FD<SETEMSGTRESH|SETMAXERRS|GETMAXERRS> ioctls, Laurent Vivier, 2020/01/23
- [PULL 07/17] linux-user: Add support for FDFMT<BEG|TRK|END> ioctls, Laurent Vivier, 2020/01/23
- [PULL 03/17] linux-user: Add support for FS_IOC_<GET|SET>VERSION ioctls, Laurent Vivier, 2020/01/23
- [PULL 02/17] linux-user: Reserve space for brk, Laurent Vivier, 2020/01/23
- [PULL 14/17] linux-user: Add support for getting/setting RTC periodic interrupt and epoch using ioctls, Laurent Vivier, 2020/01/23
- [PULL 17/17] linux-user: Add support for read/clear RTC voltage low detector using ioctls, Laurent Vivier, 2020/01/23
- [PULL 11/17] linux-user: Add support for TYPE_LONG and TYPE_ULONG in do_ioctl(), Laurent Vivier, 2020/01/23
- [PULL 15/17] linux-user: Add support for getting/setting RTC wakeup alarm using ioctls, Laurent Vivier, 2020/01/23
- [PULL 12/17] linux-user: Add support for enabling/disabling RTC features using ioctls,
Laurent Vivier <=
- [PULL 16/17] linux-user: Add support for getting/setting RTC PLL correction using ioctls, Laurent Vivier, 2020/01/23
- [PULL 13/17] linux-user: Add support for getting/setting RTC time and alarm using ioctls, Laurent Vivier, 2020/01/23
- Re: [PULL 00/17] Linux user for 5.0 patches, Peter Maydell, 2020/01/23