summaryrefslogtreecommitdiffstats
path: root/bsps/shared
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-06-28 08:20:53 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-07-26 07:54:25 +0200
commit781213f9ec5eb4f56c4df66253a8315ea513693e (patch)
tree49e43ebe53e539c654468bc9f44dd34c17055101 /bsps/shared
parentrtems: Add RTEMS_FATAL_SOURCE_SPURIOUS_INTERRUPT (diff)
downloadrtems-781213f9ec5eb4f56c4df66253a8315ea513693e.tar.bz2
bsps/irq: Add rtems_interrupt_vector_is_enabled()
Add a default implementation which just returns RTEMS_UNSATISFIED for valid parameters. Update #3269.
Diffstat (limited to 'bsps/shared')
-rw-r--r--bsps/shared/dev/irq/arm-gicv2.c11
-rw-r--r--bsps/shared/dev/irq/arm-gicv3.c11
-rw-r--r--bsps/shared/irq/irq-default.c11
-rw-r--r--bsps/shared/irq/irq-enable-disable.c19
4 files changed, 51 insertions, 1 deletions
diff --git a/bsps/shared/dev/irq/arm-gicv2.c b/bsps/shared/dev/irq/arm-gicv2.c
index c29cae1d97..045b7822a8 100644
--- a/bsps/shared/dev/irq/arm-gicv2.c
+++ b/bsps/shared/dev/irq/arm-gicv2.c
@@ -64,6 +64,17 @@ void bsp_interrupt_dispatch(void)
}
}
+rtems_status_code bsp_interrupt_vector_is_enabled(
+ rtems_vector_number vector,
+ bool *enabled
+)
+{
+ bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
+ bsp_interrupt_assert(enabled != NULL);
+ *enabled = false;
+ return RTEMS_UNSATISFIED;
+}
+
void bsp_interrupt_vector_enable(rtems_vector_number vector)
{
volatile gic_dist *dist = ARM_GIC_DIST;
diff --git a/bsps/shared/dev/irq/arm-gicv3.c b/bsps/shared/dev/irq/arm-gicv3.c
index 75b089b6b5..0549b6bd72 100644
--- a/bsps/shared/dev/irq/arm-gicv3.c
+++ b/bsps/shared/dev/irq/arm-gicv3.c
@@ -164,6 +164,17 @@ void bsp_interrupt_dispatch(void)
}
}
+rtems_status_code bsp_interrupt_vector_is_enabled(
+ rtems_vector_number vector,
+ bool *enabled
+)
+{
+ bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
+ bsp_interrupt_assert(enabled != NULL);
+ *enabled = false;
+ return RTEMS_UNSATISFIED;
+}
+
void bsp_interrupt_vector_enable(rtems_vector_number vector)
{
diff --git a/bsps/shared/irq/irq-default.c b/bsps/shared/irq/irq-default.c
index 943b4ea191..842cdd66e0 100644
--- a/bsps/shared/irq/irq-default.c
+++ b/bsps/shared/irq/irq-default.c
@@ -37,6 +37,17 @@
#include <bsp/irq-generic.h>
+rtems_status_code bsp_interrupt_vector_is_enabled(
+ rtems_vector_number vector,
+ bool *enabled
+)
+{
+ bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
+ bsp_interrupt_assert(enabled != NULL);
+ *enabled = false;
+ return RTEMS_UNSATISFIED;
+}
+
void bsp_interrupt_vector_enable(rtems_vector_number vector)
{
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
diff --git a/bsps/shared/irq/irq-enable-disable.c b/bsps/shared/irq/irq-enable-disable.c
index 792f5e60c6..6bf4620018 100644
--- a/bsps/shared/irq/irq-enable-disable.c
+++ b/bsps/shared/irq/irq-enable-disable.c
@@ -6,7 +6,8 @@
* @ingroup bsp_interrupt
*
* @brief This source file contains the implementation of
- * rtems_interrupt_vector_enable() and rtems_interrupt_vector_disable().
+ * rtems_interrupt_vector_is_enabled(), rtems_interrupt_vector_enable() and
+ * rtems_interrupt_vector_disable().
*/
/*
@@ -36,6 +37,22 @@
#include <bsp/irq-generic.h>
+rtems_status_code rtems_interrupt_vector_is_enabled(
+ rtems_vector_number vector,
+ bool *enabled
+)
+{
+ if ( enabled == NULL ) {
+ return RTEMS_INVALID_ADDRESS;
+ }
+
+ if ( !bsp_interrupt_is_valid_vector( vector ) ) {
+ return RTEMS_INVALID_ID;
+ }
+
+ return bsp_interrupt_vector_is_enabled( vector, enabled );
+}
+
rtems_status_code rtems_interrupt_vector_enable( rtems_vector_number vector )
{
if ( !bsp_interrupt_is_valid_vector( vector ) ) {