[PATCH] Use linker set for system initialization

Sebastian Huber sebastian.huber at embedded-brains.de
Fri Dec 11 06:32:41 UTC 2015


On 11/12/15 06:17, Chris Johns wrote:
> On 12/10/15 19:14, Sebastian Huber wrote:
>> Make rtems_initialize_data_structures(),
>> rtems_initialize_before_drivers() and rtems_initialize_device_drivers()
>> static.
>
> Is this needed or is this something you can now do so why not?

They are not longer part of the API and it can be done now.

>
> The only reason I ask is the trace linker needs external symbols to 
> work and they are interesting symbols. Static symbols cannot be 
> remapped by gld. 

I think tracing is not really interesting in the system startup 
sequence. It is single threaded with interrupts disabled. So, in case 
there is a problem, a classic debugger should be sufficient.

The general pattern for the system initialization via the linker set is:

static void constructor(void)
{
    ...
}

RTEMS_SYSINIT_ITEM(
   constructor,
   RTEMS_SYSINIT_XYZ,
   RTEMS_SYSINIT_ORDER_MIDDLE
);

void some_public_api_func(void)
{
   ...
}

-- 
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