summaryrefslogtreecommitdiffstats
path: root/bsps/shared
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-06-28 09:36:29 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-07-26 17:08:42 +0200
commiteebecd09fad576f9d5fbc57fceefc2147910dae4 (patch)
tree3dd2a145d07e8215e4533d7d7064411c204a740a /bsps/shared
parentbsps/irq: Add rtems_interrupt_raise() (diff)
downloadrtems-eebecd09fad576f9d5fbc57fceefc2147910dae4.tar.bz2
bsps/irq: Add rtems_interrupt_get_attributes()
Add a default implementation which clears the attributes to zero and just returns RTEMS_SUCCESSFUL for valid parameters. Update #3269.
Diffstat (limited to 'bsps/shared')
-rw-r--r--bsps/shared/dev/irq/arm-gicv2.c8
-rw-r--r--bsps/shared/dev/irq/arm-gicv3.c8
-rw-r--r--bsps/shared/irq/irq-default.c8
-rw-r--r--bsps/shared/irq/irq-enable-disable.c33
4 files changed, 55 insertions, 2 deletions
diff --git a/bsps/shared/dev/irq/arm-gicv2.c b/bsps/shared/dev/irq/arm-gicv2.c
index 299ed5a089..509449c47d 100644
--- a/bsps/shared/dev/irq/arm-gicv2.c
+++ b/bsps/shared/dev/irq/arm-gicv2.c
@@ -64,6 +64,14 @@ void bsp_interrupt_dispatch(void)
}
}
+rtems_status_code bsp_interrupt_get_attributes(
+ rtems_vector_number vector,
+ rtems_interrupt_attributes *attributes
+)
+{
+ return RTEMS_SUCCESSFUL;
+}
+
rtems_status_code bsp_interrupt_raise(rtems_vector_number vector)
{
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
diff --git a/bsps/shared/dev/irq/arm-gicv3.c b/bsps/shared/dev/irq/arm-gicv3.c
index 82f3d3730d..7223ec1039 100644
--- a/bsps/shared/dev/irq/arm-gicv3.c
+++ b/bsps/shared/dev/irq/arm-gicv3.c
@@ -164,6 +164,14 @@ void bsp_interrupt_dispatch(void)
}
}
+rtems_status_code bsp_interrupt_get_attributes(
+ rtems_vector_number vector,
+ rtems_interrupt_attributes *attributes
+)
+{
+ return RTEMS_SUCCESSFUL;
+}
+
rtems_status_code bsp_interrupt_raise(rtems_vector_number vector)
{
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
diff --git a/bsps/shared/irq/irq-default.c b/bsps/shared/irq/irq-default.c
index 63ba0c37ee..745e1eb139 100644
--- a/bsps/shared/irq/irq-default.c
+++ b/bsps/shared/irq/irq-default.c
@@ -37,6 +37,14 @@
#include <bsp/irq-generic.h>
+rtems_status_code bsp_interrupt_get_attributes(
+ rtems_vector_number vector,
+ rtems_interrupt_attributes *attributes
+)
+{
+ return RTEMS_SUCCESSFUL;
+}
+
rtems_status_code bsp_interrupt_raise(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 6bf4620018..1d46203d90 100644
--- a/bsps/shared/irq/irq-enable-disable.c
+++ b/bsps/shared/irq/irq-enable-disable.c
@@ -6,8 +6,8 @@
* @ingroup bsp_interrupt
*
* @brief This source file contains the implementation of
- * rtems_interrupt_vector_is_enabled(), rtems_interrupt_vector_enable() and
- * rtems_interrupt_vector_disable().
+ * rtems_interrupt_get_attributes(), rtems_interrupt_vector_is_enabled(),
+ * rtems_interrupt_vector_enable() and rtems_interrupt_vector_disable().
*/
/*
@@ -37,6 +37,35 @@
#include <bsp/irq-generic.h>
+#include <string.h>
+
+rtems_status_code rtems_interrupt_get_attributes(
+ rtems_vector_number vector,
+ rtems_interrupt_attributes *attributes
+)
+{
+ rtems_status_code sc;
+
+ if ( attributes == NULL ) {
+ return RTEMS_INVALID_ADDRESS;
+ }
+
+ memset( attributes, 0, sizeof( *attributes ) );
+
+ if ( !bsp_interrupt_is_valid_vector( vector ) ) {
+ return RTEMS_INVALID_ID;
+ }
+
+ sc = bsp_interrupt_get_attributes( vector, attributes );
+#if !defined(RTEMS_SMP)
+ attributes->can_raise_on = attributes->can_raise;
+ attributes->can_get_affinity = true;
+ attributes->can_set_affinity = true;
+#endif
+
+ return sc;
+}
+
rtems_status_code rtems_interrupt_vector_is_enabled(
rtems_vector_number vector,
bool *enabled