Hi,

Please ignore this mail. I will resend the patch .

Thanks,
Silesh

On Wed, Feb 24, 2010 at 5:30 PM, Silesh C V <[email protected]
> wrote:

> Hi ,
>
> This patch contains tests for the linux RTC driver.The patch is taken
> against feb intermediate release.I have also attached the patch.Please find
> the test log at the end of this mail.Build/Run instructions are explained in
> the README.
>
>
> Signed-off-By: Silesh C V <[email protected]>
> --
> diff -purN ltp-intermediate-20100228.
> orig/testcases/kernel/device-drivers/rtc/Makefile
> ltp-intermediate-20100228/testcases/kernel/device-drivers/rtc/Makefile
> ---
> ltp-intermediate-20100228.orig/testcases/kernel/device-drivers/rtc/Makefile
> 1970-01-01 05:30:00.000000000 +0530
> +++ ltp-intermediate-20100228/testcases/kernel/device-drivers/rtc/Makefile
>      2010-02-24 15:21:33.000000000 +0530
> @@ -0,0 +1,28 @@
> +#
> +#  Copyright (c) Larsen & Toubro Infotech Ltd., 2010
> +#
> +#  This program is free software;  you can redistribute it and/or modify
> +#  it under the terms of the GNU General Public License as published by
> +#  the Free Software Foundation; either version 2 of the License, or
> +#  (at your option) any later version.
> +#
> +#  This program is distributed in the hope that it will be useful,
> +#  but WITHOUT ANY WARRANTY;  without even the implied warranty of
> +#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
> +#  the GNU General Public License for more details.
> +#
> +#  You should have received a copy of the GNU General Public License
> +#  along with this program;  if not, write to the Free Software
> +#  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
>  USA
> +#
> +#
> +
> +CFLAGS = -O2 -Wall
> +SRC = test_rtc.c
> +
> +
> +all: $(SRC)
> +       $(CC) $(CFLAGS) $(SRC) -o rtc-test
> +
> +clean:
> +       rm -f rtc-test
> diff -purN
> ltp-intermediate-20100228.orig/testcases/kernel/device-drivers/rtc/README
> ltp-intermediate-20100228/testcases/kernel/device-drivers/rtc/README
> ---
> ltp-intermediate-20100228.orig/testcases/kernel/device-drivers/rtc/README
> 1970-01-01 05:30:00.000000000 +0530
> +++ ltp-intermediate-20100228/testcases/kernel/device-drivers/rtc/README
>      2010-02-24 14:34:01.000000000 +0530
> @@ -0,0 +1,29 @@
> +test_rtc.c : Test the Real Time Clock driver
> +
> +Tests supported as of now
> +--------------------------
> +1. Read test : This reads the time/date from the RTC
> +   ioctls tested :- RTC_RD_TIME.
> +
> +2. Alarm Test: Sets the alarm to 5 seconds in future and makes sure it
> rings.
> +   ioctls tested :- RTC_ALM_SET, RTC_ALM_READ,  RTC_AIE_ON, RTC_AIE_OFF.
> +
> +3. Update interrupts test : Sets Update interrupts enable on, waits for
> five
> +   interrupts and then turns it off.
> +   ioctls tested :- RTC_UIE_ON, RTC_UIE_OFF.
> +
> +
> +How to Build
> +------------
> +
> +Enter rtc directory and issue a 'make' .
> +
> +How to Run
> +----------
> +
> +       The tests assume the rtc device node to be "/dev/rtc". If you have
> a
> +different node run the test with the name of the node as a parameter.
> +
> +Eg. If your node is /dev/rtc0, then run the test as
> +
> +       $ ./rtc-test /dev/rtc0
> diff -purN
> ltp-intermediate-20100228.orig/testcases/kernel/device-drivers/rtc/test_rtc.c
> ltp-intermediate-20100228/testcases/kernel/device-drivers/rtc/test_rtc.c
> ---
> ltp-intermediate-20100228.orig/testcases/kernel/device-drivers/rtc/test_rtc.c
>       1970-01-01 05:30:00.000000000 +0530
> +++
> ltp-intermediate-20100228/testcases/kernel/device-drivers/rtc/test_rtc.c
>  2010-02-24 15:17:59.000000000 +0530
> @@ -0,0 +1,175 @@
> +/*   test_rtc.c
> + *
> + *   Copyright (c) Larsen & Toubro Infotech Ltd., 2010
> + *
> + *   Contact : Silesh C V <[email protected]>
> + *
> + *   This program is free software;  you can redistribute it and/or modify
> + *   it under the terms of the GNU General Public License as published by
> + *   the Free Software Foundation; either version 2 of the License, or
> + *   (at your option) any later version.
> + *
> + *   This program is distributed in the hope that it will be useful,
> + *   but WITHOUT ANY WARRANTY;  without even the implied warranty of
> + *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
> + *   the GNU General Public License for more details.
> + *
> + *   You should have received a copy of the GNU General Public License
> + *   along with this program;  if not, write to the Free Software
> + *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
> USA
> + *
> + */
> +
> +#include <sys/ioctl.h>
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <fcntl.h>
> +#include <unistd.h>
> +#include <linux/rtc.h>
> +#include <errno.h>
> +
> +int rtc_fd = -1;
> +
> +void read_alarm_test(void)
> +{
> +       struct rtc_time rtc_tm;
> +       int ret;
> +       unsigned long data;
> +
> +       printf("\nRTC READ TEST:\n");
> +
> +        /*Read RTC Time*/
> +        ret = ioctl(rtc_fd, RTC_RD_TIME, &rtc_tm);
> +        if (ret == -1) {
> +                perror("RTC_RD_TIME ioctl");
> +                printf("RTC READ TEST Failed\n");
> +                return;
> +        }
> +
> +        printf("RTC READ TEST Passed");
> +        printf("\nCurrent RTC date/time is %d-%d-%d, %02d:%02d:%02d.\n",
> +                rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900,
> +                rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
> +
> +        printf("\nRTC ALARM TEST :\n");
> +
> +        /*set Alarm to 5 Seconds*/
> +        rtc_tm.tm_sec += 5;
> +        if (rtc_tm.tm_sec >= 60) {
> +                rtc_tm.tm_sec %= 60;
> +                rtc_tm.tm_min++;
> +        }
> +
> +        if (rtc_tm.tm_min == 60) {
> +                rtc_tm.tm_min = 0;
> +                rtc_tm.tm_hour++;
> +        }
> +
> +        if (rtc_tm.tm_hour == 24)
> +                rtc_tm.tm_hour = 0;
> +
> +       ret = ioctl(rtc_fd, RTC_ALM_SET, &rtc_tm);
> +        if (ret == -1) {
> +                perror("RTC_ALM_SET ioctl");
> +                printf("RTC ALARM TEST Failed\n");
> +                return;
> +        }
> +
> +        /*Read current alarm time*/
> +        ret = ioctl(rtc_fd, RTC_ALM_READ, &rtc_tm);
> +        if (ret == -1) {
> +                perror("RTC_ALM_READ ioctl");
> +                printf("RTC ALARM TEST Failed\n");
> +                return;
> +        }
> +
> +        printf("Alarm time set to %02d:%02d:%02d.\n",
> +                rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
> +        /* Enable alarm interrupts */
> +        ret = ioctl(rtc_fd, RTC_AIE_ON, 0);
> +        if (ret == -1) {
> +                perror("RTC_AIE_ON ioctl");
> +                printf("RTC ALARM TEST Failed\n");
> +                return;
> +        }
> +
> +        printf("Waiting 5 seconds for the alarm...\n");
> +        ret = read(rtc_fd, &data, sizeof(unsigned long));
> +        if (ret == -1) {
> +                perror("read");
> +                printf("RTC ALARM TEST Failed\n");
> +                return;
> +        }
> +
> +       printf("Alarm rang.\n");
> +        /* Disable alarm interrupts */
> +        ret = ioctl(rtc_fd, RTC_AIE_OFF, 0);
> +        if (ret == -1) {
> +                perror("RTC_AIE_OFF ioctl");
> +                printf("RTC ALARM TEST Failed\n");
> +                return;
> +        }
> +
> +        printf("RTC ALARM TEST Passed\n");
> +}
> +
> +void update_interrupts_test(void)
> +{
> +       int ret, i;
> +       unsigned long data;
> +
> +       printf("\nRTC UPDATE INTERRUPTS TEST :\n");
> +        /*Turn on update interrupts*/
> +        ret = ioctl(rtc_fd, RTC_UIE_ON, 0);
> +        if (ret == -1) {
> +                perror("RTC_UIE_ON ioctl");
> +                printf("RTC UPDATE INTERRUPTS TEST Failed\n");
> +               return;
> +        }
> +
> +        printf("Waiting for  5 update interrupts...\n");
> +        for (i = 1; i < 6; i++) {
> +                ret = read(rtc_fd, &data, sizeof(unsigned long));
> +                if (ret == -1) {
> +                        perror("read");
> +                        printf("RTC UPDATE INTERRUPTS TEST Failed\n");
> +                        return;
> +                }
> +                printf("Update interrupt %d\n", i);
> +        }
> +
> +         /* Turn off update interrupts */
> +        ret = ioctl(rtc_fd, RTC_UIE_OFF, 0);
> +        if (ret == -1) {
> +                perror("RTC_UIE_OFF ioctl");
> +                printf("RTC UPDATE INTERRUPTS TEST Failed\n");
> +                return;
> +        }
> +        printf("RTC UPDATE INTERRUPTS TEST Passed\n");
> +
> +}
> +
> +int main(int argc, char **argv)
> +{
> +       char *rtc_dev = "/dev/rtc";
> +
> +       if (argc == 2)
> +               rtc_dev = argv[1];
> +
> +       rtc_fd = open(rtc_dev, O_RDONLY);
> +       if (rtc_fd < 0) {
> +               perror(rtc_dev);
> +               exit(errno);
> +       }
> +
> +       /*Read and alarm tests*/
> +       read_alarm_test();
> +
> +       /*Update interrupts test*/
> +       update_interrupts_test();
> +
> +       close(rtc_fd);
> +
> +       printf("\nRTC Tests Done!\n");
> +       return 0;
> +}
> --
>
> test log
> ------------------------------
>
> RTC READ TEST:
> RTC READ TEST Passed
> Current RTC date/time is 24-2-2010, 17:03:05.
>
> RTC ALARM TEST :
> Alarm time set to 17:03:10.
> Waiting 5 seconds for the alarm...
> Alarm rang.
> RTC ALARM TEST Passed
>
> RTC UPDATE INTERRUPTS TEST :
> Waiting for  5 update interrupts...
> Update interrupt 1
> Update interrupt 2
> Update interrupt 3
> Update interrupt 4
> Update interrupt 5
> RTC UPDATE INTERRUPTS TEST Passed
>
> RTC Tests Done!
> ---------------------------------------------------------
>
>
> Thanks .
> Silesh
>
>
>


-- 
Silesh
------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to