Interrupt Processor Affinity API Changes
Sebastian Huber
sebastian.huber at embedded-brains.de
Thu Nov 21 11:09:10 UTC 2013
Hello,
this is a proposal for an update of the Interrupt Manager Extension
http://www.rtems.org/onlinedocs/doxygen/cpukit/html/group__rtems__interrupt__extension.html
to allow set/get of processor affinities for interrupt vectors.
==== RTEMS API Changes ====
Each interrupt needs a processor affinity set in the RTEMS SMP configuration.
The rtems_interrupt_handler_install() function will not alter the processor
affinity set of the interrupt vector.
Two new functions should be added to alter and retrieve the processor affinity
sets of interrupt vectors.
/**
* @brief Sets the processor affinity set of an interrupt vector.
*
* @param[in] vector The interrupt vector number.
* @param[in] affinity_set_size Size of the specified affinity set buffer in
* bytes. This value must be positive.
* @param[in] affinity_set The new processor affinity set for the interrupt
* vector. This pointer must not be @c NULL. A set bit in the affinity set
* means that the interrupt vector can occur on this processor and a cleared
* bit means the opposite.
*
* @retval RTEMS_SUCCESSFUL Successful operation.
* @retval RTEMS_INVALID_ID The vector number is invalid.
* @retval RTEMS_INVALID_CPU_SET Invalid processor affinity set.
*/
rtems_status_code rtems_interrupt_set_affinity(
rtems_vector vector,
size_t affinity_set_size,
const cpu_set_t *affinity_set
);
/**
* @brief Gets the processor affinity set of an interrupt vector.
*
* @param[in] vector The interrupt vector number.
* @param[in] affinity_set_size Size of the specified affinity set buffer in
* bytes. This value must be positive.
* @param[out] affinity_set The current processor affinity set of the
* interrupt vector. This pointer must not be @c NULL. A set bit in the
* affinity set means that the interrupt vector can occur on this processor
* and a cleared bit means the opposite.
*
* @retval RTEMS_SUCCESSFUL Successful operation.
* @retval RTEMS_INVALID_ID The vector number is invalid.
* @retval RTEMS_INVALID_CPU_SET The affinity set buffer is too small for the
* current processor affinity set of the interrupt vector.
*/
rtems_status_code rtems_interrupt_get_affinity(
rtems_vector vector,
size_t affinity_set_size,
cpu_set_t *affinity_set
);
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber at embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
More information about the devel
mailing list