diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-07-11 09:08:15 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-07-12 07:46:52 +0200 |
commit | d1841406b3b16c35c84563557c4ed08db9d3a72f (patch) | |
tree | da583eead1af6871472a740facdf297d1e8747e2 /c/src/lib/libbsp/shared | |
parent | Add interrupt server suspend/resume (diff) | |
download | rtems-d1841406b3b16c35c84563557c4ed08db9d3a72f.tar.bz2 |
Add interrupt server set affinity
Update #3071.
Diffstat (limited to 'c/src/lib/libbsp/shared')
-rw-r--r-- | c/src/lib/libbsp/shared/src/irq-server.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/shared/src/irq-server.c b/c/src/lib/libbsp/shared/src/irq-server.c index 542276c601..61d31754c2 100644 --- a/c/src/lib/libbsp/shared/src/irq-server.c +++ b/c/src/lib/libbsp/shared/src/irq-server.c @@ -750,3 +750,36 @@ rtems_status_code rtems_interrupt_server_resume(uint32_t server_index) ); return RTEMS_SUCCESSFUL; } + +rtems_status_code rtems_interrupt_server_set_affinity( + uint32_t server_index, + size_t affinity_size, + const cpu_set_t *affinity, + rtems_task_priority priority +) +{ + rtems_status_code sc; + bsp_interrupt_server_context *s; + rtems_id scheduler; + + s = bsp_interrupt_server_get_context(server_index, &sc); + if (s == NULL) { + return sc; + } + + sc = rtems_scheduler_ident_by_processor_set( + affinity_size, + affinity, + &scheduler + ); + if (sc != RTEMS_SUCCESSFUL) { + return sc; + } + + sc = rtems_task_set_scheduler(s->server, scheduler, priority); + if (sc != RTEMS_SUCCESSFUL) { + return sc; + } + + return rtems_task_set_affinity(s->server, affinity_size, affinity); +} |