内核Kconfig增加AMP选项, api:rt_hw_cpu_id和 RT_USING_SMP宏解耦,增加rt_hw_ipi_send对RT_USING_AMP的依赖

This commit is contained in:
wangqinglin 2023-06-05 16:43:31 +08:00 committed by guo
parent 09ea44a370
commit 0c29bed30f
2 changed files with 26 additions and 8 deletions

View File

@ -160,6 +160,15 @@ void rt_hw_exception_install(rt_err_t (*exception_handle)(void *context));
*/
void rt_hw_us_delay(rt_uint32_t us);
int rt_hw_cpu_id(void);
#if defined(RT_USING_SMP) || defined(RT_USING_AMP)
/**
* ipi function
*/
void rt_hw_ipi_send(int ipi_vector, unsigned int cpu_mask);
#endif
#ifdef RT_USING_SMP
#include <cpuport.h> /* for spinlock from arch */
@ -172,8 +181,6 @@ void rt_hw_spin_lock_init(rt_hw_spinlock_t *lock);
void rt_hw_spin_lock(rt_hw_spinlock_t *lock);
void rt_hw_spin_unlock(rt_hw_spinlock_t *lock);
int rt_hw_cpu_id(void);
extern rt_hw_spinlock_t _cpus_lock;
extern rt_hw_spinlock_t _rt_critical_lock;
@ -185,11 +192,6 @@ extern rt_hw_spinlock_t _rt_critical_lock;
#define RT_DEFINE_SPINLOCK(x) rt_hw_spinlock_t x = __RT_HW_SPIN_LOCK_UNLOCKED(x)
#define RT_DECLARE_SPINLOCK(x)
/**
* ipi function
*/
void rt_hw_ipi_send(int ipi_vector, unsigned int cpu_mask);
/**
* boot secondary cpu
*/

View File

@ -38,6 +38,22 @@ config RT_USING_SMART
help
RT-Thread Smart is a microkernel based operating system on RT-Thread.
config RT_USING_AMP
bool "Enable AMP(Asymmetric Multi-Processing)"
default n
if RT_USING_AMP
choice
prompt "Select the AMP role"
default RT_AMP_SLAVE
config RT_AMP_MASTER
bool "amp role MASTER"
config RT_AMP_SLAVE
bool "amp role SLAVE"
endchoice
endif
config RT_USING_SMP
bool "Enable SMP(Symmetric multiprocessing)"
default n
@ -50,7 +66,7 @@ config RT_USING_SMP
config RT_CPUS_NR
int "Number of CPUs"
default 2
depends on RT_USING_SMP
depends on RT_USING_SMP || RT_USING_AMP
help
Number of CPUs in the system