From dc9c034c854e3a6e004062a84806a07af6008a34 Mon Sep 17 00:00:00 2001 From: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com> Date: Wed, 3 Aug 2022 13:45:27 -0700 Subject: [PATCH] Add vPortRemoveInterruptHandler API (#533) * Add xPortRemoveInterruptHandler API This API is added to the MicroBlazeV9 port. It enables the application writer to remove an interrupt handler. This was originally contributed in this PR - https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/523 * Change API signature to return void This makes the API similar to vPortDisableInterrupt. Signed-off-by: Gaurav Aggarwal Co-authored-by: Gavin Lambert --- portable/GCC/MicroBlazeV9/port.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/portable/GCC/MicroBlazeV9/port.c b/portable/GCC/MicroBlazeV9/port.c index 5f0e2616d..7c605e003 100644 --- a/portable/GCC/MicroBlazeV9/port.c +++ b/portable/GCC/MicroBlazeV9/port.c @@ -327,7 +327,7 @@ int32_t lReturn; portEXIT_CRITICAL(); } - configASSERT( lReturn ); + configASSERT( lReturn == pdPASS ); } /*-----------------------------------------------------------*/ @@ -345,7 +345,7 @@ int32_t lReturn; XIntc_Disable( &xInterruptControllerInstance, ucInterruptID ); } - configASSERT( lReturn ); + configASSERT( lReturn == pdPASS ); } /*-----------------------------------------------------------*/ @@ -374,6 +374,24 @@ int32_t lReturn; } /*-----------------------------------------------------------*/ +void vPortRemoveInterruptHandler( uint8_t ucInterruptID ) +{ +int32_t lReturn; + + /* An API function is provided to remove an interrupt handler because the + interrupt controller instance variable is private to this file. */ + + lReturn = prvEnsureInterruptControllerIsInitialised(); + + if( lReturn == pdPASS ) + { + XIntc_Disconnect( &xInterruptControllerInstance, ucInterruptID ); + } + + configASSERT( lReturn == pdPASS ); +} +/*-----------------------------------------------------------*/ + static int32_t prvEnsureInterruptControllerIsInitialised( void ) { static int32_t lInterruptControllerInitialised = pdFALSE;