summaryrefslogtreecommitdiffstats
path: root/bsps/shared/irq/irq-affinity.c
diff options
context:
space:
mode:
Diffstat (limited to 'bsps/shared/irq/irq-affinity.c')
-rw-r--r--bsps/shared/irq/irq-affinity.c20
1 files changed, 12 insertions, 8 deletions
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;
}