Subject: Re: xosview and machine/cpu.h problems
To: Bill Studenmund <wrstuden@loki.stanford.edu>
From: Armen Babikyan <synapse@lethargy.mit.edu>
List: port-mac68k
Date: 12/30/1997 16:37:26
> >   I received notice recently (PR#4731, by Steve Allen) that
> > xosview-1.5.1 will not compile on macs, due to want_resched and
> > astpending being multiply defined.  After a bit of digging,
> > it appears that including /usr/include/sys/sysctl.h in a C file
> > will pull in /usr/include/machine/pmap.h, which on mac68k pulls
> > in /usr/include/machine/cpu.h, which contains the following:
> > 
> > int     astpending;     /* need to trap before returning to user mode */
> > int     want_resched;   /* resched() was called */
> > 
> >   Two different files (memmeter.cc and pagemeter.cc) in the
> > xosview-1.5.1 NetBSD tree pull in /usr/include/sys/sysctl.h, so
> > at link time, the linker sees multiple astpendings and want_rescheds.
> 
> Are you sure the error's "multiply defined variables?" I ask as
> a lot of files in the kernel include machine/cpu.h, and they
> don't get errors.

when i tried compiling xosview yesterday, i got errors right at the end
that looked something to the effect of "multiply defined".

> It's my understanding that such a reference in a file just adds a
> reference to the variable, and saying something like astpending=1; in
> the body of the code would actually allocate the storage. So I
> think the messages should be "<symbol> referenced from text" or 
> something like that.
> 
> >   I have no idea what I'm talking about, but should those be
> > declared differently?  Under i386 and alpha, the declarations of
> > want_resched etc. are protected by #ifdef _KERNEL (in a
> > roundabout way under i386).  Should the mac version have similar
> > protections?  What about the other ports?  (I didn't check all of
> > them.)
> 
> Probably. The program doesn't actually use these variables, does
> it?
> 
> Take care,
> 
> Bill
>