diff options
author | Daniel Hellstrom <daniel@gaisler.com> | 2017-04-07 08:30:46 +0200 |
---|---|---|
committer | Daniel Hellstrom <daniel@gaisler.com> | 2017-05-02 12:34:45 +0200 |
commit | 7075fb1134b61f029e77b1428d7de4bb5631369b (patch) | |
tree | b3ef2cc8b5ba15316b77c1227943aac45c948e3f /cpukit/libdrvmgr/drvmgr.h | |
parent | leon, GR-CPCI-GR740: Added peripheral PCI driver (diff) | |
download | rtems-7075fb1134b61f029e77b1428d7de4bb5631369b.tar.bz2 |
drvmgr: ability to configure IRQ affinity
Diffstat (limited to 'cpukit/libdrvmgr/drvmgr.h')
-rw-r--r-- | cpukit/libdrvmgr/drvmgr.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/cpukit/libdrvmgr/drvmgr.h b/cpukit/libdrvmgr/drvmgr.h index 194de663b8..a8e1c8c311 100644 --- a/cpukit/libdrvmgr/drvmgr.h +++ b/cpukit/libdrvmgr/drvmgr.h @@ -14,6 +14,7 @@ #include <drvmgr/drvmgr_list.h> #include <stdint.h> #include <rtems/score/basedefs.h> +#include <rtems/score/smpimpl.h> #ifdef __cplusplus extern "C" { @@ -137,6 +138,10 @@ struct drvmgr_bus_ops { int (*int_clear)(struct drvmgr_dev *, int index); int (*int_mask)(struct drvmgr_dev *, int index); int (*int_unmask)(struct drvmgr_dev *, int index); +#ifdef RTEMS_SMP + int (*int_set_affinity)(struct drvmgr_dev *, int index, + Processor_mask cpus); +#endif /* Get Parameters */ int (*get_params)(struct drvmgr_dev *, struct drvmgr_bus_params *); @@ -628,6 +633,21 @@ extern int drvmgr_interrupt_mask( struct drvmgr_dev *dev, int index); +/*! Force masking/disable an interrupt on the interrupt controller, this is not normally performed + * since this will stop all other (shared) ISRs to be disabled until _unmask() is called. + * + * \param dev Device to mask interrupt for. + * \param index Index is used to identify the IRQ number if hardware has multiple IRQ sources. + * Normally Index is set to 0 to indicated the first and only IRQ source. + * A negative index is interpreted as a absolute bus IRQ number. + */ +#ifdef RTEMS_SMP +extern int drvmgr_interrupt_set_affinity( + struct drvmgr_dev *dev, + int index, + Processor_mask cpus); +#endif + /*! drvmgr_translate() translation options */ enum drvmgr_tr_opts { /* Translate CPU RAM Address (input) to DMA unit accessible address |