This is the mail archive of the ecos-patches@sourceware.org mailing list for the eCos project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Sat, Oct 22, 2005 at 11:47:55PM -0700, Paul D. DeRocco wrote: > > From: Andrew Lunn > > > > thread.hxx declares the class Cyg_ThreadQueue which has a member > > function empty. > > > > thread.inl contains the implementation of Cyg_ThreadQueue::empty() and > > says it is an inline function. > > > > flag.hxx declares the class Cyg_Flag. It has a member variable queue > > of type Cyg_ThreadQueue. It also declares a member function waiting() > > which is inline and the implementation is given there and then. This > > implementation is !queue.empty(). > > > > It is select.cxx which is giving the problem. At the beginning this does: > > > > #include <cyg/kernel/thread.hxx> // thread definitions > > #include <cyg/kernel/flag.hxx> // flag definitions > > #include <cyg/kernel/clock.hxx> // clock definitions > > > > #include <cyg/kernel/sched.inl> > > #include <cyg/kernel/thread.inl> > > > > So the problem is that in flag.hxx the compiler has seen there is a > > member function queue(), but it has not seems the implementation > > yet. So it generates a function call and adds queue to its symbol > > table as an out of line function. It later gets to see the > > implementation of queue and finds its supposed to be an inline > > function, but it has already generated code which assumes its an out > > of line function, and so it generates the warning and generates code > > for the out of line implementation of queue. > > > > So its looks like flag.hxx needs to include both thread.hxx and > > thread.inl. > > > > Thats my theory anyway. I just need to test it. Tested. Attached is the patch. Andrew
Attachment:
kernel.diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |