diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-09-20 09:16:17 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-09-20 09:22:46 +0200 |
commit | 33ed4123c0f3e6193beb8d6a22d46c9983d0df79 (patch) | |
tree | 1fd0434cef45c7412f9ebc581eb4ad76ecf9d0b0 /bsps/shared | |
parent | bsps/beagle: register i2c device at initialization (diff) | |
download | rtems-33ed4123c0f3e6193beb8d6a22d46c9983d0df79.tar.bz2 |
rtems: Add rtems_interrupt_server_entry_move()
The use case for this function is the libbsd. In FreeBSD, the interrupt
setup and binding to a processor is done in two steps. Message
based interrupts like PCIe MSI and MSI-X interrupts can be implemented
through interrupt server entries. They are setup at the default
interrupt server and may optionally move to an interrupt server bound to
a specific processor.
Diffstat (limited to 'bsps/shared')
-rw-r--r-- | bsps/shared/irq/irq-server.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/bsps/shared/irq/irq-server.c b/bsps/shared/irq/irq-server.c index fad0fc661f..0e62d76acb 100644 --- a/bsps/shared/irq/irq-server.c +++ b/bsps/shared/irq/irq-server.c @@ -638,6 +638,23 @@ void rtems_interrupt_server_entry_submit( bsp_interrupt_server_trigger(entry); } +rtems_status_code rtems_interrupt_server_entry_move( + rtems_interrupt_server_entry *entry, + uint32_t destination_server_index +) +{ + rtems_status_code sc; + bsp_interrupt_server_context *s; + + s = bsp_interrupt_server_get_context(destination_server_index, &sc); + if (s == NULL) { + return sc; + } + + entry->server = s; + return RTEMS_SUCCESSFUL; +} + static void bsp_interrupt_server_entry_synchronize_helper(void *arg) { bsp_interrupt_server_helper_data *hd = arg; |