Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 05 Feb 2002 14:42:38 -0800
From:      Bakul Shah <bakul@bitblocks.com>
To:        Poul-Henning Kamp <phk@critter.freebsd.dk>
Cc:        John Polstra <jdp@polstra.com>, hackers@freebsd.org
Subject:   Re: A question about timecounters 
Message-ID:  <200202052242.RAA05212@renown.cnchost.com>
In-Reply-To: Your message of "Tue, 05 Feb 2002 20:52:11 %2B0100." <92661.1012938731@critter.freebsd.dk> 

next in thread | previous in thread | raw e-mail | index | archive | help
> Btw, regarding the volatile thing:
> 
> If I do
> 	extern volatile struct timecounter *timecounter;
> 
> 	microtime()
> 	{
> 		struct timecounter *tc;
> 
> 		tc = timecounter;
> 
> The compiler complains about loosing the volatile thing.
> 
> How do I tell it that it is the contents of the "timecounter" pointer which
> is volatile, but now what it points at ?  I don't want the "tc" pointer to
> be volatile because it obviously isn't.  Do I really need to cast it ?
> 
> 		tc = (struct timecounter *)timecounter;

[I see that jdp has answered your question but] cdecl is your friend!

$ cdecl
Type `help' or `?' for help
cdecl> explain volatile struct timecounter *timecounter
declare timecounter as pointer to volatile struct timecounter
cdecl> declare timecounter as volatile pointer to struct timecounter
struct timecounter * volatile timecounter

-- bakul

PS: Chances are most people don't have cdecl any more.  You
    can get it like this:

mkdir cdecl;cd cdecl
fetch ftp://gatekeeper.dec.com/pub/usenet/comp.sources.unix/volume14/cdecl2/part0{1,2}.Z
gzcat part01.Z | gunshar
gzcat part02.Z | gunshar
patch <<'EOF'
diff -ru ../cdecl-orig/cdecl.c ./cdecl.c
--- ../cdecl-orig/cdecl.c	Tue Feb  5 14:24:23 2002
+++ ./cdecl.c	Tue Feb  5 12:12:30 2002
@@ -57,6 +57,9 @@
 # include <stddef.h>
 # include <string.h>
 # include <stdarg.h>
+#ifdef BSD
+#include <errno.h>
+#endif
 #else
 # ifndef NOVARARGS
 #  include <varargs.h>
@@ -110,6 +113,9 @@
   void docast(char*, char*, char*, char*);
   void dodexplain(char*, char*, char*, char*);
   void docexplain(char*, char*, char*, char*);
+#ifdef	__FreeBSD__
+#define setprogname _bad_bad_bad_FreeBSD
+#endif
   void setprogname(char *);
   int dotmpfile(int, char**), dofileargs(int, char**);
 #else
diff -ru ../cdecl-orig/makefile ./makefile
--- ../cdecl-orig/makefile	Tue Feb  5 14:24:19 2002
+++ ./makefile	Tue Feb  5 12:10:10 2002
@@ -13,7 +13,7 @@
 # add -Ddodebug		To compile in debugging trace statements.
 # add -Ddoyydebug	To compile in yacc trace statements.
 
-CFLAGS= -g -Ddodebug -Ddoyydebug
+CFLAGS= -g -Ddodebug -Ddoyydebug -DBSD
 CC= cc
 ALLFILES= makefile cdgram.y cdlex.l cdecl.c cdecl.1 testset testset++
 BIN= /usr/lubin
EOF
make
# as root:
make install BIN=/usr/local/bin

No idea if c++decl is valid any more!

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200202052242.RAA05212>