[v2,for,5.0,0/6] linux-user: Add support for real time clock ioctls
mbox series

Message ID 1573744422-9974-1-git-send-email-Filip.Bozuta@rt-rk.com
Headers show
Series
  • linux-user: Add support for real time clock ioctls
Related show

Message

Filip Bozuta Nov. 14, 2019, 3:13 p.m. UTC
Add ioctls for all RTC features that are currently supported in linux kernel.

This series covers following iocts:

    * RTC_AIE_ON
    * RTC_AIE_OFF
    * RTC_UIE_ON
    * RTC_UIE_OFF
    * RTC_PIE_ON
    * RTC_PIE_OFF
    * RTC_WIE_ON
    * RTC_WIE_OFF
    * RTC_ALM_SET
    * RTC_ALM_READ
    * RTC_RD_TIME
    * RTC_SET_TIME
    * RTC_IRQP_READ
    * RTC_IRQP_SET
    * RTC_EPOCH_READ
    * RTC_EPOCH_SET
    * RTC_WKALM_SET
    * RTC_WKALM_RD
    * RTC_PLL_GET
    * RTC_PLL_SET
    * RTC_VL_READ
    * RTC_VL_CLR

The functionalities of individual ioctls were described in this series
patch commit messages.

Testing method:

    Mini test programs were written for each ioctl. Those programs were
    compiled (sometimes using cross-compilers) for the following 
    architectures:

        * Intel 64-bit (little endian)
        * Power pc 32-bit (big endian)
        * Power pc 64-bit (big endian)

    The corresponding native programs were executed without using 
    QEMU on following hosts:

        * Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz
        *.7447A, (ppc32 host)

    All applicable compiled programs were in turn executed through QEMU
    and the results obtained were the same ones gotten for native
    execution.

Example of a test program:

    For ioctl RTC_RD_TIME we have used the following test program:

    #include <stdio.h>
    #include <stdlib.h>
    #include <linux/rtc.h>
    #include <fcntl.h>
    #include <linux/input.h>
    #include <sys/types.h>
    #include <unistd.h>

    #define ERROR -1

    int main()
    {

        int fd = open("/dev/rtc", O_RDWR | O_NONBLOCK);

        if(fd == ERROR)
        {
            perror("open");
            return -1;
        }

        struct rtc_time cur_time;

        if(ioctl(fd, RTC_RD_TIME, &cur_time) < 0)
        {
            perror("ioctl");
            return -1;
        }

        printf("Second: %d, Minute: %d, Hour: %d, Day: %d, Month: %d, Year: %d,",
            cur_time.tm_sec, cur_time.tm_min, cur_time.tm_hour, 
            cur_time.tm_mday, cur_time.tm_mon, cur_time.tm_year);

        return 0;
    }



Filip Bozuta (6):
  linux-user: Add support for enable/disable RTC features using ioctls
  linux-user: Add support for read/set RTC time and alarm using ioctls
  linux-user: Add support for read/set RTC periodic interrupt and epoch
    using ioctls
  linux-user: Add support for get/set RTC wakeup alarm using ioctls
  linux-user: Add support for get/set RTC PLL correction using ioctls
  linux-user: Add support for read/clear RTC voltage low detector using
    ioctls

 linux-user/ioctls.h        | 23 +++++++++++++++++++++++
 linux-user/syscall.c       |  1 +
 linux-user/syscall_defs.h  | 36 ++++++++++++++++++++++++++++++++++++
 linux-user/syscall_types.h | 25 +++++++++++++++++++++++++
 4 files changed, 85 insertions(+)