summaryrefslogtreecommitdiffstats
path: root/cpukit/include/rtems/irq-extension.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-07-11 08:48:15 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-07-12 07:46:49 +0200
commita961e1980c1674679b1090bb24630cf3de8d6b48 (patch)
tree50c4a2072af466cb14e9a810cbccf25ea4de81ca /cpukit/include/rtems/irq-extension.h
parentCreate one interrupt server per processor (diff)
downloadrtems-a961e1980c1674679b1090bb24630cf3de8d6b48.tar.bz2
Add interrupt server suspend/resume
This mechanism can be used to safely move the interrupt server from one scheduler instance to another for example. Update #3071.
Diffstat (limited to 'cpukit/include/rtems/irq-extension.h')
-rw-r--r--cpukit/include/rtems/irq-extension.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/cpukit/include/rtems/irq-extension.h b/cpukit/include/rtems/irq-extension.h
index 0c72b6e086..4b49a1a078 100644
--- a/cpukit/include/rtems/irq-extension.h
+++ b/cpukit/include/rtems/irq-extension.h
@@ -362,6 +362,45 @@ rtems_status_code rtems_interrupt_server_handler_iterate(
);
/**
+ * @brief Suspends the specified interrupt server.
+ *
+ * A suspend request is sent to the specified interrupt server. This function
+ * waits for an acknowledgment from the specified interrupt server.
+ *
+ * This function must be called from thread context. It may block. Calling
+ * this function within the context of an interrupt server is undefined
+ * behaviour.
+ *
+ * @param[in] server_index The interrupt server index. Use
+ * @c RTEMS_INTERRUPT_SERVER_DEFAULT to specify the default server.
+ *
+ * @see rtems_interrupt_server_resume().
+ *
+ * @retval RTEMS_SUCCESSFUL Successful operation
+ * @retval RTEMS_INCORRECT_STATE The interrupt servers are not initialized.
+ * @retval RTEMS_INVALID_ID If the interrupt server index is invalid.
+ */
+rtems_status_code rtems_interrupt_server_suspend( uint32_t server_index );
+
+/**
+ * @brief Resumes the specified interrupt server.
+ *
+ * This function must be called from thread context. It may block. Calling
+ * this function within the context of an interrupt server is undefined
+ * behaviour.
+ *
+ * @param[in] server_index The interrupt server index. Use
+ * @c RTEMS_INTERRUPT_SERVER_DEFAULT to specify the default server.
+ *
+ * @see rtems_interrupt_server_suspend().
+ *
+ * @retval RTEMS_SUCCESSFUL Successful operation
+ * @retval RTEMS_INCORRECT_STATE The interrupt servers are not initialized.
+ * @retval RTEMS_INVALID_ID If the interrupt server index is invalid.
+ */
+rtems_status_code rtems_interrupt_server_resume( uint32_t server_index );
+
+/**
* @brief Initializes the specified interrupt server entry.
*
* @param[in] server_index The interrupt server index. Use