#3269 assigned enhancement

Make the IRQ extensions API a standard API

Reported by: Sebastian Huber Owned by: Sebastian Huber
Priority: normal Milestone: 6.1
Component: rtems Version: 5
Severity: normal Keywords: qualification
Cc: Blocked By:
Blocking:

Description (last modified by Sebastian Huber)

The IRQ extensions API defined by <rtems/irq-extensions.h> is currently only implemented by some BSPs and not covered by test cases. It is not documented in the RTEMS Classic API Guide. Change the BSPs so that every BSP implements this API at least as a stub so that we can write tests for this API. Specify and document the API.

Extend the API to enable/disable specific interrupt vectors. The proposed functions for this are rtems_interrupt_mask() and rtems_interrupt_unmask().

Extend the API to raise/clear specific interrupt vectors. This allows to test specific interrupts. The proposed functions are rtems_interrupt_raise() and rtems_interrupt_clear().

Extend the API to set/get the interrupt vector priority.

Extend the API to get some information about a particular interrupt vector, e.g. if the raise/clear functions work, if it is possible to change the priority, etc.

Change History (19)

comment:1 Changed on Jan 4, 2018 at 6:20:36 AM by Sebastian Huber <sebastian.huber@…>

In 569fd50/rtems:

sparc: Remove BSP specifics from <pci/irq.h>

Update #3254.
Update #3260.
Update #3269.

comment:2 Changed on May 13, 2019 at 1:33:51 PM by Sebastian Huber

Component: devrtems
Description: modified (diff)
Milestone: Indefinite5.1
Summary: Add functions to enable, disable, and clear interrupts to the IRQ extensions APIMake the IRQ extensions API a standard API
Version: 5

comment:3 Changed on May 16, 2019 at 7:59:21 AM by Sebastian Huber <sebastian.huber@…>

In 45d0659/rtems:

bsps: Always build generic interrupt support

This makes it possible to write tests for the generic interrupt
controller support.

Update #3269.

comment:4 Changed on Jul 5, 2019 at 7:04:53 AM by Sebastian Huber <sebastian.huber@…>

In e9c83b4/rtems:

bsps: Regenerate headers.am

Update #3269.

comment:5 Changed on Dec 19, 2019 at 8:07:34 AM by Sebastian Huber

Milestone: 5.16.1

comment:6 Changed on Jul 31, 2020 at 5:01:26 AM by Sebastian Huber <sebastian.huber@…>

In a3bcc79/rtems:

bsps/lm32: Use shared <bsp/irq.h>

Having a duplicate header with the shared includes is a build system
inconsistency. You may use one header file to build the libraries and
another one is installed (overwriting the other).

Update #3269.

comment:7 Changed on Jun 18, 2021 at 9:24:45 AM by Sebastian Huber

Keywords: qualification added

comment:8 Changed on Jun 24, 2021 at 10:29:35 AM by Sebastian Huber <sebastian.huber@…>

In 61d0be7/rtems:

bsps/irq: Remove BSP_INTERRUPT_NO_HEAP_USAGE

Remove the support for BSP_INTERRUPT_NO_HEAP_USAGE. This was only used
by one BSP and provides no real benefit.

Update #3269.

comment:9 Changed on Jun 24, 2021 at 10:29:39 AM by Sebastian Huber <sebastian.huber@…>

In 4146d39/rtems:

bsp/genmcf548x: Change BSP_INTERRUPT_VECTOR_MIN

This BSP uses a customized implementation of the interrupt extension API. It
was the only BSP which defined BSP_INTERRUPT_VECTOR_MIN to a value other than
zero. Define it to zero and use a custom bsp_interrupt_is_valid_vector()
function instead.

Update #3269.

comment:10 Changed on Jun 24, 2021 at 10:29:42 AM by Sebastian Huber <sebastian.huber@…>

In 5210c7c/rtems:

bsp/generic_or1k: Remove incomplete IRQ support

Update #3269.

comment:11 Changed on Jun 24, 2021 at 10:29:46 AM by Sebastian Huber <sebastian.huber@…>

In f3acb8b/rtems:

bsps/irq: Assert BSP_INTERRUPT_VECTOR_MIN == 0

After building all BSPs with this patch, this BSP-specific define can be
removed to simplify the implementation.

Update #3269.

comment:12 Changed on Jun 24, 2021 at 10:29:49 AM by Sebastian Huber <sebastian.huber@…>

In af73b7b6/rtems:

bsps/irq: Remove BSP_INTERRUPT_VECTOR_MIN

Remove BSP_INTERRUPT_VECTOR_MIN and unconditionally let interrupt vector
numbers start with zero.

The BSP_INTERRUPT_VECTOR_MIN == 0 invariant was tested by the previous commit
and building all BSPs.

Update #3269.

comment:13 Changed on Jun 24, 2021 at 10:29:53 AM by Sebastian Huber <sebastian.huber@…>

In 900a84c5/rtems:

smpcapture02: Fix use of BSP_INTERRUPT_VECTOR_MAX

This define represents the last valid interrupt vector number.

Update #3269.

comment:14 Changed on Jun 24, 2021 at 10:29:56 AM by Sebastian Huber <sebastian.huber@…>

In cd5573c/rtems:

bsps/irq: Add BSP_INTERRUPT_VECTOR_COUNT

Assert BSP_INTERRUPT_VECTOR_MAX + 1 == BSP_INTERRUPT_VECTOR_COUNT.

After building all BSPs with this patch, BSP_INTERRUPT_VECTOR_MAX can be
removed and replaced by BSP_INTERRUPT_VECTOR_COUNT. The
BSP_INTERRUPT_VECTOR_COUNT allows a default implementation which supports no
interrupt vector at all. Using COUNT instead of MAX may avoid some
interpretation issues, for example is the maximum value a valid vector number
or not.

Update #3269.

comment:15 Changed on Jun 24, 2021 at 10:30:00 AM by Sebastian Huber <sebastian.huber@…>

In 049e2b6/rtems:

bsps/irq: Remove BSP_INTERRUPT_VECTOR_NUMBER

Replace it with BSP_INTERRUPT_VECTOR_COUNT.

Update #3269.

comment:16 Changed on Jun 24, 2021 at 10:30:03 AM by Sebastian Huber <sebastian.huber@…>

In 3fee6620/rtems:

bsps/irq: Use BSP_INTERRUPT_VECTOR_COUNT

Use BSP_INTERRUPT_VECTOR_COUNT instead of BSP_INTERRUPT_VECTOR_MAX.

Update #3269.

comment:17 Changed on Jun 24, 2021 at 10:30:07 AM by Sebastian Huber <sebastian.huber@…>

In 94cf67c/rtems:

bsps/irq: Remove BSP_INTERRUPT_VECTOR_MAX

This define is no longer used.

Update #3269.

comment:18 Changed on Jun 24, 2021 at 10:30:10 AM by Sebastian Huber <sebastian.huber@…>

In fdf2ee7/rtems:

bsps/irq: Default BSP_INTERRUPT_VECTOR_COUNT == 0

Change the default value of BSP_INTERRUPT_VECTOR_COUNT so that no interrupt
vectors are supported and all related directives return RTEMS_INVALID_ID.

Update #3269.

comment:19 Changed on Jun 24, 2021 at 10:30:14 AM by Sebastian Huber <sebastian.huber@…>

In 6b7a3858/rtems:

bsp/atsam: Fix BSP_INTERRUPT_VECTOR_COUNT

Fix an off by one error.

Update #3269.

Note: See TracTickets for help on using tickets.