general comments on sysiinit patches
Sebastian Huber
sebastian.huber at embedded-brains.de
Wed Jan 27 14:29:15 UTC 2016
On 27/01/16 15:01, Joel Sherrill wrote:
>
> On Tue, Jan 26, 2016 at 10:02 AM, Sebastian Huber
> <sebastian.huber at embedded-brains.de
> <mailto:sebastian.huber at embedded-brains.de>> wrote:
>
> On 26/01/16 16:51, Joel Sherrill wrote:
>
> Hi
>
> I have questions that probably impact all/most of the patches
> so thought I would start another thread. Then it is just
> detailed review of the individual patches.
>
> + We have used EXTERN to avoid duplicating extern and
> instantiating data. You appear to have completely removed that
> pattern with no discussion of changing the coding style. I
> really don't like duplication of the information.
>
>
> There is no duplicate information. We have exactly one declaration
> and one definition. The compiler checks that they harmonize. Its
> necessary to move the definitions to the right module, so that the
> linker can do its job and add the right initialization items.
>
> It was formerly one line that did both in a single location with
> documentation. The data was instantiated in a per manager file. The
> pattern was clear since it was used at least twenty times.
A single line with some pre-processor magic. For SAPI and score its a
global switch.
> This extern stuff is not mentioned here:
>
> https://devel.rtems.org/wiki/Developer/Coding/Conventions
>
>
> Come on.. citing letter of the "law" in this case is a pretty weak
> defense. There is a lot of stuff not mentioned there and you have been
> around long enough to know that that particular document has been
> grown a bit at a time specifically as we realized there is a pattern
> not covered. You and I both know that it is likely far from complete.
> And using "not mentioned" when there is clearly an existing pattern in
> the code itself is disingenuous.
>
> What a compiler may check and duplicating information are different
> things. You have changed the pattern in at least two ways:
>
> + dedicated file for data instantiation per manager/handler
> + single line to serve both as declaration and instantiation
>
> The two patterns have similar technical effect in that they declare
> and instance a variable. But you changed the pattern with no
> discussion about the pattern. That is the issue here.
I didn't want to change a pattern. My goal was to implement the linker
set based initialization which I thought was consensus. For this its
important that a certain global variable definition and its
initialization item/handler is in the same module. The mechanism is that
the user of a certain functional unit reference some global data of this
functional unit. This pulls in the initialization item/handler for this
functional unit. For the RTEMS managers this is usually quite easy, just
place the initialization item/handler to the definition of the objects
information definition. With this pre-processor magic to define global
data you make it quite hard to review this part. In how many other
software projects is this mechanism to define global data used? It
confuses source code reference tools. If you see this stuff the first
time, how long do you need to understand what is going on here? If you
insist, then I can bring back this pattern, but I don't think it makes
things more clear.
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber at embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
More information about the devel
mailing list