[PATCH v2] rtems: Add rtems_task_create_from_config()
Sebastian Huber
sebastian.huber at embedded-brains.de
Thu Sep 3 12:08:25 UTC 2020
On 03/09/2020 04:08, Chris Johns wrote:
> On 3/9/20 2:09 am, Sebastian Huber wrote:
>> In contrast to rtems_task_create() this function creates a task with a
>> user-provided task storage area. The new create function uses a
>> configuration structure instead of individual parameters.
>>
>> Add RTEMS_TASK_STORAGE_ALIGNMENT to define the recommended alignment of
>> a task storage area.
>>
>> Add RTEMS_TASK_STORAGE_SIZE() to calculate the recommended size of a
>> task storage area based on the task attributes and the size dedicated to
>> the task stack and thread-local storage. This macro may allow future
>> extensions without breaking the API.
> Have all the issues in the other thread been resolved? It would be good to have
> Joel ack this patch before it is merged.
I tried to address the issues raised by Joel.
>
> In considering the support for static allocation in general I am wondering if
> the RTEMS Classic API Guide is poorly named? This is a new API with new features
> and it is not "classic". The Key Concepts section of the that manual says...
>
> "RTEMS provides directives which can be used to dynamically
> create, delete, and manipulate a set of predefined object types."
>
> This change makes this statement questionable.
The task is still dynamically created, however, with a user-provided
task storage area. It is similar to the POSIX threads which also have to
option to use a user-provided task storage area. When you don't use
unlimited objects, then the memory for task control blocks is only
statically allocated. The tasks are dynamically maintained.
The self-contained synchronization objects of this chapter
https://docs.rtems.org/branches/master/c-user/self_contained_objects.html
are a different kind of thing.
> I am sure there are other places
> that will need to be updated. What documentation and examples are planned to
> explain the different allocation models RTEMS now supports? I think we have 3
> APIs and the "Classic" API now has 2 allocation models. I fine with the
> expansion of the ways RTEMS can be used but we need to make sure we explain
> these differing ways, why they exist, and the advantages and disadvantages. I
> would prefer we not leave this as an exercise for the users to do by reading
> header files.
Yes, we need some guidance for the users. I will definitely work on
documentation updates. I would like to work first on the specification
of the Classic API directives:
https://devel.rtems.org/ticket/3993
This involves a unification/consolidation of the Doxgyen and Sphinx
documentation.
Afterwards I would like to concentrate more on higher level aspects
which cover more than one directive.
More information about the devel
mailing list