#4033 closed enhancement (fixed)

Add rtems_interrupt_server_create() and rtems_interrupt_server_destroy()

Reported by: Sebastian Huber Owned by: Sebastian Huber
Priority: normal Milestone: 5.1
Component: lib Version: 5
Severity: normal Keywords:
Cc: Blocked By:
Blocking:

Description (last modified by Sebastian Huber)

Currently, the only way to create interrupt servers is rtems_interrupt_server_initialize(). This function creates the default interrupt server and in SMP configurations additional interrupt servers for the additional processors. The interrupt server is heavily used by libbsd. This includes the epoch based reclamation which performs time consuming resource and memory deallocation work. This does not work well with time critical services, for example an UART over SPI or I2C. One approach to address this problem is to allow the application to create custom interrupt servers with the right priority and task properties. The interrupt server API accounted for this, however, it was not yet implemented.

Add rtems_interrupt_server_create() and rtems_interrupt_server_destroy() for this purpose.

Change History (4)

comment:1 Changed on Aug 1, 2020 at 9:55:44 AM by Sebastian Huber

Description: modified (diff)
Summary: Add rtems_interrupt_server_build() and rtems_interrupt_server_destroy()Add rtems_interrupt_server_create() and rtems_interrupt_server_destroy()

comment:2 Changed on Aug 3, 2020 at 6:51:58 AM by Sebastian Huber <sebastian.huber@…>

Resolution: fixed
Status: assignedclosed

In 5eb07731/rtems:

rtems: Add rtems_interrupt_server_create()

Add rtems_interrupt_server_destroy().

Before this patch, the only way to create interrupt servers was
rtems_interrupt_server_initialize(). This function creates the default
interrupt server and in SMP configurations additional interrupt servers
for the additional processors. The interrupt server is heavily used by
libbsd. This includes the epoch based reclamation which performs time
consuming resource and memory deallocation work. This does not work well
with time critical services, for example an UART over SPI or I2C. One
approach to address this problem is to allow the application to create
custom interrupt servers with the right priority and task properties.
The interrupt server API accounted for this, however, it was not
implemented before this patch.

Close #4033.

comment:3 Changed on Aug 5, 2020 at 5:00:20 AM by Sebastian Huber <sebastian.huber@…>

In 534f9dbe/rtems:

arm/atsam: Make interrupt server configurable

The external UART over SPI device SC16IS752 uses the interrupt server
for interrupt processing. The interrupt server is also heavily used by
libbsd. The interrupt processing for the SC16IS752 is time critical and
doesn't work if network traffic is processed at the same priority.
With #4033 custom interrupt servers are available. Change
atsam_sc16is752_spi_create() to support user-defined interrupt servers.
Introduced atsam_sc16is752_spi_config to cut down the argument count of
this function.

Close #4038.

comment:4 Changed on Aug 5, 2020 at 5:01:10 AM by Sebastian Huber <sebastian.huber@…>

In 1b421585/rtems:

arm/atsam: Make interrupt server configurable

The external UART over SPI device SC16IS752 uses the interrupt server
for interrupt processing. The interrupt server is also heavily used by
libbsd. The interrupt processing for the SC16IS752 is time critical and
doesn't work if network traffic is processed at the same priority.
With #4033 custom interrupt servers are available. Change
atsam_sc16is752_spi_create() to support user-defined interrupt servers.
Introduced atsam_sc16is752_spi_config to cut down the argument count of
this function.

Close #4039.

Note: See TracTickets for help on using tickets.