RTEMS
Files | Classes | Macros | Typedefs | Functions
Interrupt Manager Extension

Files

file  irq-extension.h
 Header file for the Interrupt Manager Extension.
 

Classes

struct  rtems_interrupt_server_action
 An interrupt server action. More...
 
struct  rtems_interrupt_server_control
 An interrupt server control. More...
 
struct  rtems_interrupt_server_config
 An interrupt server configuration. More...
 
struct  rtems_interrupt_server_entry
 An interrupt server entry. More...
 
struct  rtems_interrupt_server_request
 An interrupt server request. More...
 

Macros

#define RTEMS_INTERRUPT_UNIQUE   ((rtems_option) 0x00000001)
 Makes the interrupt handler unique. Prevents other handler from using the same interrupt vector.
 
#define RTEMS_INTERRUPT_SHARED   ((rtems_option) 0x00000000)
 Allows that this interrupt handler may share a common interrupt vector with other handler.
 
#define RTEMS_INTERRUPT_REPLACE   ((rtems_option) 0x00000002)
 Forces that this interrupt handler replaces the first handler with the same argument.
 
#define RTEMS_INTERRUPT_IS_UNIQUE(options)   ((options) & RTEMS_INTERRUPT_UNIQUE)
 Returns true if the interrupt handler unique option is set.
 
#define RTEMS_INTERRUPT_IS_SHARED(options)   (!RTEMS_INTERRUPT_IS_UNIQUE( options))
 Returns true if the interrupt handler shared option is set.
 
#define RTEMS_INTERRUPT_IS_REPLACE(options)   ((options) & RTEMS_INTERRUPT_REPLACE)
 Returns true if the interrupt handler replace option is set.
 
#define RTEMS_INTERRUPT_SERVER_DEFAULT   0
 The interrupt server index of the default interrupt server.
 

Typedefs

typedef void(* rtems_interrupt_handler) (void *)
 Interrupt handler routine type.
 
typedef void(* rtems_interrupt_per_handler_routine) (void *, const char *, rtems_option, rtems_interrupt_handler, void *)
 Interrupt handler iteration routine type. More...
 
typedef struct rtems_interrupt_server_action rtems_interrupt_server_action
 An interrupt server action. More...
 
typedef struct rtems_interrupt_server_control rtems_interrupt_server_control
 An interrupt server control. More...
 

Functions

rtems_status_code rtems_interrupt_handler_install (rtems_vector_number vector, const char *info, rtems_option options, rtems_interrupt_handler handler, void *arg)
 Installs the interrupt handler routine handler for the interrupt vector with number vector. More...
 
rtems_status_code rtems_interrupt_handler_remove (rtems_vector_number vector, rtems_interrupt_handler handler, void *arg)
 Removes the interrupt handler routine handler with argument arg for the interrupt vector with number vector. More...
 
rtems_status_code rtems_interrupt_handler_iterate (rtems_vector_number vector, rtems_interrupt_per_handler_routine routine, void *arg)
 Iterates over all installed interrupt handler of the interrupt vector with number vector. More...
 
rtems_status_code rtems_interrupt_set_affinity (rtems_vector_number vector, size_t affinity_size, const cpu_set_t *affinity)
 Sets the processor affinity set of an interrupt vector. More...
 
rtems_status_code rtems_interrupt_get_affinity (rtems_vector_number vector, size_t affinity_size, cpu_set_t *affinity)
 Gets the processor affinity set of an interrupt vector. More...
 
rtems_status_code rtems_interrupt_server_initialize (rtems_task_priority priority, size_t stack_size, rtems_mode modes, rtems_attribute attributes, uint32_t *server_count)
 Initializes the interrupt server tasks. More...
 
rtems_status_code rtems_interrupt_server_create (rtems_interrupt_server_control *control, const rtems_interrupt_server_config *config, uint32_t *server_index)
 Creates an interrupt server. More...
 
rtems_status_code rtems_interrupt_server_delete (uint32_t server_index)
 Destroys the interrupt server. More...
 
rtems_status_code rtems_interrupt_server_handler_install (uint32_t server_index, rtems_vector_number vector, const char *info, rtems_option options, rtems_interrupt_handler handler, void *arg)
 Installs the interrupt handler routine handler for the interrupt vector with number vector on the server server. More...
 
rtems_status_code rtems_interrupt_server_handler_remove (uint32_t server_index, rtems_vector_number vector, rtems_interrupt_handler handler, void *arg)
 Removes the interrupt handler routine handler with argument arg for the interrupt vector with number vector from the server server. More...
 
rtems_status_code rtems_interrupt_server_handler_iterate (uint32_t server_index, rtems_vector_number vector, rtems_interrupt_per_handler_routine routine, void *arg)
 Iterates over all interrupt handler of the interrupt vector with number vector which are installed on the interrupt server specified by server. More...
 
rtems_status_code rtems_interrupt_server_move (uint32_t source_server_index, rtems_vector_number vector, uint32_t destination_server_index)
 Moves the interrupt handlers installed on the specified source interrupt server to the destination interrupt server. More...
 
rtems_status_code rtems_interrupt_server_suspend (uint32_t server_index)
 Suspends the specified interrupt server. More...
 
rtems_status_code rtems_interrupt_server_resume (uint32_t server_index)
 Resumes the specified interrupt server. More...
 
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)
 Sets the processor affinity of the specified interrupt server. More...
 
rtems_status_code rtems_interrupt_server_entry_initialize (uint32_t server_index, rtems_interrupt_server_entry *entry)
 Initializes the specified interrupt server entry. More...
 
void rtems_interrupt_server_action_prepend (rtems_interrupt_server_entry *entry, rtems_interrupt_server_action *action, rtems_interrupt_handler handler, void *arg)
 Prepends the specified interrupt server action to the list of actions of the specified interrupt server entry. More...
 
void rtems_interrupt_server_entry_submit (rtems_interrupt_server_entry *entry)
 Submits the specified interrupt server entry so that its interrupt server actions can be invoked by the specified interrupt server. More...
 
rtems_status_code rtems_interrupt_server_entry_move (rtems_interrupt_server_entry *entry, uint32_t destination_server_index)
 Moves the interrupt server entry to the specified destination interrupt server. More...
 
void rtems_interrupt_server_entry_destroy (rtems_interrupt_server_entry *entry)
 Destroys the specified interrupt server entry. More...
 
rtems_status_code rtems_interrupt_server_request_initialize (uint32_t server_index, rtems_interrupt_server_request *request, rtems_interrupt_handler handler, void *arg)
 Initializes the specified interrupt server request. More...
 
static __inline__ void rtems_interrupt_server_request_set_vector (rtems_interrupt_server_request *request, rtems_vector_number vector)
 Sets the interrupt vector in the specified interrupt server request. More...
 
static __inline__ void rtems_interrupt_server_request_submit (rtems_interrupt_server_request *request)
 Submits the specified interrupt server request so that its interrupt server action can be invoked by the specified interrupt server. More...
 
static __inline__ void rtems_interrupt_server_request_destroy (rtems_interrupt_server_request *request)
 Destroys the specified interrupt server request. More...
 

Detailed Description

In addition to the Classic API interrupt handler with a handle are supported. You can also install multiple shared handler for one interrupt vector.

Typedef Documentation

◆ rtems_interrupt_per_handler_routine

typedef void(* rtems_interrupt_per_handler_routine) (void *, const char *, rtems_option, rtems_interrupt_handler, void *)

Interrupt handler iteration routine type.

See also
rtems_interrupt_handler_iterate()

Definition at line 169 of file irq-extension.h.

◆ rtems_interrupt_server_action

An interrupt server action.

This structure must be treated as an opaque data type. Members must not be accessed directly.

See also
rtems_interrupt_server_action_prepend().

◆ rtems_interrupt_server_control

An interrupt server control.

This structure must be treated as an opaque data type. Members must not be accessed directly.

See also
rtems_interrupt_server_create()

Function Documentation

◆ rtems_interrupt_get_affinity()

rtems_status_code rtems_interrupt_get_affinity ( rtems_vector_number  vector,
size_t  affinity_size,
cpu_set_t *  affinity 
)

Gets the processor affinity set of an interrupt vector.

Parameters
[in]vectorThe interrupt vector number.
[in]affinity_sizeThe storage size of the affinity set.
[out]affinity_setThe current processor affinity set for the interrupt vector. This pointer must not be NULL.
Return values
RTEMS_SUCCESSFULSuccessful operation.
RTEMS_INVALID_IDThe vector number is invalid.
RTEMS_INVALID_SIZEInvalid affinity set size.

Definition at line 592 of file irq-generic.c.

◆ rtems_interrupt_handler_install()

rtems_status_code rtems_interrupt_handler_install ( rtems_vector_number  vector,
const char *  info,
rtems_option  options,
rtems_interrupt_handler  handler,
void *  arg 
)

Installs the interrupt handler routine handler for the interrupt vector with number vector.

You can set one of the mutually exclusive options

with the options parameter for the interrupt handler.

The handler routine shall be called with argument arg when dispatched. The order in which the shared interrupt handlers are dispatched for one vector is BSP dependent.

If the option RTEMS_INTERRUPT_UNIQUE is set then it shall be ensured that this handler will be the only one for this vector.

If the option RTEMS_INTERRUPT_REPLACE is set then it shall be ensured that this handler will replace the first handler with the same argument for this vector if it exists, otherwise an error status shall be returned. A second handler with the same argument for this vector shall remain unchanged. The new handler will inherit the unique or shared option from the replaced handler.

You can provide an informative description info. This may be used for system debugging and status tools. The string has to be persistent during the handler life time.

This function may block.

Return values
RTEMS_SUCCESSFULSuccessful operation.
RTEMS_CALLED_FROM_ISRIf this function is called from interrupt context this shall be returned.
RTEMS_INVALID_ADDRESSIf the handler address is NULL this shall be returned.
RTEMS_INVALID_IDIf the vector number is out of range this shall be returned.
RTEMS_INVALID_NUMBERIf an option is not applicable this shall be returned.
RTEMS_RESOURCE_IN_USEIf the vector is already occupied with a unique handler this shall be returned. If a unique handler should be installed and there is already a handler installed this shall be returned.
RTEMS_TOO_MANYIf a handler with this argument is already installed for the vector this shall be returned.
RTEMS_UNSATISFIEDIf no handler exists to replace with the specified argument and vector this shall be returned.
RTEMS_IO_ERRORReserved for board support package specific error conditions.

Definition at line 520 of file irq-generic.c.

◆ rtems_interrupt_handler_iterate()

rtems_status_code rtems_interrupt_handler_iterate ( rtems_vector_number  vector,
rtems_interrupt_per_handler_routine  routine,
void *  arg 
)

Iterates over all installed interrupt handler of the interrupt vector with number vector.

For each installed handler of the vector the function routine will be called with the supplied argument arg and the handler information, options, routine and argument.

This function is intended for system information and diagnostics.

This function may block. Never install or remove an interrupt handler within the iteration routine. This may result in a deadlock.

Return values
RTEMS_SUCCESSFULSuccessful operation.
RTEMS_CALLED_FROM_ISRIf this function is called from interrupt context this shall be returned.
RTEMS_INVALID_IDIf the vector number is out of range this shall be returned.
RTEMS_IO_ERRORReserved for board support package specific error conditions.

Definition at line 540 of file irq-generic.c.

◆ rtems_interrupt_handler_remove()

rtems_status_code rtems_interrupt_handler_remove ( rtems_vector_number  vector,
rtems_interrupt_handler  handler,
void *  arg 
)

Removes the interrupt handler routine handler with argument arg for the interrupt vector with number vector.

This function may block.

Return values
RTEMS_SUCCESSFULSuccessful operation.
RTEMS_CALLED_FROM_ISRIf this function is called from interrupt context this shall be returned.
RTEMS_INVALID_ADDRESSIf the handler address is NULL this shall be returned.
RTEMS_INVALID_IDIf the vector number is out of range this shall be returned.
RTEMS_UNSATISFIEDIf the handler with its argument is not installed for the vector this shall be returned.
RTEMS_IO_ERRORReserved for board support package specific error conditions.

Definition at line 531 of file irq-generic.c.

◆ rtems_interrupt_server_action_prepend()

void rtems_interrupt_server_action_prepend ( rtems_interrupt_server_entry entry,
rtems_interrupt_server_action action,
rtems_interrupt_handler  handler,
void *  arg 
)

Prepends the specified interrupt server action to the list of actions of the specified interrupt server entry.

No error checking is performed.

Parameters
[in]entryThe interrupt server entry to prepend the interrupt server action. It must have been initialized via rtems_interrupt_server_entry_initialize().
[in]actionThe interrupt server action to prepend the list of actions of the entry.
[in]handlerThe interrupt handler for the action.
[in]argThe interrupt handler argument for the action.

◆ rtems_interrupt_server_create()

rtems_status_code rtems_interrupt_server_create ( rtems_interrupt_server_control control,
const rtems_interrupt_server_config config,
uint32_t *  server_index 
)

Creates an interrupt server.

This function may block.

Parameters
[out]controlis the interrupt server control. The ownership of this structure is transferred from the caller of this function to the interrupt server management.
configis the interrupt server configuration.
[out]server_indexis the pointer to a server index variable. The index of the built interrupt server will be stored in the referenced variable if the operation was successful.
Return values
RTEMS_SUCCESSFULThe operation was successful.
Returns
The function uses rtems_task_create(). If this operation is not successful, then its status code is returned.
See also
rtems_interrupt_server_initialize() and rtems_interrupt_server_delete().

◆ rtems_interrupt_server_delete()

rtems_status_code rtems_interrupt_server_delete ( uint32_t  server_index)

Destroys the interrupt server.

This function may block.

The interrupt server deletes itself, so after the return of the function the interrupt server may be still in the termination process depending on the task priorities of the system.

Parameters
server_indexis the index of the interrupt server to destroy. Use RTEMS_INTERRUPT_SERVER_DEFAULT to specify the default server.
Return values
RTEMS_SUCCESSFULThe operation was successful.
RTEMS_INVALID_IDThe interrupt server index was invalid.
See also
rtems_interrupt_server_create()

◆ rtems_interrupt_server_entry_destroy()

void rtems_interrupt_server_entry_destroy ( rtems_interrupt_server_entry entry)

Destroys the specified interrupt server entry.

This function must be called from thread context. It may block. Calling this function within the context of an interrupt server is undefined behaviour. No error checking is performed.

Parameters
[in]entryThe interrupt server entry to destroy. It must have been initialized via rtems_interrupt_server_entry_initialize().

◆ rtems_interrupt_server_entry_initialize()

rtems_status_code rtems_interrupt_server_entry_initialize ( uint32_t  server_index,
rtems_interrupt_server_entry entry 
)

Initializes the specified interrupt server entry.

Parameters
[in]server_indexThe interrupt server index. Use RTEMS_INTERRUPT_SERVER_DEFAULT to specify the default server.
[in]entryThe interrupt server entry to initialize.
See also
rtems_interrupt_server_action_prepend().
Return values
RTEMS_SUCCESSFULSuccessful operation.
RTEMS_INCORRECT_STATEThe interrupt servers are not initialized.
RTEMS_INVALID_IDIf the interrupt server index is invalid.

◆ rtems_interrupt_server_entry_move()

rtems_status_code rtems_interrupt_server_entry_move ( rtems_interrupt_server_entry entry,
uint32_t  destination_server_index 
)

Moves the interrupt server entry to the specified destination interrupt server.

Calling this function concurrently with rtems_interrupt_server_entry_submit() with the same entry or while the entry is enqueued on the previous interrupt server is undefined behaviour.

Parameters
[in,out]entryThe interrupt server entry. It must have be initialized before the call to this function.
destination_server_indexThe destination interrupt server index. Use RTEMS_INTERRUPT_SERVER_DEFAULT to specify the default server.
Return values
RTEMS_SUCCESSFULSuccessful operation
RTEMS_INCORRECT_STATEThe interrupt servers are not initialized.
RTEMS_INVALID_IDThe destination interrupt server index is invalid.

◆ rtems_interrupt_server_entry_submit()

void rtems_interrupt_server_entry_submit ( rtems_interrupt_server_entry entry)

Submits the specified interrupt server entry so that its interrupt server actions can be invoked by the specified interrupt server.

This function may be used to do a two-step interrupt processing. The first step is done in interrupt context which calls this function. The second step is then done in the context of the interrupt server.

This function may be called from thread or interrupt context. It does not block. No error checking is performed.

Parameters
[in]entryThe interrupt server entry must be initialized before the first call to this function via rtems_interrupt_server_entry_initialize() and rtems_interrupt_server_action_prepend(). The entry and its actions must not be modified between calls to this function. Use rtems_interrupt_server_entry_destroy() to destroy an entry in use.

◆ rtems_interrupt_server_handler_install()

rtems_status_code rtems_interrupt_server_handler_install ( uint32_t  server_index,
rtems_vector_number  vector,
const char *  info,
rtems_option  options,
rtems_interrupt_handler  handler,
void *  arg 
)

Installs the interrupt handler routine handler for the interrupt vector with number vector on the server server.

The handler routine will be executed on the corresponding interrupt server task. A server index server_index of RTEMS_INTERRUPT_SERVER_DEFAULT may be used to install the handler on the default server.

This function may block.

See also
rtems_interrupt_handler_install().
Return values
RTEMS_SUCCESSFULSuccessful operation.
RTEMS_INCORRECT_STATEThe interrupt servers are not initialized.
RTEMS_INVALID_IDIf the interrupt server index is invalid.
*For other errors see rtems_interrupt_handler_install().

◆ rtems_interrupt_server_handler_iterate()

rtems_status_code rtems_interrupt_server_handler_iterate ( uint32_t  server_index,
rtems_vector_number  vector,
rtems_interrupt_per_handler_routine  routine,
void *  arg 
)

Iterates over all interrupt handler of the interrupt vector with number vector which are installed on the interrupt server specified by server.

A server index server_index of RTEMS_INTERRUPT_SERVER_DEFAULT may be used to specify the default server.

See also
rtems_interrupt_handler_iterate()
Return values
RTEMS_SUCCESSFULSuccessful operation.
RTEMS_INCORRECT_STATEThe interrupt servers are not initialized.
RTEMS_INVALID_IDIf the interrupt server index is invalid.
*For other errors see rtems_interrupt_handler_iterate().

◆ rtems_interrupt_server_handler_remove()

rtems_status_code rtems_interrupt_server_handler_remove ( uint32_t  server_index,
rtems_vector_number  vector,
rtems_interrupt_handler  handler,
void *  arg 
)

Removes the interrupt handler routine handler with argument arg for the interrupt vector with number vector from the server server.

A server index server_index of RTEMS_INTERRUPT_SERVER_DEFAULT may be used to remove the handler from the default server.

This function may block.

See also
rtems_interrupt_handler_remove().
Return values
RTEMS_SUCCESSFULSuccessful operation.
RTEMS_INCORRECT_STATEThe interrupt servers are not initialized.
RTEMS_INVALID_IDIf the interrupt server index is invalid.
*For other errors see rtems_interrupt_handler_remove().

◆ rtems_interrupt_server_initialize()

rtems_status_code rtems_interrupt_server_initialize ( rtems_task_priority  priority,
size_t  stack_size,
rtems_mode  modes,
rtems_attribute  attributes,
uint32_t *  server_count 
)

Initializes the interrupt server tasks.

This function tries to create an interrupt server task for each processor in the system. The tasks will have the priority priority, the stack size stack_size, the modes modes and the attributes attributes. The count of server tasks will be returned in server_count. Interrupt handlers can be installed on an interrupt server with rtems_interrupt_server_handler_install() and removed with rtems_interrupt_server_handler_remove() using a server index. In case of an interrupt, the request will be forwarded to the interrupt server. The handlers are executed within the interrupt server context. If one handler blocks on something this may delay the processing of other handlers.

The server count pointer server_count may be NULL.

The task name of interrupt servers created by this function is rtems_build_name( 'I', 'R', 'Q', 'S' ).

This function may block.

Return values
RTEMS_SUCCESSFULThe operation was successful.
RTEMS_INCORRECT_STATEThe interrupt servers were already initialized.
Returns
The function uses rtems_task_create(). If this operation is not successful, then its status code is returned.
See also
rtems_interrupt_server_create() and rtems_interrupt_server_delete().

◆ rtems_interrupt_server_move()

rtems_status_code rtems_interrupt_server_move ( uint32_t  source_server_index,
rtems_vector_number  vector,
uint32_t  destination_server_index 
)

Moves the interrupt handlers installed on the specified source interrupt server to the destination 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.

Parameters
[in]source_server_indexThe source interrupt server index. Use RTEMS_INTERRUPT_SERVER_DEFAULT to specify the default server.
[in]vectorThe interrupt vector number.
[in]destination_server_indexThe destination interrupt server index. Use RTEMS_INTERRUPT_SERVER_DEFAULT to specify the default server.
Return values
RTEMS_SUCCESSFULSuccessful operation
RTEMS_INCORRECT_STATEThe interrupt servers are not initialized.
RTEMS_INVALID_IDThe destination interrupt server index is invalid.
RTEMS_INVALID_IDThe vector number is invalid.
RTEMS_INVALID_IDThe destination interrupt server index is invalid.

◆ rtems_interrupt_server_request_destroy()

static __inline__ void rtems_interrupt_server_request_destroy ( rtems_interrupt_server_request request)
static

Destroys the specified interrupt server request.

This function must be called from thread context. It may block. Calling this function within the context of an interrupt server is undefined behaviour. No error checking is performed.

Parameters
[in]requestThe interrupt server request to destroy. It must have been initialized via rtems_interrupt_server_request_initialize().

Definition at line 794 of file irq-extension.h.

◆ rtems_interrupt_server_request_initialize()

rtems_status_code rtems_interrupt_server_request_initialize ( uint32_t  server_index,
rtems_interrupt_server_request request,
rtems_interrupt_handler  handler,
void *  arg 
)

Initializes the specified interrupt server request.

Parameters
[in]server_indexThe interrupt server index. Use RTEMS_INTERRUPT_SERVER_DEFAULT to specify the default server.
[in]requestThe interrupt server request to initialize.
[in]handlerThe interrupt handler for the request action.
[in]argThe interrupt handler argument for the request action.
Return values
RTEMS_SUCCESSFULSuccessful operation.
RTEMS_INCORRECT_STATEThe interrupt servers are not initialized.
RTEMS_INVALID_IDIf the interrupt server index is invalid.
See also
rtems_interrupt_server_request_set_vector().

◆ rtems_interrupt_server_request_set_vector()

static __inline__ void rtems_interrupt_server_request_set_vector ( rtems_interrupt_server_request request,
rtems_vector_number  vector 
)
static

Sets the interrupt vector in the specified interrupt server request.

By default, the interrupt vector of an interrupt server request is set to a special value which is outside the range of vectors supported by the interrupt controller hardware.

Calls to rtems_interrupt_server_request_submit() will disable the interrupt vector of the request. After processing of the request by the interrupt server the interrupt vector will be enabled again.

Parameters
[in]requestThe initialized interrupt server request.
[in]vectorThe interrupt vector number.
See also
rtems_interrupt_server_request_initialize().

Definition at line 752 of file irq-extension.h.

◆ rtems_interrupt_server_request_submit()

static __inline__ void rtems_interrupt_server_request_submit ( rtems_interrupt_server_request request)
static

Submits the specified interrupt server request so that its interrupt server action can be invoked by the specified interrupt server.

This function may be used to do a two-step interrupt processing. The first step is done in interrupt context which calls this function. The second step is then done in the context of the interrupt server.

This function may be called from thread or interrupt context. It does not block. No error checking is performed.

Parameters
[in]requestThe interrupt server request must be initialized before the first call to this function via rtems_interrupt_server_request_initialize(). The request must not be modified between calls to this function. Use rtems_interrupt_server_request_destroy() to destroy a request in use.

Definition at line 777 of file irq-extension.h.

◆ rtems_interrupt_server_resume()

rtems_status_code rtems_interrupt_server_resume ( uint32_t  server_index)

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.

Parameters
[in]server_indexThe interrupt server index. Use RTEMS_INTERRUPT_SERVER_DEFAULT to specify the default server.
See also
rtems_interrupt_server_suspend().
Return values
RTEMS_SUCCESSFULSuccessful operation
RTEMS_INCORRECT_STATEThe interrupt servers are not initialized.
RTEMS_INVALID_IDIf the interrupt server index is invalid.

◆ rtems_interrupt_server_set_affinity()

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 
)

Sets the processor affinity of the specified interrupt server.

The scheduler is set determined by the highest numbered processor in the specified affinity set.

This operation is only reliable in case the specified interrupt was suspended via rtems_interrupt_server_suspend().

Parameters
[in]server_indexThe interrupt server index. Use RTEMS_INTERRUPT_SERVER_DEFAULT to specify the default server.
[in]affinity_sizeThe storage size of the affinity set.
[in]affinityThe desired processor affinity set for the specified interrupt server.
[in]priorityThe task priority with respect to the corresponding scheduler instance.
Return values
RTEMS_SUCCESSFULSuccessful operation
RTEMS_INCORRECT_STATEThe interrupt servers are not initialized.
RTEMS_INVALID_IDIf the interrupt server index is invalid.
RTEMS_INVALID_SIZEInvalid affinity set size.
RTEMS_INVALID_NAMEThe affinity set contains no online processor.
RTEMS_INCORRECT_STATEThe highest numbered online processor in the specified affinity set is not owned by a scheduler.
RTEMS_INVALID_PRIORITYInvalid priority.
RTEMS_RESOURCE_IN_USEThe interrupt server owns resources which deny a scheduler change.
RTEMS_INVALID_NUMBERInvalid processor affinity set.

◆ rtems_interrupt_server_suspend()

rtems_status_code rtems_interrupt_server_suspend ( uint32_t  server_index)

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.

Parameters
[in]server_indexThe interrupt server index. Use RTEMS_INTERRUPT_SERVER_DEFAULT to specify the default server.
See also
rtems_interrupt_server_resume().
Return values
RTEMS_SUCCESSFULSuccessful operation
RTEMS_INCORRECT_STATEThe interrupt servers are not initialized.
RTEMS_INVALID_IDIf the interrupt server index is invalid.

◆ rtems_interrupt_set_affinity()

rtems_status_code rtems_interrupt_set_affinity ( rtems_vector_number  vector,
size_t  affinity_size,
const cpu_set_t *  affinity 
)

Sets the processor affinity set of an interrupt vector.

Parameters
[in]vectorThe interrupt vector number.
[in]affinity_sizeThe storage size of the affinity set.
[in]affinity_setThe new processor affinity set for the interrupt vector. This pointer must not be NULL.
Return values
RTEMS_SUCCESSFULSuccessful operation.
RTEMS_INVALID_IDThe vector number is invalid.
RTEMS_INVALID_SIZEInvalid affinity set size.
RTEMS_INVALID_NUMBERInvalid processor affinity set.

Definition at line 568 of file irq-generic.c.