内核Kconfig增加AMP选项, api:rt_hw_cpu_id和 RT_USING_SMP宏解耦,增加rt_hw_ipi_send对RT_USING_AMP的依赖
This commit is contained in:
parent
09ea44a370
commit
0c29bed30f
|
@ -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);
|
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
|
#ifdef RT_USING_SMP
|
||||||
#include <cpuport.h> /* for spinlock from arch */
|
#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_lock(rt_hw_spinlock_t *lock);
|
||||||
void rt_hw_spin_unlock(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 _cpus_lock;
|
||||||
extern rt_hw_spinlock_t _rt_critical_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_DEFINE_SPINLOCK(x) rt_hw_spinlock_t x = __RT_HW_SPIN_LOCK_UNLOCKED(x)
|
||||||
#define RT_DECLARE_SPINLOCK(x)
|
#define RT_DECLARE_SPINLOCK(x)
|
||||||
|
|
||||||
/**
|
|
||||||
* ipi function
|
|
||||||
*/
|
|
||||||
void rt_hw_ipi_send(int ipi_vector, unsigned int cpu_mask);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* boot secondary cpu
|
* boot secondary cpu
|
||||||
*/
|
*/
|
||||||
|
|
18
src/Kconfig
18
src/Kconfig
|
@ -38,6 +38,22 @@ config RT_USING_SMART
|
||||||
help
|
help
|
||||||
RT-Thread Smart is a microkernel based operating system on RT-Thread.
|
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
|
config RT_USING_SMP
|
||||||
bool "Enable SMP(Symmetric multiprocessing)"
|
bool "Enable SMP(Symmetric multiprocessing)"
|
||||||
default n
|
default n
|
||||||
|
@ -50,7 +66,7 @@ config RT_USING_SMP
|
||||||
config RT_CPUS_NR
|
config RT_CPUS_NR
|
||||||
int "Number of CPUs"
|
int "Number of CPUs"
|
||||||
default 2
|
default 2
|
||||||
depends on RT_USING_SMP
|
depends on RT_USING_SMP || RT_USING_AMP
|
||||||
help
|
help
|
||||||
Number of CPUs in the system
|
Number of CPUs in the system
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue