summaryrefslogtreecommitdiffstats
path: root/bsps/shared
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-07-06 18:39:57 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-07-26 19:57:31 +0200
commit23ec04c48c522b0beaa3d6b91f19770d78000ce1 (patch)
treed60972290fd30c649873be1e9f071a14984d07ac /bsps/shared
parentbsps/irq: bsp_interrupt_vector_disable() (diff)
downloadrtems-23ec04c48c522b0beaa3d6b91f19770d78000ce1.tar.bz2
bsps/irq: bsp_interrupt_get_affinity()
Return a status code for bsp_interrupt_get_affinity(). Update #3269.
Diffstat (limited to 'bsps/shared')
-rw-r--r--bsps/shared/dev/irq/arm-gicv2.c3
-rw-r--r--bsps/shared/dev/irq/arm-gicv3.c3
-rw-r--r--bsps/shared/irq/irq-affinity.c20
3 files changed, 16 insertions, 10 deletions
diff --git a/bsps/shared/dev/irq/arm-gicv2.c b/bsps/shared/dev/irq/arm-gicv2.c
index 7094db718e..14d0d9d886 100644
--- a/bsps/shared/dev/irq/arm-gicv2.c
+++ b/bsps/shared/dev/irq/arm-gicv2.c
@@ -303,7 +303,7 @@ void bsp_interrupt_set_affinity(
gic_id_set_targets(dist, vector, targets);
}
-void bsp_interrupt_get_affinity(
+rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
)
@@ -312,6 +312,7 @@ void bsp_interrupt_get_affinity(
uint8_t targets = gic_id_get_targets(dist, vector);
_Processor_mask_From_uint32_t(affinity, targets, 0);
+ return RTEMS_SUCCESSFUL;
}
void arm_gic_trigger_sgi(rtems_vector_number vector, uint32_t targets)
diff --git a/bsps/shared/dev/irq/arm-gicv3.c b/bsps/shared/dev/irq/arm-gicv3.c
index 227f3ebac9..13efc7f107 100644
--- a/bsps/shared/dev/irq/arm-gicv3.c
+++ b/bsps/shared/dev/irq/arm-gicv3.c
@@ -410,7 +410,7 @@ void bsp_interrupt_set_affinity(
gic_id_set_targets(dist, vector, targets);
}
-void bsp_interrupt_get_affinity(
+rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
)
@@ -419,6 +419,7 @@ void bsp_interrupt_get_affinity(
uint8_t targets = gic_id_get_targets(dist, vector);
_Processor_mask_From_uint32_t(affinity, targets, 0);
+ return RTEMS_SUCCESSFUL;
}
void arm_gic_trigger_sgi(rtems_vector_number vector, uint32_t targets)
diff --git a/bsps/shared/irq/irq-affinity.c b/bsps/shared/irq/irq-affinity.c
index d2214cf6ec..ecc2516a26 100644
--- a/bsps/shared/irq/irq-affinity.c
+++ b/bsps/shared/irq/irq-affinity.c
@@ -72,6 +72,7 @@ rtems_status_code rtems_interrupt_get_affinity(
cpu_set_t *affinity
)
{
+ rtems_status_code sc;
Processor_mask set;
Processor_mask_Copy_status status;
@@ -79,20 +80,23 @@ rtems_status_code rtems_interrupt_get_affinity(
return RTEMS_INVALID_ADDRESS;
}
- if (!bsp_interrupt_is_valid_vector(vector)) {
- return RTEMS_INVALID_ID;
- }
+ _Processor_mask_Zero( &set );
+ if ( bsp_interrupt_is_valid_vector( vector ) ) {
#if defined(RTEMS_SMP)
- bsp_interrupt_get_affinity(vector, &set);
+ sc = bsp_interrupt_get_affinity( vector, &set );
#else
- _Processor_mask_From_index(&set, 0);
+ _Processor_mask_From_index( &set, 0 );
+ sc = RTEMS_SUCCESSFUL;
#endif
+ } else {
+ sc = RTEMS_INVALID_ID;
+ }
- status = _Processor_mask_To_cpu_set_t(&set, affinity_size, affinity);
- if (status != PROCESSOR_MASK_COPY_LOSSLESS) {
+ status = _Processor_mask_To_cpu_set_t( &set, affinity_size, affinity );
+ if ( sc == RTEMS_SUCCESSFUL && status != PROCESSOR_MASK_COPY_LOSSLESS ) {
return RTEMS_INVALID_SIZE;
}
- return RTEMS_SUCCESSFUL;
+ return sc;
}