[RTEMS Project] #3700: Add rtems_rate_monotonic_deadline()

RTEMS trac trac at rtems.org
Tue Feb 26 09:53:35 UTC 2019


#3700: Add rtems_rate_monotonic_deadline()
-----------------------------+------------------------------
 Reporter:  Sebastian Huber  |       Owner:  Sebastian Huber
     Type:  enhancement      |      Status:  assigned
 Priority:  normal           |   Milestone:  5.1
Component:  rtems            |     Version:  5
 Severity:  normal           |  Resolution:
 Keywords:                   |  Blocked By:
 Blocking:                   |
-----------------------------+------------------------------
Description changed by Sebastian Huber:

Old description:

> Depending on the scheduler selection, the rtems_rate_monotonic_period()
> behaves differently. In case the EDF scheduler is configured, then tasks
> using a rate-monotonic object have a higher priority (based on deadline)
> than the fixed priority background tasks. This is quite bad for
> applications which want to use the periods with a fixed priority just to
> get statistics and a deadline miss detection. The default SMP scheduler
> provides EDF functionality, so this is an issue while porting
> applications to SMP systems. To give applications more control, add a new
> function:
> {{{
> /**
>  * @brief Starts a deadline and period.
>  *
>  * This routine starts a deadline and period.  In case Earliest Deadline
> First
>  * (EDF) scheduling is available, then the priority of the executing task
> is
>  * adjusted according to the specified deadline.  The next activation of
> the
>  * executing task is specified by the period parameter.
>  *
>  * @param id The rate monotonic object identifier.
>  * @param deadline The deadline in ticks.  Must be positive.
>  * @param period The period in ticks.  Must be greater than or equal to
> the deadline.
>  *
>  * @retval RTEMS_SUCCESSFUL Successful operation.
>  * @retval RTEMS_INVALID_ID No period objects exists for the specified
> object
>  *   identifier.
>  * @retval RTEMS_NOT_OWNER_OF_RESOURCE The period object belongs to
> another task.
>  * @retval RTEMS_INVALID_NUMBER The deadline is zero or the period is
> less than the deadline.
>  * @retval RTEMS_TIMEOUT The previous deadline was missed.
>  */
> rtems_status_code rtems_rate_monotonic_deadline(
>   rtems_id       id,
>   rtems_interval deadline,
>   rtems_interval period
> );
> }}}
> The new function uses two timing parameters to allow constrained
> deadlines and not only implicit deadlines.

New description:

 Depending on the scheduler selection, the rtems_rate_monotonic_period()
 behaves differently. In case the EDF scheduler is configured, then tasks
 using a rate-monotonic object have a higher priority (based on deadline)
 than the fixed priority background tasks. This is quite bad for
 applications which want to use the periods with a fixed priority just to
 get statistics and a deadline miss detection. The default SMP scheduler
 provides EDF functionality, so this is an issue while porting applications
 to SMP systems. To give applications more control, add a new function:
 {{{
 /**
  * @brief Starts a deadline and period.
  *
  * This routine starts a deadline and period.  In case Earliest Deadline
 First
  * (EDF) scheduling is available, then the priority of the executing task
 is
  * adjusted according to the specified deadline.  The next activation of
 the
  * executing task is specified by the period parameter.
  *
  * @param id The rate monotonic object identifier.
  * @param deadline The deadline in ticks.  Must be positive.
  * @param period The period in ticks.  Must be greater than or equal to
 the deadline.
  *
  * @retval RTEMS_SUCCESSFUL Successful operation.
  * @retval RTEMS_INVALID_ID No period objects exists for the specified
 object
  *   identifier.
  * @retval RTEMS_NOT_OWNER_OF_RESOURCE The period object belongs to
 another task.
  * @retval RTEMS_INVALID_NUMBER The deadline is zero or the period is less
 than the deadline.
  * @retval RTEMS_TIMEOUT The previous deadline was missed.
  */
 rtems_status_code rtems_rate_monotonic_deadline(
   rtems_id       id,
   rtems_interval deadline,
   rtems_interval period
 );
 }}}
 The new function uses two timing parameters to allow constrained deadlines
 and not only implicit deadlines.

 The rtems_rate_monotonic_period() function should be changed to not alter
 the task priority depending on the implicit deadline.  This avoids
 surprises while changing the scheduler to EDF in existing applications
 (especially while porting to an SMP system).

--

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


More information about the bugs mailing list