#4181 closed enhancement (fixed)

Add CONFIGURE_INIT_TASK_STORAGE_SIZE

Reported by: Sebastian Huber Owned by: Sebastian Huber
Priority: normal Milestone: 6.1
Component: admin Version: 6
Severity: normal Keywords:
Cc: Blocked By:
Blocking:

Description

Currently, the Classic API initialization task is created with rtems_task_create(). In order to better support applications which use the new rtems_task_construct() directive add a configuration options which constructs the Classic API initialization task with rtems_task_construct():

/* Generated from spec:/acfg/if/init-task-storage-size */

/**
 * @brief This configuration option is an integer define.
 *
 * The value of this configuration option defines the task storage size of the
 * Classic API initialization task.  If this configuration option is specified,
 * then the Classic API initialization task is constructed by
 * rtems_task_construct() instead of using rtems_task_create().
 *
 * @par Default Value
 * The default value is 0.
 *
 * @par Value Constraints
 * @parblock
 * The value of this configuration option shall satisfy all of the following
 * constraints:
 *
 * * It shall be greater than or equal to #CONFIGURE_MINIMUM_TASK_STACK_SIZE.
 *
 * * It shall be defined using RTEMS_TASK_STORAGE_SIZE().
 * @endparblock
 *
 * @par Notes
 * @parblock
 * A task storage area of the specified size is defined by the configuration
 * for the Classic API initialization task.  The
 *
 * * #CONFIGURE_INIT_TASK_STACK_SIZE and
 *
 * * ``CONFIGURE_INIT_TASK_STORAGE_SIZE``
 *
 * configuration options are mutually exclusive.
 * @endparblock
 */
#define CONFIGURE_INIT_TASK_STORAGE_SIZE

Change History (6)

comment:1 Changed on Nov 27, 2020 at 7:47:03 AM by Sebastian Huber <sebastian.huber@…>

In bc175a1/rtems:

Avoid INTERNAL_ERROR_RTEMS_INIT_TASK_ENTRY_IS_NULL

Replace a runtime check with a compile time assertion. This makes the
INTERNAL_ERROR_RTEMS_INIT_TASK_ENTRY_IS_NULL obsolete.

Update #4181.

comment:2 Changed on Nov 27, 2020 at 7:47:07 AM by Sebastian Huber <sebastian.huber@…>

In 657e30c1/rtems:

config: CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE

In order to better support applications which use the new
rtems_task_construct() directive add the
CONFIGURE_INIT_TASK_CONSTURCT_STORAGE_SIZE configuration option. If
this option is specified, then the Classic API initialization task is
constructed with rtems_task_construct().

Update #4181.

comment:3 Changed on Nov 27, 2020 at 7:47:13 AM by Sebastian Huber <sebastian.huber@…>

In 06386fc7/rtems:

Use CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE

Update #4181.

comment:4 Changed on Nov 27, 2020 at 8:16:58 AM by Sebastian Huber <sebastian.huber@…>

Resolution: fixed
Status: assignedclosed

In 00b3444/rtems-docs:

c-user: CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE

Document new configuration option
CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE.

Close #4181.

comment:5 Changed on Nov 27, 2020 at 8:52:57 AM by Sebastian Huber <sebastian.huber@…>

In 6e566bad/rtems:

config: CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE

Fix the documentation.

Update #4181.

comment:6 Changed on Dec 12, 2020 at 12:53:44 PM by Sebastian Huber <sebastian.huber@…>

In fcd9618a/rtems:

config: Fix invalid static assertions in C

Expressions in static assertions must be integral constant expressions. In
integral constant expressions the use of address constant expressions is not
allowed.

In static initializers the address constant expressions are allowed. Introduce
a new macro _CONFIGURE_ASSERT_NOT_NULL() which leads to a compile time error if
the second parameter is NULL. It generates error messages like this if for
example

#define CONFIGURE_INIT_TASK_ENTRY_POINT NULL

is provided by the application:

cpukit/include/rtems/confdefs/inittask.h:51:26: error: size of unnamed array is negative

51 | ( _type ) sizeof( int[ ( _value ) != NULL ? 1 : -1 ] ) )

|

cpukit/include/rtems/confdefs/inittask.h:170:3: note: in expansion of macro '_CONFIGURE_ASSERT_NOT_NULL'

170 | _CONFIGURE_ASSERT_NOT_NULL(

| ~

This fix relates to CID 1470570 (PARSE_ERROR).

Update #4181.

Note: See TracTickets for help on using tickets.