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
ltp_rtc.patch
Description: Binary data
------------------------------------------------------------------------------ Download Intel® 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
