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 <aggarg@amazon.com>
Co-authored-by: Gavin Lambert <uecasm@users.noreply.github.com>
diff --git a/portable/GCC/MicroBlazeV9/port.c b/portable/GCC/MicroBlazeV9/port.c
index 5f0e261..7c605e0 100644
--- a/portable/GCC/MicroBlazeV9/port.c
+++ b/portable/GCC/MicroBlazeV9/port.c
@@ -327,7 +327,7 @@
portEXIT_CRITICAL();
}
- configASSERT( lReturn );
+ configASSERT( lReturn == pdPASS );
}
/*-----------------------------------------------------------*/
@@ -345,7 +345,7 @@
XIntc_Disable( &xInterruptControllerInstance, ucInterruptID );
}
- configASSERT( lReturn );
+ configASSERT( lReturn == pdPASS );
}
/*-----------------------------------------------------------*/
@@ -374,6 +374,24 @@
}
/*-----------------------------------------------------------*/
+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;