diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-12-09 15:49:53 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-03-24 11:10:48 +0100 |
commit | 40cc4f5009dd248d803ea25a0d1277951e9abb0b (patch) | |
tree | 34aa5a9d9354e1124ffc7d09b2f2e40820a0e47c /testsuites/validation/tx-interrupt.c | |
parent | libtest: Increase line length (diff) | |
download | rtems-40cc4f5009dd248d803ea25a0d1277951e9abb0b.tar.bz2 |
validation: Improve support library
Update #3716.
Diffstat (limited to 'testsuites/validation/tx-interrupt.c')
-rw-r--r-- | testsuites/validation/tx-interrupt.c | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/testsuites/validation/tx-interrupt.c b/testsuites/validation/tx-interrupt.c index e75c7a2aa0..16f1e18c47 100644 --- a/testsuites/validation/tx-interrupt.c +++ b/testsuites/validation/tx-interrupt.c @@ -45,6 +45,30 @@ #include <bsp/irq-generic.h> +static bool HasRequiredAttributes( + const rtems_interrupt_attributes *required, + const rtems_interrupt_attributes *actual +) +{ + if ( required == NULL ) { + return true; + } + + if ( required->can_get_affinity && !actual->can_get_affinity ) { + return false; + } + + if ( required->can_raise && !actual->can_raise ) { + return false; + } + + if ( required->can_raise_on && !actual->can_raise_on ) { + return false; + } + + return true; +} + rtems_vector_number GetValidInterruptVectorNumber( const rtems_interrupt_attributes *required ) @@ -57,11 +81,7 @@ rtems_vector_number GetValidInterruptVectorNumber( sc = rtems_interrupt_get_attributes( vector, &attr ); - if ( - sc == RTEMS_SUCCESSFUL && - ( required == NULL || - !required->can_get_affinity || attr.can_get_affinity ) - ) { + if ( sc == RTEMS_SUCCESSFUL && HasRequiredAttributes( required, &attr ) ) { break; } } @@ -69,7 +89,9 @@ rtems_vector_number GetValidInterruptVectorNumber( return vector; } -rtems_vector_number GetTestableInterruptVector( void ) +rtems_vector_number GetTestableInterruptVector( + const rtems_interrupt_attributes *required +) { rtems_vector_number vector; @@ -87,6 +109,10 @@ rtems_vector_number GetTestableInterruptVector( void ) continue; } + if ( !HasRequiredAttributes( required, &attr ) ) { + continue; + } + if ( HasInterruptVectorEntriesInstalled( vector ) ) { continue; } |