mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: npunmia@hss.hns.com
To: linux-kernel@vger.kernel.org
Subject: Re: RTC !
Date: Sat, 21 Apr 2001 16:19:08 +0530	[thread overview]
Message-ID: <65256A35.003A691A.00@sandesh.hss.hns.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 3487 bytes --]



Can someone help me with this !!!

With Regards,
--Niraj



Niraj Punmia
04/21/2001 03:42 PM

To:   Jesper Juhl <juhl@eisenstein.dk>
cc:

Subject:  Re: RTC !  (Document link not converted)

The version of gcc , i am using is also egcs-2.91.66 !! How come i am getting
this problem???



Jesper Juhl <juhl@eisenstein.dk> on 04/20/2001 07:34:47 PM

To:   Niraj Punmia/HSS@HSS
cc:

Subject:  Re: RTC !




npunmia@hss.hns.com wrote:

> I am using Linux 2.2.18 with KURT patch installed! I don't know which gcc/
egcs
> i am using ? How do we check it?

gcc --version

/Jesper Juhl




---------------------- Forwarded by Niraj Punmia/HSS on 04/21/2001 04:10 PM
---------------------------


Niraj Punmia
04/20/2001 05:29 PM

To:   Jesper Juhl <juhl@eisenstein.dk>
cc:

Subject:  Re: RTC !  (Document link not converted)

I am using Linux 2.2.18 with KURT patch installed! I don't know which gcc/ egcs
i am using ? How do we check it?

--Regards,
--Niraj



Jesper Juhl <juhl@eisenstein.dk> on 04/20/2001 06:08:57 PM

To:   Niraj Punmia/HSS@HSS
cc:   linux-kernel@vger.kernel.org

Subject:  Re: RTC !




npunmia@hss.hns.com wrote:

> Hi,
>
> When i compiled the following program , (taken from
> /usr/src/linux/Documentation/rtc.txt )
>
> (See attached file: rtc2.c)
>
> it gave me the following error:
>
> [root@msatuts1 timer1]#  gcc -s -Wall -Wstrict-prototypes rtc2.c -o rtc2
> In file included from rtc2.c:17:
> /usr/include/linux/mc146818rtc.h:29: parse error before `rtc_lock'
> /usr/include/linux/mc146818rtc.h:29: warning: data definition has no type or
> storage class
> rtc2.c:25: warning: return type of `main' is not `int'
> [root@msatuts1 timer1]#
>
>  Is this a bug?Can anyone tell me how to remove this parse error ?

It works fine for me using a 2.2.16 kernel and egcs-2.91.66 (see below)...


bash-2.04$ gcc -s -Wall -Wstrict-prototypes rtc2.c -o rtc2
rtc2.c:24: warning: return type of `main' is not `int'
bash-2.04$ ./rtc2

                        RTC Driver Test Example.

Counting 5 update (1/sec) interrupts from reading /dev/rtc: 1 2 3 4 5
Again, from using select(2) on /dev/rtc: 1 2 3 4 5

Current RTC date/time is 20-4-2001, 12:34:01.
Alarm time now set to 12:34:06.
Waiting 5 seconds for alarm... okay. Alarm rang.

Periodic IRQ rate was 1024Hz.
Counting 20 interrupts at:
2Hz:     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
4Hz:     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
8Hz:     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
16Hz:    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
32Hz:    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
64Hz:    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

                         *** Test complete ***

Typing "cat /proc/interrupts" will show 131 more events on IRQ 8.

bash-2.04$


Regards,
Jesper Juhl
juhl@eisenstein.dk



To:   linux-kernel@vger.kernel.org
cc:

Subject:  RTC !


Hi,

When i compiled the following program , (taken from
/usr/src/linux/Documentation/rtc.txt )


(See attached file: rtc2.c)

it gave me the following error:

[root@msatuts1 timer1]#  gcc -s -Wall -Wstrict-prototypes rtc2.c -o rtc2
In file included from rtc2.c:17:
/usr/include/linux/mc146818rtc.h:29: parse error before `rtc_lock'
/usr/include/linux/mc146818rtc.h:29: warning: data definition has no type or
storage class
rtc2.c:25: warning: return type of `main' is not `int'
[root@msatuts1 timer1]#

 Is this a bug?Can anyone tell me how to remove this parse error ?

With Regards,
--Niraj





[-- Attachment #2: rtc2.c --]
[-- Type: application/octet-stream, Size: 4752 bytes --]


/*
 *	Real Time Clock Driver Test/Example Program
 *
 *	Compile with:
 *		gcc -s -Wall -Wstrict-prototypes rtctest.c -o rtctest
 *
 *	Copyright (C) 1996, Paul Gortmaker.
 *
 *	Released under the GNU General Public License, version 2,
 *	included herein by reference.
 *
 */

#include <stdio.h>
#include <linux/mc146818rtc.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>

void main(void) {

int i, fd, retval, irqcount = 0;
unsigned long tmp, data;
struct rtc_time rtc_tm;

fd = open ("/dev/rtc", O_RDONLY);

if (fd ==  -1) {
	perror("/dev/rtc");
	exit(errno);
}

fprintf(stderr, "\n\t\t\tRTC Driver Test Example.\n\n");

/* Turn on update interrupts (one per second) */
retval = ioctl(fd, RTC_UIE_ON, 0);
if (retval == -1) {
	perror("ioctl");
	exit(errno);
}

fprintf(stderr, "Counting 5 update (1/sec) interrupts from reading /dev/rtc:");
fflush(stderr);
for (i=1; i<6; i++) {
	/* This read will block */
	retval = read(fd, &data, sizeof(unsigned long));
	if (retval == -1) {
		perror("read");
		exit(errno);
	}
	fprintf(stderr, " %d",i);
	fflush(stderr);
	irqcount++;
}

fprintf(stderr, "\nAgain, from using select(2) on /dev/rtc:");
fflush(stderr);
for (i=1; i<6; i++) {
	struct timeval tv = {5, 0};	/* 5 second timeout on select */
	fd_set readfds;

	FD_ZERO(&readfds);
	FD_SET(fd, &readfds);
	/* The select will wait until an RTC interrupt happens. */
	retval = select(fd+1, &readfds, NULL, NULL, &tv);
	if (retval == -1) {
		perror("select");
		exit(errno);
	}
	/* This read won't block unlike the select-less case above. */
	retval = read(fd, &data, sizeof(unsigned long));
	if (retval == -1) {
		perror("read");
		exit(errno);
	}
	fprintf(stderr, " %d",i);
	fflush(stderr);
	irqcount++;
}

/* Turn off update interrupts */
retval = ioctl(fd, RTC_UIE_OFF, 0);
if (retval == -1) {
	perror("ioctl");
	exit(errno);
}

/* Read the RTC time/date */
retval = ioctl(fd, RTC_RD_TIME, &rtc_tm);
if (retval == -1) {
	perror("ioctl");
	exit(errno);
}

fprintf(stderr, "\n\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);

/* Set the alarm to 5 sec in the future, and check for rollover */
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;

retval = ioctl(fd, RTC_ALM_SET, &rtc_tm);
if (retval == -1) {
	perror("ioctl");
	exit(errno);
}

/* Read the current alarm settings */
retval = ioctl(fd, RTC_ALM_READ, &rtc_tm);
if (retval == -1) {
	perror("ioctl");
	exit(errno);
}

fprintf(stderr, "Alarm time now set to %02d:%02d:%02d.\n",
	rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);

/* Enable alarm interrupts */
retval = ioctl(fd, RTC_AIE_ON, 0);
if (retval == -1) {
	perror("ioctl");
	exit(errno);
}

fprintf(stderr, "Waiting 5 seconds for alarm...");
fflush(stderr);
/* This blocks until the alarm ring causes an interrupt */
retval = read(fd, &data, sizeof(unsigned long));
if (retval == -1) {
	perror("read");
	exit(errno);
}
irqcount++;
fprintf(stderr, " okay. Alarm rang.\n");

/* Disable alarm interrupts */
retval = ioctl(fd, RTC_AIE_OFF, 0);
if (retval == -1) {
	perror("ioctl");
	exit(errno);
}

/* Read periodic IRQ rate */
retval = ioctl(fd, RTC_IRQP_READ, &tmp);
if (retval == -1) {
	perror("ioctl");
	exit(errno);
}
fprintf(stderr, "\nPeriodic IRQ rate was %ldHz.\n", tmp);

fprintf(stderr, "Counting 20 interrupts at:");
fflush(stderr);

/* The frequencies 128Hz, 256Hz, ... 8192Hz are only allowed for root. */
for (tmp=2; tmp<=64; tmp*=2) {

	retval = ioctl(fd, RTC_IRQP_SET, tmp);
	if (retval == -1) {
		perror("ioctl");
		exit(errno);
	}

	fprintf(stderr, "\n%ldHz:\t", tmp);
	fflush(stderr);

	/* Enable periodic interrupts */
	retval = ioctl(fd, RTC_PIE_ON, 0);
	if (retval == -1) {
		perror("ioctl");
		exit(errno);
	}

	for (i=1; i<21; i++) {
		/* This blocks */
		retval = read(fd, &data, sizeof(unsigned long));
		if (retval == -1) {
			perror("read");
			exit(errno);
		}
		fprintf(stderr, " %d",i);
		fflush(stderr);
		irqcount++;
	}

	/* Disable periodic interrupts */
	retval = ioctl(fd, RTC_PIE_OFF, 0);
	if (retval == -1) {
		perror("ioctl");
		exit(errno);
	}
}

fprintf(stderr, "\n\n\t\t\t *** Test complete ***\n");
fprintf(stderr, "\nTyping \"cat /proc/interrupts\" will show %d more events on IRQ 8.\n\n",
								 irqcount);

close(fd);

} /* end main */

             reply	other threads:[~2001-04-21 10:52 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-04-21 10:49 npunmia [this message]
  -- strict thread matches above, loose matches on Subject: below --
2001-04-20 11:18 npunmia
2001-04-20 12:38 ` Jesper Juhl
2001-04-12 13:05 RTC !! Remko van der Vossen
2001-04-12 12:33 Remko van der Vossen
2001-04-12  9:20 npunmia
2001-04-12 21:39 ` David Woodhouse

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=65256A35.003A691A.00@sandesh.hss.hns.com \
    --to=npunmia@hss.hns.com \
    --cc=linux-kernel@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®