#3875: Split up confdefs.h in component based header files ------------------------------+----------------------------- Reporter: Sebastian Huber | Owner: Sebastian Huber Type: task | Status: assigned Priority: normal | Milestone: 5.1 Component: config | Version: 5 Severity: normal | Keywords: Blocked By: | Blocking: ------------------------------+----------------------------- The confdefs.h header file is large, complex, and hard to review. Split it up into component header files to make it easier to maintain and review.
The general approach is to place the default configuration of things in librtemscpu.a. The benefit is that the application configuration object file will only include data structures which have a user-defined value. The component based header files include their dependencies explicitly. It should be possible to include component based header files separately to ease testing. For example we could use this template: {{{ #ifndef _RTEMS_CONFDEFS_FOOBAR_H #define _RTEMS_CONFDEFS_FOOBAR_H #ifndef __CONFIGURATION_TEMPLATE_h #error "Do not include this file directly, use <rtems/confdefs.h> instead" #endif #if defined(CONFIGURE_INIT) && \ defined(CONFIGURE_FOOBAR_STUFF) && \ defined(CONFIGURE_MORE_FOOBAR_STUFF) /* Foobar includes */ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* Configure foobar. */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* CONFIGURE_INIT */ #endif /* _RTEMS_CONFDEFS_FOOBAR_H */ }}} In case CONFIGURE_INIT is not defined, then including <rtems/confdefs.h> should expose nothing to the C compiler. Here is a first proposal to group the configuration in components: {{{ rtems/ confdefs.h This file just includes the component based header files listed below. confdefs/ bdbuf.h classicobj.h Classic API objects classictasksinit.h Classic initialization task driverclock.h Clock driver and related configuration, e.g. CONFIGURE_MICROSECONDS_PER_TICK driverconsolesimple.h Simple console driver configuration driverlegacy.h Legacy IO driver configuration table extensions.h User extensions, internal extensions filesystem.h Filesystem configuration general.h Basic stuff which is mandatory to configure, e.g. ISR stacks, per- CPU information libpci.h PCI library configuration malloc.h Malloc configuration mpci.h MPCI specific configuration options msgq.h General message queue configuration obsolete.h Warning about the use of obsolete configure options posixkeys.h POSIX keys posixobj.h POSIX objects posixthreadsinit.h POSIX initialization threads scheduler.h Scheduler configuration support.h Support macros for confdefs header files threads.h General thread configuration (e.g. thread control block) unlimited.h Unlimited objects configuration }}} -- Ticket URL: <http://devel.rtems.org/ticket/3875> RTEMS Project <http://www.rtems.org/> RTEMS Project
_______________________________________________ bugs mailing list bugs@rtems.org http://lists.rtems.org/mailman/listinfo/bugs