bsps: Move declarations to <bsp/irq-generic.h>

Move declarations of bsp_interrupt_get_affinity() and
bsp_interrupt_set_affinity() to <bsp/irq-generic.h>.  Canonicalize the
<bsp/irq.h> includes.

Implement bsp_interrupt_get_affinity() and bsp_interrupt_set_affinity() only if
needed (usually RTEMS_SMP).

Provide stub implementations for i386 to fix build errors.
This commit is contained in:
Sebastian Huber
2024-03-20 15:54:33 +01:00
parent 1ef5fa07aa
commit 5b0e355ed7
27 changed files with 160 additions and 187 deletions

View File

@@ -23,14 +23,8 @@
#ifndef ASM
#include <rtems.h>
#include <rtems/irq.h>
#include <rtems/irq-extension.h>
#include <dev/irq/arm-gic-irq.h>
#if defined(RTEMS_SMP)
#include <rtems/score/processormask.h>
#endif
/**
* @defgroup raspberrypi_interrupt Interrrupt Support
*
@@ -83,27 +77,5 @@
#define BSP_IRQ_COUNT (BCM2835_INTC_TOTAL_IRQ)
#if defined(RTEMS_SMP)
static inline rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
)
{
(void) vector;
(void) affinity;
return RTEMS_UNSATISFIED;
}
static inline rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
)
{
(void) vector;
_Processor_mask_From_index( affinity, 0 );
return RTEMS_UNSATISFIED;
}
#endif
#endif /* ASM */
#endif /* LIBBSP_ARM_RASPBERRYPI_IRQ_H */

View File

@@ -22,12 +22,6 @@
#ifndef ASM
#include <rtems.h>
#include <rtems/irq.h>
#include <rtems/irq-extension.h>
#if defined(RTEMS_SMP)
#include <rtems/score/processormask.h>
#endif
/**
* @defgroup raspberrypi_interrupt Interrrupt Support
@@ -78,27 +72,5 @@
#define BSP_IRQ_COUNT (BCM2835_INTC_TOTAL_IRQ)
#if defined(RTEMS_SMP)
static inline rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
)
{
(void) vector;
(void) affinity;
return RTEMS_UNSATISFIED;
}
static inline rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
)
{
(void) vector;
_Processor_mask_From_index( affinity, 0 );
return RTEMS_UNSATISFIED;
}
#endif
#endif /* ASM */
#endif /* LIBBSP_ARM_RASPBERRYPI_IRQ_H */

View File

@@ -19,7 +19,6 @@
#include <rtems/score/armv4.h>
#include <bsp.h>
#include <bsp/irq.h>
#include <bsp/irq-generic.h>
#include <bsp/raspberrypi.h>
#include <bsp/linker-symbols.h>
@@ -207,6 +206,28 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL;
}
#if defined(RTEMS_SMP)
rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
)
{
(void) vector;
_Processor_mask_From_index( affinity, 0 );
return RTEMS_UNSATISFIED;
}
rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
)
{
(void) vector;
(void) affinity;
return RTEMS_UNSATISFIED;
}
#endif
void bsp_interrupt_handler_default(rtems_vector_number vector)
{
printk("spurious interrupt: %" PRIdrtems_vector_number "\n", vector);

View File

@@ -295,6 +295,17 @@ rtems_status_code bsp_interrupt_raise(rtems_vector_number vector)
return RTEMS_UNSATISFIED;
}
#if defined(RTEMS_SMP)
rtems_status_code bsp_interrupt_raise_on(
rtems_vector_number vector,
uint32_t cpu_index
)
{
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
return RTEMS_UNSATISFIED;
}
#endif
rtems_status_code bsp_interrupt_clear(rtems_vector_number vector)
{
bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
@@ -326,6 +337,28 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL;
}
#if defined(RTEMS_SMP)
rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
)
{
(void) vector;
_Processor_mask_From_index( affinity, 0 );
return RTEMS_UNSATISFIED;
}
rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
)
{
(void) vector;
(void) affinity;
return RTEMS_UNSATISFIED;
}
#endif
void bsp_interrupt_facility_initialize(void)
{
int i;

View File

@@ -12,7 +12,7 @@
/*
* Copyright (C) 2016 Chris Johns <chrisj@rtems.org>
*
* Copyright (C) 2008, 2021 embedded brains GmbH & Co. KG
* Copyright (C) 2008, 2024 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -47,6 +47,7 @@
#include <rtems/irq-extension.h>
#include <rtems/score/assert.h>
#include <rtems/score/processormask.h>
#ifdef RTEMS_SMP
#include <rtems/score/atomic.h>
@@ -372,6 +373,55 @@ rtems_status_code bsp_interrupt_raise_on(
*/
rtems_status_code bsp_interrupt_clear( rtems_vector_number vector );
/**
* @brief Gets the processor affinity set of the interrupt vector.
*
* The function may have no implementation in uniprocessor configurations.
*
* @param vector is the interrupt vector number.
*
* @param[out] affinity is the pointer to a Processor_mask object. When the
* directive call is successful, the processor affinity set of the interrupt
* vector will be stored in this object. A set bit in the processor set
* means that the corresponding processor is in the processor affinity set of
* the interrupt vector, otherwise the bit is cleared.
*
* @retval ::RTEMS_SUCCESSFUL The requested operation was successful.
*
* @retval ::RTEMS_UNSATISFIED The request to get the processor affinity of the
* interrupt vector has not been satisfied.
*/
rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
);
/**
* @brief Sets the processor affinity set of the interrupt vector.
*
* The function may have no implementation in uniprocessor configurations.
*
* @param vector is the interrupt vector number. It shall be valid.
*
* @param affinity is the pointer to a Processor_mask object. The processor set
* defines the new processor affinity set of the interrupt vector. A set bit
* in the processor set means that the corresponding processor shall be in
* the processor affinity set of the interrupt vector, otherwise the bit
* shall be cleared.
*
* @retval ::RTEMS_SUCCESSFUL The requested operation was successful.
*
* @retval ::RTEMS_INVALID_NUMBER The referenced processor set was not a valid
* new processor affinity set for the interrupt vector.
*
* @retval ::RTEMS_UNSATISFIED The request to set the processor affinity of the
* interrupt vector has not been satisfied.
*/
rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
);
#if defined(RTEMS_SMP)
/**
* @brief Handles a spurious interrupt.

View File

@@ -38,7 +38,6 @@
#include <bsp.h>
#include <dev/irq/arm-gic.h>
#include <rtems/score/processormask.h>
#ifdef __cplusplus
extern "C" {
@@ -85,16 +84,6 @@ rtems_status_code arm_gic_irq_get_group(
gic_group *group
);
rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
);
rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
);
void arm_gic_trigger_sgi(rtems_vector_number vector, uint32_t targets);
static inline rtems_status_code arm_gic_irq_generate_software_irq(

View File

@@ -40,7 +40,7 @@
#include <bsp.h>
#include <bsp/fatal.h>
#include <bsp/qoriq.h>
#include <bsp/irq.h>
#include <bsp/irq-generic.h>
static struct timecounter qoriq_clock_tc;

View File

@@ -37,7 +37,6 @@
#define LIBBSP_POWERPC_QORIQ_IRQ_H
#include <bsp.h>
#include <rtems/score/processormask.h>
#ifdef __cplusplus
extern "C" {
@@ -409,16 +408,6 @@ rtems_status_code qoriq_pic_set_priority(
int *old_priority
);
rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
);
rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
);
rtems_status_code qoriq_pic_msi_allocate(rtems_vector_number *vector);
rtems_status_code qoriq_pic_msi_free(rtems_vector_number vector);

View File

@@ -43,7 +43,6 @@
#include <asm/epapr_hcalls.h>
#include <bsp.h>
#include <bsp/irq.h>
#include <bsp/irq-generic.h>
#include <bsp/vectors.h>
#include <bsp/utility.h>

View File

@@ -29,9 +29,6 @@
#define LIBBSP_POWERPC_T32MPPC_IRQ_H
#include <rtems.h>
#include <rtems/irq.h>
#include <rtems/irq-extension.h>
#include <rtems/score/processormask.h>
#ifdef __cplusplus
extern "C" {
@@ -39,26 +36,6 @@ extern "C" {
#define BSP_INTERRUPT_VECTOR_COUNT 1
static inline rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
)
{
(void) vector;
(void) affinity;
return RTEMS_SUCCESSFUL;
}
static inline rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
)
{
(void) vector;
_Processor_mask_From_index( affinity, 0 );
return RTEMS_SUCCESSFUL;
}
#ifdef __cplusplus
}
#endif /* __cplusplus */

View File

@@ -92,6 +92,28 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
return RTEMS_SUCCESSFUL;
}
#if defined(RTEMS_SMP)
rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
)
{
(void) vector;
_Processor_mask_From_index( affinity, 0 );
return RTEMS_UNSATISFIED;
}
rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
)
{
(void) vector;
(void) affinity;
return RTEMS_UNSATISFIED;
}
#endif
void bsp_interrupt_facility_initialize(void)
{
/* Nothing to do */

View File

@@ -41,7 +41,7 @@
#include <bsp.h>
#include <amba.h>
#include <bsp/irq.h>
#include <bsp/irq-generic.h>
#include <bspopts.h>
#include <bsp/fatal.h>
#include <rtems/rtems/intr.h>

View File

@@ -40,9 +40,6 @@
#ifndef ASM
#include <bsp.h>
#include <rtems/irq.h>
#include <rtems/irq-extension.h>
#include <rtems/score/processormask.h>
#define RISCV_INTERRUPT_VECTOR_SOFTWARE 0
@@ -56,16 +53,6 @@
#define BSP_INTERRUPT_VECTOR_COUNT RISCV_INTERRUPT_VECTOR_EXTERNAL(RISCV_MAXIMUM_EXTERNAL_INTERRUPTS)
rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
);
rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
);
#endif /* ASM */
#endif /* LIBBSP_RISCV_GRISCV_IRQ_H */

View File

@@ -34,7 +34,6 @@
* SUCH DAMAGE.
*/
#include <bsp/irq.h>
#include <bsp/fatal.h>
#include <bsp/irq-generic.h>
#include <amba.h>

View File

@@ -42,9 +42,6 @@
#ifndef ASM
#include <bsp.h>
#include <rtems/irq.h>
#include <rtems/irq-extension.h>
#include <rtems/score/processormask.h>
#define RISCV_INTERRUPT_VECTOR_SOFTWARE 0
@@ -60,16 +57,6 @@
#define BSP_INTERRUPT_CUSTOM_VALID_VECTOR
rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
);
rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
);
#endif /* ASM */
#endif /* LIBBSP_GENERIC_RISCV_IRQ_H */

View File

@@ -42,9 +42,6 @@
#ifndef ASM
#include <bsp.h>
#include <rtems/irq.h>
#include <rtems/irq-extension.h>
#include <rtems/score/processormask.h>
#define RISCV_INTERRUPT_VECTOR_SOFTWARE 0
@@ -60,16 +57,6 @@
#define BSP_INTERRUPT_CUSTOM_VALID_VECTOR
rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
);
rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
);
#endif /* ASM */
#endif /* LIBBSP_GENERIC_RISCV_IRQ_H */

View File

@@ -36,7 +36,6 @@
* SUCH DAMAGE.
*/
#include <bsp/irq.h>
#include <bsp/fatal.h>
#include <bsp/fdt.h>
#include <bsp/irq-generic.h>

View File

@@ -36,7 +36,6 @@
#include <dev/irq/arm-gic.h>
#include <dev/irq/arm-gic-arch.h>
#include <bsp/irq.h>
#include <bsp/irq-generic.h>
#include <bsp/start.h>
@@ -328,6 +327,7 @@ rtems_status_code arm_gic_irq_get_group(
return sc;
}
#ifdef RTEMS_SMP
rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
@@ -387,6 +387,7 @@ rtems_status_code bsp_interrupt_get_affinity(
_Processor_mask_From_uint32_t(affinity, targets, 0);
return RTEMS_SUCCESSFUL;
}
#endif
void arm_gic_trigger_sgi(rtems_vector_number vector, uint32_t targets)
{

View File

@@ -27,7 +27,6 @@
#include <dev/irq/arm-gicv3.h>
#include <bsp/irq.h>
#include <bsp/irq-generic.h>
#include <bsp/start.h>
@@ -242,6 +241,7 @@ rtems_status_code arm_gic_irq_get_priority(
return sc;
}
#ifdef RTEMS_SMP
rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
@@ -274,6 +274,7 @@ rtems_status_code bsp_interrupt_get_affinity(
_Processor_mask_From_uint32_t(affinity, targets, 0);
return RTEMS_SUCCESSFUL;
}
#endif
void arm_gic_trigger_sgi(rtems_vector_number vector, uint32_t targets)
{

View File

@@ -36,7 +36,6 @@
#include <bsp/irq-generic.h>
#include <rtems/score/processormask.h>
#include <rtems/score/smpimpl.h>
rtems_status_code rtems_interrupt_set_affinity(

View File

@@ -37,31 +37,11 @@
#ifndef LIBBSP_ERC32_IRQ_CONFIG_H
#define LIBBSP_ERC32_IRQ_CONFIG_H
#include <rtems/score/processormask.h>
#include <rtems.h>
#define BSP_INTERRUPT_VECTOR_MAX_STD 15 /* Standard IRQ controller */
#define BSP_INTERRUPT_VECTOR_COUNT (BSP_INTERRUPT_VECTOR_MAX_STD + 1)
#define BSP_INTERRUPT_CUSTOM_VALID_VECTOR
static inline rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
)
{
(void) vector;
(void) affinity;
return RTEMS_SUCCESSFUL;
}
static inline rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
)
{
(void) vector;
_Processor_mask_From_index( affinity, 0 );
return RTEMS_SUCCESSFUL;
}
#endif /* LIBBSP_ERC32_IRQ_CONFIG_H */

View File

@@ -42,9 +42,8 @@
#include <bsp.h>
#include <bsp/fatal.h>
#include <bsp/irq.h>
#include <bsp/irq-generic.h>
#include <bsp/leon3.h>
#include <rtems/rtems/intr.h>
#include <grlib/irqamp.h>
#include <rtems/score/profiling.h>
#include <rtems/timecounter.h>

View File

@@ -38,7 +38,6 @@
#define LIBBSP_LEON3_IRQ_CONFIG_H
#include <rtems.h>
#include <rtems/score/processormask.h>
#define BSP_INTERRUPT_VECTOR_MAX_STD 15 /* Standard IRQ controller */
#define BSP_INTERRUPT_VECTOR_MAX_EXT 31 /* Extended IRQ controller */
@@ -48,14 +47,4 @@
/* The check is different depending on IRQ controller, runtime detected */
#define BSP_INTERRUPT_CUSTOM_VALID_VECTOR
rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
);
rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
);
#endif /* LIBBSP_LEON3_IRQ_CONFIG_H */

View File

@@ -40,7 +40,7 @@
#define __tm27_h
#include <bsp.h>
#include <bsp/irq.h>
#include <bsp/irq-generic.h>
#if defined(RTEMS_SMP)
#include <rtems/score/smpimpl.h>

View File

@@ -16,7 +16,7 @@
#include <bsp.h>
#include <bsp/bootcard.h>
#include <bsp/fatal.h>
#include <bsp/irq.h>
#include <bsp/irq-generic.h>
#include <bsp/leon3.h>
#include <rtems/bspIo.h>
#include <rtems/sysinit.h>

View File

@@ -38,7 +38,6 @@
*
*/
#include <bsp/irq.h>
#include <bsp/irq-generic.h>
#include <bsp/irqimpl.h>

View File

@@ -140,3 +140,25 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
BSP_Cpu_Mask_interrupt(vector, 0);
return RTEMS_SUCCESSFUL;
}
#if defined(RTEMS_SMP)
rtems_status_code bsp_interrupt_get_affinity(
rtems_vector_number vector,
Processor_mask *affinity
)
{
(void) vector;
_Processor_mask_From_index( affinity, 0 );
return RTEMS_UNSATISFIED;
}
rtems_status_code bsp_interrupt_set_affinity(
rtems_vector_number vector,
const Processor_mask *affinity
)
{
(void) vector;
(void) affinity;
return RTEMS_UNSATISFIED;
}
#endif