mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-05-31 20:05:59 +08:00
内核Kconfig增加AMP选项, api:rt_hw_cpu_id和 RT_USING_SMP宏解耦,增加rt_hw_ipi_send对RT_USING_AMP的依赖
This commit is contained in:
+9
-7
@@ -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
|
||||||
*/
|
*/
|
||||||
|
|||||||
+17
-1
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user