On 27/01/16 15:01, Joel Sherrill wrote:
On Tue, Jan 26, 2016 at 10:02 AM, Sebastian Huber
<sebastian.hu...@embedded-brains.de
<mailto:sebastian.hu...@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.hu...@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel