Devicetree
 help / color / mirror / Atom feed
From: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
To: David Gibson <david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org>
Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
	John Bonesio <bones-RkXMcIGFT/TR7s880joybQ@public.gmane.org>
Subject: Re: Proposal: new device-tree syntax and semantics for extending information from included dts files
Date: Wed, 13 Oct 2010 22:54:13 -0600	[thread overview]
Message-ID: <20101014045413.GK15286@angua.secretlab.ca> (raw)
In-Reply-To: <20101014034821.GH4456@yookeroo>

On Thu, Oct 14, 2010 at 02:48:21PM +1100, David Gibson wrote:
> On Wed, Oct 13, 2010 at 07:40:36PM -0600, Grant Likely wrote:
> > &some-node {
> > 	node-to-remove /remove/;
> > 
> > 	node-to-replace /remove/;
> > 	node-to-replace { prop = "blah"; };
> > };
> > 
> > I don't like this one because it implies ordering between the first
> > and second 'node-to-replace' definitions, and to this point the syntax
> > has not imposed any order assumptions.
> 
> Hrm.  Well, more precisely I was thinking of:
> 
> &{/some/node} /remove/;
> 
> &{/some/node} {
> 	new-contents;
> };
> 
> Since I thought the original proposal was that these node /replace/,
> /extend/ whatnot were only valid at the top level (for the reasons
> we've discussed on previous occasions).

Hmmm, I thought we had figured out how to solve those issues by using
a flag to indicate that a node or property "masks out" the same node
or property in a preceding top-level tree.

> We do already have ordering
> amongst the top level items, since the last one wins.

Right, but the ordering has been explicitly restricted to the top
level trees using the "stack of overlays" conceptual model.

> Now, if using
> labels rather than full paths it does get a bit curlier on the
> implementation side.  But I don't think it would be that hard to make
> labels stick around attached to a path, even when the path itself is
> removed.

Ah right, the issue here was that a previous tree could be holding a
label reference that gets deleted in an overlay.  And there are
questions about what happens if a label is removed and then the same
label attached to a new node, specifically because labels aren't
resolved until after the trees are fully parsed.  (let me know if I'm
remembering incorrectly).  I think this is solvable though, but we're
going to need to define the semantics.

I need to review the details though.  I can't remember all the ways
that the code handles label resolution.

> 
> > Perhaps this:
> > 
> > &some-node {
> > 	node-to-remove /remove/;
> > 	node-to-replace /remove/ { prop = "blah"; };
> > };
> > 
> > Here the keyword essentially becomes a flag to drop the previous
> > definition of the node with the option to also provide a replacement
> > defintion.  I like this better, and the (lack of) ordering assumptions
> > are preserved.
> 
> Urg.  I think that is confusing for much the same reasons John Bonesio
> states in his later mail.  But, I can see a case for:
> 
> 	node-to-replace /replace/ { prop = "blah"; };
> 
> and allowing removal with:
> 
> 	node-to-replace /replace/ /undefined/;
> 
> So instead of substituting "remove+extend" for replace, we substitute
> "replace with nothing" for remove.  Either way we remove one syntactic
> element.  Have to think more about which I prefer.

Hmmm, this has possibilities.

> > Or perhaps with the keyword preceding:
> > 
> > &some-node {
> > 	/remove-prop/ property-to-remove;
> > 	property-to-replace = "new value";
> > 	property-to-replace-with-empty-prop;
> > 
> > 	/remove-node/ node-to-remove;
> > 	/remove-node/ node-to-replace { prop = "blah"; };
> > };
> 
> 
> I prefer this last example to the two previous ones.

Combining your last suggestion with this would give:

&some-node {
	/remove-prop/ property-to-remove;
	property-to-replace = "new value";
	property-to-replace-with-empty-prop;

	/replace-node/ node-to-remove /undefined/;
	/replace-node/ node-to-replace { prop = "blah"; };
};

I'm not sure.  It feels a little muddy.  It's late though.  I'm going
to go sleep on it, and take a fresh look in the morning.

> 
> > And the following construct would be forbidden:
> > 
> > 	/remove-prop/ property-to-remove = "new value;
> > 
> > 
> > Also, /remove-node/ feels awkward when working with replacing a node.
> > Would /clear-node/ or /trim-node/ be better?  '/replace-node/'
> 
> /clear-node/ suggests to me that it would leave the node in place,
> just removing subnodes and properties.  /trim-node/ might work.
> 
> > wouldn't be very because it doesn't make sense in the removal case,
> > and /delete-node/ has the same problem as /remove-node/.
> > /undefine-node/ as you suggested has possibilities too.  Anyone have
> > other suggestions for intuitive keyword names?
> 
> Well.. the "try not to surprise C programmers" rule of thumb has
> served us well so far for dtc, so /undef-node/ has some merit.  In
> principle I'd kind of like to use just preceding /undef/ for both, but
> that will cause some parsing problems.

Good point.  And yes, using the same for both it tricky.

> > > Directly allowing a label+relative path could be useful enough to
> > > reduce verbosity, but it will require careful thinking about the
> > > syntax.
> > 
> > Yes, (as discussed previously) this is just syntactic sugar.  The
> > syntax already supports the functionality, but it would be nice to be
> > less verbose.
> 
> Right, but I think that can wait until after we've decided and
> implemented on the core functionality.

Yes.

  reply	other threads:[~2010-10-14  4:54 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1286920561.4535.1315.camel@riker>
2010-10-13 23:17 ` Proposal: new device-tree syntax and semantics for extending information from included dts files Grant Likely
     [not found]   ` <20101013231747.GD15286-MrY2KI0G/OVr83L8+7iqerDks+cytr/Z@public.gmane.org>
2010-10-13 23:41     ` Proposal: new device-tree syntax and semantics for extendinginformation " Stephen Neuendorffer
     [not found]       ` <d223e561-ed6e-44c2-8a99-8959e85ae022-+Ck8Kgl/v0/nHLUNXTEFU7jjLBE8jN/0@public.gmane.org>
2010-10-14  0:45         ` David Gibson
2010-10-14  1:46           ` Grant Likely
     [not found]             ` <20101014014657.GF15286-MrY2KI0G/OVr83L8+7iqerDks+cytr/Z@public.gmane.org>
2010-10-14  3:31               ` David Gibson
2010-10-14 16:38           ` Stephen Neuendorffer
     [not found]             ` <21eeaef0-fc78-47c9-b1c5-bfefaa55fb85-RaUQJvECHis6W+Ha+8ZLibjjLBE8jN/0@public.gmane.org>
2010-10-15 15:18               ` Grant Likely
     [not found]                 ` <20101015151840.GB32705-MrY2KI0G/OVr83L8+7iqerDks+cytr/Z@public.gmane.org>
2010-10-15 16:10                   ` Stephen Neuendorffer
     [not found]                     ` <b04d95cc-c35b-4597-8fbe-f7c48f23ef92-+Ck8Kgl/v09DUMyIFHz4objjLBE8jN/0@public.gmane.org>
2010-10-15 19:32                       ` Grant Likely
     [not found]                         ` <AANLkTinPWv94Xoz+mDxiE=KujQYAyQj9PsPWHEORypJ3-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-10-15 19:48                           ` Stephen Neuendorffer
     [not found]                             ` <eba820f8-3e4f-4d57-9024-39cc562a99eb-+Ck8Kgl/v0/0H8R8xLlBI7jjLBE8jN/0@public.gmane.org>
2010-10-15 19:56                               ` Grant Likely
     [not found]                                 ` <AANLkTikWfMXEbdwFY6FNoMwuD6fC74Kohtr3QRJqSrM0-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-10-15 19:59                                   ` Stephen Neuendorffer
     [not found]                                     ` <ed27a45d-3607-41e3-831f-1d7e3dd44379-RaUQJvECHis6W+Ha+8ZLibjjLBE8jN/0@public.gmane.org>
2010-10-15 20:11                                       ` Grant Likely
     [not found]                                         ` <AANLkTikzyDFiQZzPmeos6pf_DS33RvkfER+Mz0jceSJy-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-10-15 20:20                                           ` Stephen Neuendorffer
     [not found]                                             ` <4da0557a-d204-4e38-8a82-b0996a9a5af1-RaUQJvECHitCYczPSvLbDrjjLBE8jN/0@public.gmane.org>
2010-10-15 23:58                                               ` Grant Likely
     [not found]                                                 ` <AANLkTinzf3vhs_OUUeiVYOFbOPLFHA+dei810H2gyDGS-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-10-16  7:10                                                   ` David Gibson
2010-10-15 20:35                                           ` John Bonesio
2010-10-15 21:25                                             ` John Bonesio
2010-10-15 23:51                                             ` Grant Likely
2010-10-16  7:05                       ` David Gibson
2010-10-14  0:38     ` Proposal: new device-tree syntax and semantics for extending information " David Gibson
2010-10-14  1:40       ` Grant Likely
     [not found]         ` <20101014014036.GE15286-MrY2KI0G/OVr83L8+7iqerDks+cytr/Z@public.gmane.org>
2010-10-14  1:49           ` Grant Likely
2010-10-14  3:08           ` John Bonesio
2010-10-14  3:37             ` Grant Likely
2010-10-14  4:00             ` David Gibson
2010-10-14  3:48           ` David Gibson
2010-10-14  4:54             ` Grant Likely [this message]
     [not found]               ` <20101014045413.GK15286-MrY2KI0G/OVr83L8+7iqerDks+cytr/Z@public.gmane.org>
2010-10-16  7:02                 ` David Gibson
2010-10-16 18:57                   ` Grant Likely
     [not found]                     ` <AANLkTi=QaV5KvhFzyci2yykmsV9+Zz71vmoRrrFDGvK--JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-10-16 19:50                       ` John Bonesio
2010-10-17  6:17                         ` Grant Likely
2010-10-19  2:48                       ` David Gibson

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=20101014045413.GK15286@angua.secretlab.ca \
    --to=grant.likely-s3s/wqlpoipyb63q8fvjnq@public.gmane.org \
    --cc=bones-RkXMcIGFT/TR7s880joybQ@public.gmane.org \
    --cc=david-xT8FGy+AXnRB3Ne2BGzF6laj5H9X9Tb+@public.gmane.org \
    --cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.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