[RTEMS Project] #3838: Rework work area initialization

RTEMS trac trac at rtems.org
Thu Apr 2 08:49:21 UTC 2020


#3838: Rework work area initialization
------------------------------------+------------------------------
 Reporter:  Sebastian Huber         |       Owner:  Sebastian Huber
     Type:  enhancement             |      Status:  closed
 Priority:  normal                  |   Milestone:  5.1
Component:  bsps                    |     Version:  5
 Severity:  normal                  |  Resolution:  fixed
 Keywords:                          |  Blocked By:
 Blocking:  3835, 3843, 3861, 3925  |
------------------------------------+------------------------------
Changes (by Sebastian Huber):

 * status:  assigned => closed
 * resolution:   => fixed


Old description:

> The work area initialization is done by the BSP through
> bsp_work_area_initialize(). This approach predates the system
> initialization through the system initialization linker set. The
> workspace and C program heap are unconditionally initialized. With the
> availability of statically initialized threads a system without workspace
> and C program heap is feasible. Change the work area initialization so
> that components are initialized on demand. To achieve this:
>
> 1. Add a Memory Handler which provides support for low level handling of
> memory areas which are handed over to the higher level Heap Handler.
>
> 2. Add an implementation of _Memory_Get() to each BSP (basically a
> restructuring of the bsp_work_area_initialize() implementations).
>
> 3. Add a _Memory_Get_workspace_handler_initialize() implementation to
> each BSP which returns a workspace handler initialization function which
> can initialize the workspace (A) from one memory area or (B) multiple
> memory areas (needs _Heap_Extend()). Only two BSPs need (B).
>
> 4. Add a _Memory_Get_malloc_initialize() implementation similar to 3.

New description:

 The work area initialization is done by the BSP through
 bsp_work_area_initialize(). This approach predates the system
 initialization through the system initialization linker set. The workspace
 and C program heap are unconditionally initialized. With the availability
 of statically initialized threads a system without workspace and C program
 heap is feasible. Change the work area initialization so that components
 are initialized on demand. To achieve this:

 1. Add a Memory Handler which provides support for low level handling of
 memory areas which are handed over to the higher level Heap Handler.

 2. Add an implementation of _Memory_Get() to each BSP (basically a
 restructuring of the bsp_work_area_initialize() implementations).

 See optimization opportunity in #3925.

--

--
Ticket URL: <http://devel.rtems.org/ticket/3838#comment:21>
RTEMS Project <http://www.rtems.org/>
RTEMS Project


More information about the bugs mailing list