From: Grant Likely <grant.likely-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
To: Stephen Neuendorffer
<stephen.neuendorffer-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org>
Cc: Yoder Stuart-B08248
<B08248-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
Jeremy Kerr <jeremy.kerr-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>,
devicetree-discuss-mnsaURCQ41sdnm+yROfE0A@public.gmane.org,
John Williams
<john.williams-g5w7nrANp4BDPfheJLI6IQ@public.gmane.org>,
Wood Scott-B07421
<B07421-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
Subject: Re: [PATCH 8/9 V3] Add documentation for the new DTS language.
Date: Mon, 1 Mar 2010 14:49:17 -0700 [thread overview]
Message-ID: <fa686aa41003011349i367a423cx2c59953e6afc9b75@mail.gmail.com> (raw)
In-Reply-To: <4288fc0b-79a4-42fd-9e77-573dbad79210-RaUQJvECHiuXHCJdrdq+zrjjLBE8jN/0@public.gmane.org>
Hi Stephen, good comments...
On Mon, Mar 1, 2010 at 1:30 PM, Stephen Neuendorffer
<stephen.neuendorffer-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org> wrote:
>> Given the following tree...
>>
>> / {
>> child-label: child {
>> prop = <0xbad>;
>> grandchild-label: grandchild {
>> };
>> };
>> };
>>
>> ...here are the use cases that I see as important (plus some suggested
>> syntax. I'm not happy with it though, and I'm open to better ideas).
>>
>> 1) Deleting a property from a node:
>> &child-label {
>> /* syntax to delete "prop" property */
>> delete-prop("prop");
>> ^prop; /* this isn't very good, hard to differentiate from
>> node deletion */
>> __delete_property = "prop";
>> };
>>
>> 2) Delete a child node:
>> &child-label {
>> /* syntax to delete "grandchild" node */
>> delete-node("grandchild");
>> ^grandchild;
>> __delete_node = "grandchild";
>> grandchild = ^{};
>> };
>>
>> 3) Delete a labelled node from the top level:
>> delete-node(&grandchild-label);
>>
>> Comments? Suggestions? Better ideas? Please? Don't inflict pain on
>> yourself by letting me decide the syntax.
>>
>> g.
>
> One thing I've seen in the past is that there is a sequentialization question in this, which becomes
> more apparent once deletion is allowed.
>
> First off, my assumption is that each node name is always unique in a tree, even when overrides are allowed.
> Otherwise the sub-node and property ordering becomes important.
Yes, multiple sibling nodes with the same name are not allowed by dtc.
I believe multiple siblings of the same name is legal with
OpenFirmware, but that is at least partially because in OpenFirmware
the @<addr> portion isn't necessarily part of the name. (Imagine
having triplets and naming them Sally@1, Sally@2 and Sally@3!)
However, the same name can be used by non-siblings. For example, the
following is totally legal:
/ {
foo {
foo {
};
};
};
> foo {
> bar = 2;
> bar = 3; // Illegal
> } ;
>
>
> foo {
> bar = 2;
> }
> foo {
> bar = 3; // Legal
> };
>
>
> So, essentially, sequentialization of operation is forced by the concatenation of trees.
Yes, you are exactly correct. The model is to fully form 2 trees, and
then overlay the latter on the former.
> Similarly:
>
> foo {
> bar-label: bar = 2;
> }
> &bar-label = 3;
This actually isn't legal, but for an entirely different reason. Even
though labels can be applied to properties, property labels aren't
actually used for anything unless asm output is selected. All tree
modification as of now is done from the context of nodes.
Redefinition can start from the root node, or it can start from a
labelled node, but there is no syntax defined for modifying a labelled
property.
It is possible to add redefinition of labelled properties, but I'd
like to see a use case first, and why it is better than the current
form (similar to the arguments I put forth for node redefinition by
label).
So, if I rework your example to use nodes...
foo {
bar-label: bar {
prop = 2;
};
};
&bar-label {
prop = 3;
};
So, yes, prop in the second tree overrides the prop in the first tree
because it is the same property name in the 'bar' node.
> delete has the similar problem.
>
> foo {
> bar = 2;
> delete(bar); // Should be illegal
> }
>
> foo {
> bar-label: bar = 2;
> }
> delete(&bar-label); // Legal.
> foo {
> bar-label: bar = 4; // Legal, even though previously deleted
> }
reworked to use nodes:
foo {
bar-label: bar {
prop = 2;
delete(bar); // should be illegal
};
};
foo {
bar-label: bar { /* legal, adds label to node */
prop = 3; /* legal, changes prop */
};
};
delete-node(&bar-label}; // legal
foo {
bar-label: bar { /* Legal, even though previously deleted */
prop = 4;
};
};
> So, regardless of the syntax, I think it's important to ensure the above checks and sequentiality.
> There's also a canonicalization question, because you can spit out the original source, or the 'reduction'
> which results in all the overrides and deletions. I think from looking at Grant's patch, this is already
> the way things work, but I don't think anyone had really explicitly stated that.
Hmmm, perhaps nobody has. Yes, each node redefinition is fully
processed before going on to the next one. Think: a stack of
transparencies where each new sheet masks/changed/adds to the one
below it.
> One trick is that the below is problematic, or at least hard to verify statically.
>
> foo {
> delete(&bar-label); // Legal.
This is never legal. If deleting by label, it must be at the top
level. It doesn't make sense to use a label reference inside a node
block, since the node block is already supposed to define where you
are working in the tree.
> delete(bar); // May or may not be Illegal, since don't know what bar-label references
No longer an issue since the previous line is illegal.
Also, must be either delete-node() or delete-prop() since nodes and
properties can use the same names.
> }
>
> So, to syntax: the sequentialization property may be more syntactically obvious if deletion resembles
> setting a property or node like:
>
> ^bar
> !bar
> or even
> bar = !;
> bar !;
That's an interesting point. Perhaps it would be better to use a
syntax that enforces the concept of overlays, and talk about masking
out instead of deleting nodes and properties from the earlier tree.
I kind of like the ^ syntax, but there would have to be syntax
variations for both node and property masking. I'm not sure it's a
good idea to dedicate otherwise valid node name characters to the
purpose of masking.
>
> Which brings up the question 'undeletion question'. Can you do:
>
> d-label: delete(bar);
> delete(&d-label);
Not sure I follow. It certainly isn't be valid to apply a label to a
command like delete().
g.
--
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.
next prev parent reply other threads:[~2010-03-01 21:49 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-26 20:25 [PATCH 0/9 V3] Implement a new DTS Source Language Jon Loeliger
[not found] ` <1222460748-20127-1-git-send-email-jdl-CYoMK+44s/E@public.gmane.org>
2008-09-26 20:25 ` [PATCH 1/9 V3] Remove support for the legacy DTS source file format Jon Loeliger
[not found] ` <1222460748-20127-2-git-send-email-jdl-CYoMK+44s/E@public.gmane.org>
2008-09-26 20:25 ` [PATCH 2/9 V3] Add conditionalized debug() print macro Jon Loeliger
[not found] ` <1222460748-20127-3-git-send-email-jdl-CYoMK+44s/E@public.gmane.org>
2008-09-26 20:25 ` [PATCH 3/9 V3] Enhance source position implementation Jon Loeliger
[not found] ` <1222460748-20127-4-git-send-email-jdl-CYoMK+44s/E@public.gmane.org>
2008-09-26 20:25 ` [PATCH 4/9 V3] Add header files for new Internal Representation form Jon Loeliger
[not found] ` <1222460748-20127-5-git-send-email-jdl-CYoMK+44s/E@public.gmane.org>
2008-09-26 20:25 ` [PATCH 5/9 V3] Add most of the new IR implementation files Jon Loeliger
[not found] ` <1222460748-20127-6-git-send-email-jdl-CYoMK+44s/E@public.gmane.org>
2008-09-26 20:25 ` [PATCH 6/9 V3] Add the main IR evaluation implementation Jon Loeliger
[not found] ` <1222460748-20127-7-git-send-email-jdl-CYoMK+44s/E@public.gmane.org>
2008-09-26 20:25 ` [PATCH 7/9 V3] Introduce new DTS language Jon Loeliger
[not found] ` <1222460748-20127-8-git-send-email-jdl-CYoMK+44s/E@public.gmane.org>
2008-09-26 20:25 ` [PATCH 8/9 V3] Add documentation for the " Jon Loeliger
[not found] ` <1222460748-20127-9-git-send-email-jdl-CYoMK+44s/E@public.gmane.org>
2008-09-26 20:25 ` [PATCH 9/9 V3] Test constant expressions in cell contexts Jon Loeliger
[not found] ` <1222460748-20127-10-git-send-email-jdl-CYoMK+44s/E@public.gmane.org>
2008-09-30 6:04 ` David Gibson
[not found] ` <20080930060418.GD18695-787xzQ0H9iRg7VrjXcPTGA@public.gmane.org>
2008-09-30 15:46 ` Jon Loeliger
2008-09-30 14:55 ` [PATCH 8/9 V3] Add documentation for the new DTS language Grant Likely
[not found] ` <20080930145537.GJ18313-s3s/WqlpOiPyB63q8FvJNQ@public.gmane.org>
2008-10-01 3:46 ` David Gibson
[not found] ` <20081001034656.GF30810-787xzQ0H9iRg7VrjXcPTGA@public.gmane.org>
2008-10-01 4:01 ` Warner Losh
[not found] ` <20080930.220151.41675821.imp-uzTCJ5RojNnQT0dZR+AlfA@public.gmane.org>
2008-10-01 4:22 ` David Gibson
2008-10-01 15:26 ` Scott Wood
[not found] ` <48E396A3.809-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2008-10-01 15:43 ` Warner Losh
[not found] ` <20081001.094306.71131107.imp-uzTCJ5RojNnQT0dZR+AlfA@public.gmane.org>
2008-10-02 1:20 ` David Gibson
2008-10-02 1:18 ` David Gibson
[not found] ` <20081002011800.GI25598-787xzQ0H9iRg7VrjXcPTGA@public.gmane.org>
2008-10-02 15:22 ` Scott Wood
[not found] ` <20081002152242.GB22258-VKaLA/mbEU932VTgPCOETVjVikpgYyvb5NbjCUgZEJk@public.gmane.org>
2008-10-02 16:11 ` David Gibson
[not found] ` <20081002161150.GA14351-787xzQ0H9iRg7VrjXcPTGA@public.gmane.org>
2008-10-02 17:22 ` Scott Wood
[not found] ` <48E5036D.9040509-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2008-10-03 2:24 ` David Gibson
[not found] ` <20081003022424.GG3002-787xzQ0H9iRg7VrjXcPTGA@public.gmane.org>
2008-10-03 15:27 ` Scott Wood
[not found] ` <20081003152700.GA9115-VKaLA/mbEU932VTgPCOETVjVikpgYyvb5NbjCUgZEJk@public.gmane.org>
2008-10-04 4:52 ` David Gibson
2008-10-02 19:50 ` M. Warner Losh
[not found] ` <20081002.135004.1723231860.imp-uzTCJ5RojNnQT0dZR+AlfA@public.gmane.org>
2008-10-02 20:46 ` Jon Loeliger
2008-10-03 0:23 ` David Gibson
2008-10-03 0:23 ` David Gibson
[not found] ` <20081003002337.GB3002-787xzQ0H9iRg7VrjXcPTGA@public.gmane.org>
2008-10-03 1:17 ` M. Warner Losh
[not found] ` <20081002.191705.-108805802.imp-uzTCJ5RojNnQT0dZR+AlfA@public.gmane.org>
2008-10-03 4:38 ` David Gibson
2010-02-20 16:13 ` Grant Likely
[not found] ` <fa686aa41002200813o3fea9a34s198be367ad81b367-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-02-21 6:30 ` John Williams
2010-02-22 1:30 ` David Gibson
2010-02-22 6:26 ` Grant Likely
[not found] ` <fa686aa41002212226i4c83376cn8d88a045dd13fe00-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-02-22 16:13 ` Yoder Stuart-B08248
[not found] ` <9696D7A991D0824DBA8DFAC74A9C5FA305B2021A-ofAVchDyotYzzZk0BCvKg5jmvxFtTJ+o0e7PPNI6Mm0@public.gmane.org>
2010-02-22 21:59 ` Grant Likely
[not found] ` <fa686aa41002221359m4d857e4cn3a1c56c32a24d21d-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-02-22 22:52 ` Scott Wood
2010-02-23 2:04 ` David Gibson
2010-03-01 19:15 ` Grant Likely
[not found] ` <fa686aa41003011115m1bb0b644g5014340f6c312ee9-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-03-01 19:38 ` Scott Wood
2010-03-01 20:30 ` Stephen Neuendorffer
[not found] ` <4B8C2C4C.8070901@freescale <4B8C44C8.6000105@freescale.com>
[not found] ` <4B8C44C8.6000105-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2010-03-01 22:56 ` Stephen Neuendorffer
[not found] ` <7c070166-6cd5-48e4-ab8e-cb062e3dbb00-RaUQJvECHiusiP+nND6G/7jjLBE8jN/0@public.gmane.org>
2010-03-02 1:22 ` David Gibson
2010-03-02 0:10 ` Grant Likely
2010-03-02 1:19 ` David Gibson
2010-03-02 2:10 ` Grant Likely
[not found] ` <fa686aa41003011810w2e7b6278t6aaaf192f8d7c8c1-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-03-02 2:16 ` Grant Likely
[not found] ` <fa686aa41003011816j534bf335o6fafe6f1c4a63436-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-03-02 4:20 ` David Gibson
[not found] ` <fa686aa41002221359m4d857e4cn3a1c56c32a24d21d@mail <4288fc0b-79a4-42fd-9e77-573dbad79210@SG2EHSMHS004.ehs.local>
[not found] ` <4288fc0b-79a4-42fd-9e77-573dbad79210-RaUQJvECHiuXHCJdrdq+zrjjLBE8jN/0@public.gmane.org>
2010-03-01 21:06 ` Scott Wood
[not found] ` <4B8C2C4C.8070901-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2010-03-01 22:03 ` Stephen Neuendorffer
[not found] ` <4d16ecf4-27b2-4c73-a3be-5b2a8ff95820-+Ck8Kgl/v0+J1bAq5m18RLjjLBE8jN/0@public.gmane.org>
2010-03-01 22:25 ` Grant Likely
[not found] ` <fa686aa41003011425i734ee434m95b62d57a271bd1f-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-03-02 1:11 ` David Gibson
2010-03-01 22:18 ` Grant Likely
[not found] ` <fa686aa41003011418x339884c9md61c49948b31a8d1-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-03-01 22:26 ` Stephen Neuendorffer
[not found] ` <1012f9aa-1642-41ab-b8cd-a4ab4a7b269e-+Ck8Kgl/v0989VwWyyPjfbjjLBE8jN/0@public.gmane.org>
2010-03-02 0:03 ` Grant Likely
[not found] ` <fa686aa41003011603w12c0a7f1y88b5fc7a008af1d5-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-03-02 0:13 ` Stephen Neuendorffer
[not found] ` <f9885aa5-5c11-4118-9980-f17378d7cbd5-RaUQJvECHiuXHCJdrdq+zrjjLBE8jN/0@public.gmane.org>
2010-03-02 1:25 ` David Gibson
2010-03-02 2:08 ` Grant Likely
[not found] ` <fa686aa41003011808h586e3dc3x11ef14af9c6e5fb8-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-03-02 17:06 ` Scott Wood
2010-03-01 22:50 ` Scott Wood
2010-03-01 21:49 ` Grant Likely [this message]
[not found] ` <fa686aa41003011349i367a423cx2c59953e6afc9b75-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-03-01 22:15 ` Mitch Bradley
[not found] ` <4B8C3C78.5010206-D5eQfiDGL7eakBO8gow8eQ@public.gmane.org>
2010-03-01 23:33 ` Grant Likely
[not found] ` <fa686aa41003011533x3d2d00abyb8d7cf33344a3bde-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-03-02 3:59 ` David Gibson
2010-03-01 22:17 ` Stephen Neuendorffer
[not found] ` <72f497af-412c-4a05-90c2-5df0be00d93f-+Ck8Kgl/v09CYczPSvLbDrjjLBE8jN/0@public.gmane.org>
2010-03-01 23:42 ` Grant Likely
2010-03-02 23:12 ` David Gibson
2010-03-03 16:18 ` Grant Likely
2010-02-23 1:47 ` David Gibson
2010-02-23 2:17 ` Grant Likely
[not found] ` <fa686aa41002221817s5f15dc4cy5ab873a61de2cb2f-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-02-23 4:10 ` David Gibson
2008-10-02 8:25 ` [PATCH 7/9 V3] Introduce " David Gibson
2008-09-30 6:03 ` [PATCH 4/9 V3] Add header files for new Internal Representation form David Gibson
2008-09-30 6:00 ` [PATCH 3/9 V3] Enhance source position implementation David Gibson
2008-09-30 5:57 ` [PATCH 1/9 V3] Remove support for the legacy DTS source file format David Gibson
[not found] ` <20080930055716.GA18695-787xzQ0H9iRg7VrjXcPTGA@public.gmane.org>
2008-09-30 16:30 ` Scott Wood
[not found] ` <48E2541B.1000801-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
2008-10-01 1:26 ` 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=fa686aa41003011349i367a423cx2c59953e6afc9b75@mail.gmail.com \
--to=grant.likely-s3s/wqlpoipyb63q8fvjnq@public.gmane.org \
--cc=B07421-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
--cc=B08248-KZfg59tc24xl57MIdRCFDg@public.gmane.org \
--cc=devicetree-discuss-mnsaURCQ41sdnm+yROfE0A@public.gmane.org \
--cc=jeremy.kerr-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org \
--cc=john.williams-g5w7nrANp4BDPfheJLI6IQ@public.gmane.org \
--cc=stephen.neuendorffer-gjFFaj9aHVfQT0dZR+AlfA@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