Thread (13 messages) flat view 13 messages, 3 authors, 2005-07-19

Re: PATCH: Add memreserve to DTC

From: David Gibson <hidden>
Date: 2005-07-12 02:01:26

On Mon, Jul 11, 2005 at 04:22:30PM -0500, Jon Loeliger wrote:
On Sun, 2005-07-10 at 23:55, David Gibson wrote:
quoted
On Fri, Jul 08, 2005 at 04:44:58PM -0500, Jon Loeliger wrote:
quoted
David and Ben,

This patch adds support for memreserve to the DTC's notion
of the "source file".  That is, you can now say this:
        
        
        memreserve =	<
        		 0000 0001  0000 0002
        		 0000 0003  0000 0004
        		>
quoted
Hrm.. nice idea, but I don't really like the syntax.  It looks like a
property definition, which it's really not,
Well, syntax is relatively easy to change.  I picked one 
that was already present in the grammar and lex code.
I wanted to use something more braces oriented, but it
got gross looking once I decided to use the "struct data"
parts for the cell_t values.
quoted
 and forcing the user to
split up these 64-bit quantities into cells is kind of silly.
Hey, I didn't set that up! :-)  There wasn't an existing
clean way to state 64 bit values, and an arbitrary list of
them.  So I uh, leveraged the existing cell_t support!
Cells make sense for the actual OF-like data, becayse they're an OF
concept.  For memreserve, which is purely Linux specific, they don't/
quoted
  Plus
the fact that "memreserve" is lexed as a reserved word means it can't
be used as a property name.
Yeah, I wasn't happy about that either.  Wasn't sure
what you wanted to do to "fix" that.  Thought it better
to get the code into your hands than try to discuss the
issues via mail.
Yeah... I have some ideas, maybe replacing some of the start
conditions with a lexical tie-in from the parser level.  I'll see what
I can come up with.
quoted
  And it really ought to have a ';' at the
end, for consistency.
Sure.  Easy.

And, I actually anticipated making the "header" parts
of the grammar be more general, of which then the memory
reserve area would be just one part.  For example, suppose
you wanted to specify the "version" too:

    /header/ = {
        version  = 10;
        memreserve = < .... ....  .... .... >;
    };
Perhaps, I don't think there's anything else that we really want to
set for now.  I don't think version should be set in the source file.
Or so.
Actually, I'm having second thoughts on the form I suggested before.
I'm now leaning towards:

	/memreserve/ 00000001-00000002;
	/memreserve/ 00000003-00000004;

	/ {
		...
	};
quoted
Hrm... wonder how to do this, without making the lex and yacc stuff
too unspeakable.

Maybe

/memreserve/ = {  00000001-00000002;
		  00000003-00000004;
	       };

I'm not that fond of the /.../ form, although the '/' is the best way
I can think of to ensure it can't be confused with a property or node
name.  We'lll also need some sort of lexing magic so that it actually
recognizes the things within as numbers, not property names, too.
Hrm... will need to think about that.
Which was sort of the problem I faced... :-)
quoted
quoted
There is minor fiddling with the -R flag that needs to be
resolved at this point.
I think -R should add the given number of extra empty entries, on top
of the ones given in the source.
Except now you have to carry the count along in the header.
How else do you know if the _first_ or _last_ 0-size value
really ends the list?  Well, you could maybe assume ordered
parts an subtract the base offset of the memreserve section
from the following section to get its total size.  Gross, though.

quoted
quoted
Please feel free to adjust my coding approach or argument
passing or whatever as needed.  Hope this helps!
Yeah, there are some things I'd like to change (in addition to the
input syntax itself), but I'm thinking about just applying it and
fixing up afterwards.
That sounds good.
quoted
Biggest thing is that rather than passing the tree itself and the
memreserve info about as two parameters all over the place, I'd rather
create a new structure which has both (and later can have anything
else that might be needed).
If you'd like, I'll do this work.

jdl
-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/people/dgibson
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help