<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Dec 17, 2019 at 2:43 AM Sebastian Huber <<a href="mailto:sebastian.huber@embedded-brains.de">sebastian.huber@embedded-brains.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hello,<br>
<br>
I plan to move content from confdefs.h to separate header files for <br>
configuration groups. What should confdefs.h do if CONFIGURE_INIT is not <br>
defined?<br>
<br>
Should we do the consistency checks for example if CONFIGURE_INIT is not <br>
defined, e.g.<br>
<br>
#if defined(CONFIGURE_UNLIMITED_OBJECTS)<br>
   #if !defined(CONFIGURE_UNIFIED_WORK_AREAS) && \<br>
      !defined(CONFIGURE_EXECUTIVE_RAM_SIZE) && \<br>
      !defined(CONFIGURE_MEMORY_OVERHEAD)<br>
      #error "CONFIGURE_UNLIMITED_OBJECTS requires a unified work area, <br>
an executive RAM size, or a defined workspace memory overhead"<br>
   #endif<br>
<br>
vs.<br>
<br>
#ifdef CONFIGURE_INIT<br>
#if defined(CONFIGURE_UNLIMITED_OBJECTS)<br>
   #if !defined(CONFIGURE_UNIFIED_WORK_AREAS) && \<br>
      !defined(CONFIGURE_EXECUTIVE_RAM_SIZE) && \<br>
      !defined(CONFIGURE_MEMORY_OVERHEAD)<br>
      #error "CONFIGURE_UNLIMITED_OBJECTS requires a unified work area, <br>
an executive RAM size, or a defined workspace memory overhead"<br>
   #endif<br>
<br>
What about includes, e.g.<br>
<br>
#ifdef CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER<br>
   #include <rtems/clockdrv.h><br>
<br>
   #ifdef CONFIGURE_INIT<br>
     RTEMS_SYSINIT_ITEM(<br>
       _Clock_Initialize,<br>
       RTEMS_SYSINIT_DEVICE_DRIVERS,<br>
       RTEMS_SYSINIT_ORDER_THIRD<br>
     );<br>
   #endif<br>
#endif<br>
<br>
vs.<br>
<br>
#ifdef CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER<br>
   #ifdef CONFIGURE_INIT<br>
     #include <rtems/clockdrv.h><br>
<br>
     RTEMS_SYSINIT_ITEM(<br>
       _Clock_Initialize,<br>
       RTEMS_SYSINIT_DEVICE_DRIVERS,<br>
       RTEMS_SYSINIT_ORDER_THIRD<br>
     );<br>
   #endif<br>
#endif<br>
<br>
?<br>
<br>
My approach would be to place all the define evaluations into a #ifdef <br>
CONFIGURE_INIT guard, so that #include <rtems/confdefs.h> provides <br>
nothing to the C compiler if CONFIGURE_INIT is not defined.<br></blockquote><div><br></div><div>Originally, the intent was that user code could use CONFIGURE_MAXIMUM_xxx </div><div>if CONFIGURE_INIT was not defined. We likely don't do this much in the tests but</div><div>you could have a header file which did all the CONFIGURE_xxx defines, then</div><div>include <rtems/confdefs.h>. Every application file could use the CONFIGURE_xxx</div><div>macros if you did an "appconf.h" type header. Then a "appconf.c" could define</div><div>CONFIGURE_INIT and include rtems/confdefs.h.</div><div><br></div><div>Do we have all the rtems_xxx which fetch configuration data documented? Those</div><div>may largely cover the use case I described.</div><div><br></div><div>Now I generally recommend putting RTEMS configuration and an init task</div><div>to start RTEMS services in a dedicated file and invoking main() to start </div><div>the application. There are some of the rtems-examples which follow this pattern.</div><div><br></div><div>--joel</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
-- <br>
Sebastian Huber, embedded brains GmbH<br>
<br>
Address : Dornierstr. 4, D-82178 Puchheim, Germany<br>
Phone   : +49 89 189 47 41-16<br>
Fax     : +49 89 189 47 41-09<br>
E-Mail  : <a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">sebastian.huber@embedded-brains.de</a><br>
PGP     : Public key available on request.<br>
<br>
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.<br>
_______________________________________________<br>
devel mailing list<br>
<a href="mailto:devel@rtems.org" target="_blank">devel@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.rtems.org/mailman/listinfo/devel</a></blockquote></div></div>