On Tue, Dec 17, 2019 at 2:43 AM Sebastian Huber < sebastian.hu...@embedded-brains.de> wrote:
> Hello, > > I plan to move content from confdefs.h to separate header files for > configuration groups. What should confdefs.h do if CONFIGURE_INIT is not > defined? > > Should we do the consistency checks for example if CONFIGURE_INIT is not > defined, e.g. > > #if defined(CONFIGURE_UNLIMITED_OBJECTS) > #if !defined(CONFIGURE_UNIFIED_WORK_AREAS) && \ > !defined(CONFIGURE_EXECUTIVE_RAM_SIZE) && \ > !defined(CONFIGURE_MEMORY_OVERHEAD) > #error "CONFIGURE_UNLIMITED_OBJECTS requires a unified work area, > an executive RAM size, or a defined workspace memory overhead" > #endif > > vs. > > #ifdef CONFIGURE_INIT > #if defined(CONFIGURE_UNLIMITED_OBJECTS) > #if !defined(CONFIGURE_UNIFIED_WORK_AREAS) && \ > !defined(CONFIGURE_EXECUTIVE_RAM_SIZE) && \ > !defined(CONFIGURE_MEMORY_OVERHEAD) > #error "CONFIGURE_UNLIMITED_OBJECTS requires a unified work area, > an executive RAM size, or a defined workspace memory overhead" > #endif > > What about includes, e.g. > > #ifdef CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER > #include <rtems/clockdrv.h> > > #ifdef CONFIGURE_INIT > RTEMS_SYSINIT_ITEM( > _Clock_Initialize, > RTEMS_SYSINIT_DEVICE_DRIVERS, > RTEMS_SYSINIT_ORDER_THIRD > ); > #endif > #endif > > vs. > > #ifdef CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER > #ifdef CONFIGURE_INIT > #include <rtems/clockdrv.h> > > RTEMS_SYSINIT_ITEM( > _Clock_Initialize, > RTEMS_SYSINIT_DEVICE_DRIVERS, > RTEMS_SYSINIT_ORDER_THIRD > ); > #endif > #endif > > ? > > My approach would be to place all the define evaluations into a #ifdef > CONFIGURE_INIT guard, so that #include <rtems/confdefs.h> provides > nothing to the C compiler if CONFIGURE_INIT is not defined. > Originally, the intent was that user code could use CONFIGURE_MAXIMUM_xxx if CONFIGURE_INIT was not defined. We likely don't do this much in the tests but you could have a header file which did all the CONFIGURE_xxx defines, then include <rtems/confdefs.h>. Every application file could use the CONFIGURE_xxx macros if you did an "appconf.h" type header. Then a "appconf.c" could define CONFIGURE_INIT and include rtems/confdefs.h. Do we have all the rtems_xxx which fetch configuration data documented? Those may largely cover the use case I described. Now I generally recommend putting RTEMS configuration and an init task to start RTEMS services in a dedicated file and invoking main() to start the application. There are some of the rtems-examples which follow this pattern. --joel > -- > 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
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel