[PATCH 7/7] rtems: Add rtems_task_build()
Sebastian Huber
sebastian.huber at embedded-brains.de
Tue Sep 1 07:27:42 UTC 2020
On 31/08/2020 23:15, Joel Sherrill wrote:
>
>
> On Fri, Aug 21, 2020 at 6:51 AM Sebastian Huber
> <sebastian.huber at embedded-brains.de
> <mailto:sebastian.huber at embedded-brains.de>> wrote:
>
> In contrast to rtems_task_create() this function creates a task with a
> user-provided task storage area.
>
>
> And all the creation parameters are in a structure which this log
> doesn't mention.
Ok, I will add this to the commit message.
>
> How is the user supposed to know how large the "task storage area" should be
> The sp01 modifications seem to be a bit deceptive because the area is
> just declared
> in terms of stack size. I would expect some user facing macros that
> capture the
> size required for a non-FP and FP task. If FP is all tasks, then both
> would give
> the same base value. Perhaps even take the requested stack size.
Ok, we already have an internal CONTEXT_FP_SIZE. What about adding an
RTEMS_TASK_FLOATING_POINT_CONTEXT_SIZE define which can be used to
deterime the size of the task storage area?
>
> How does the user account for any memory that is needed for alignment?
> Declaring a byte array is almost certainly not aligned sufficiently for a
> structure with larger elements and the stack itself may need to be cache
> line size aligned.
The parts allocated from the storage area do their own alignment. We
could add an RTEMS_TASK_STORAGE_ALIGNMENT define to help to reduce
memory waste.
>
> I spotted multiple places in this patch where variables and parameters
> are not aligned properly.
Which places?
>
> But more important than formatting, I think the user facing part is too
> error
> prone as it appears to be defined. It still counts as a user facing task
> which
> means confdefs.h will include it in its stack calculations and that is used
> to reserve memory which will never be used. Similarly maximum tasks
> is used to reserve work space memory for various structures.
This is one of the last missing pieces to get rid of the workspace for
certain application configurations. Mixing rtems_task_create() and
rtems_task_create_build_whatever() is not recommended. If you really
want to mix the functions, then the task stack space configuration is a
bit more difficult. You can for example adjust the size via
CONFIGURE_MEMORY_OVERHEAD.
I will add this as a note to the documentation.
>
> I don't think this one is ready. It needs API discussion more than basic
> feature discussion.
It would be nice to know your preference with respect to the function name.
--
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