From 23ec04c48c522b0beaa3d6b91f19770d78000ce1 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 6 Jul 2021 18:39:57 +0200 Subject: bsps/irq: bsp_interrupt_get_affinity() Return a status code for bsp_interrupt_get_affinity(). Update #3269. --- bsps/shared/dev/irq/arm-gicv2.c | 3 ++- bsps/shared/dev/irq/arm-gicv3.c | 3 ++- bsps/shared/irq/irq-affinity.c | 20 ++++++++++++-------- 3 files changed, 16 insertions(+), 10 deletions(-) (limited to 'bsps/shared') 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; } -- cgit v1.2.3