rt-thread
rt-thread copied to clipboard
[Bug]components/drivers/pm/pm.c rt_pm_device_register API would be hang when RT_USING_SMP is configured
RT-Thread Version
5.1.0
Hardware Type/Architectures
riscv
Develop Toolchain
GCC
Describe the bug
- define RT_USING_SMP macro
- using rt_pm_device_register API at components initialization context
- the API would be hang at RT_KERNEL_REALLOC calling Solution: put the RT_KERNEL_REALLOC calling out of critical region, just like as below: device_pm = (struct rt_device_pm *)RT_KERNEL_REALLOC(_pm.device_pm, (_pm.device_pm_number + 1) * sizeof(struct rt_device_pm)); if (device_pm != RT_NULL) { level = rt_hw_interrupt_disable(); _pm.device_pm = device_pm; _pm.device_pm[_pm.device_pm_number].device = device; _pm.device_pm[_pm.device_pm_number].ops = ops; _pm.device_pm_number += 1; rt_hw_interrupt_enable(level); }
Other additional context
No response