From f543160ead455096d0f5756ffd8876914dd4abdb Mon Sep 17 00:00:00 2001 From: zhao maosheng Date: Thu, 1 Aug 2024 11:20:14 +0800 Subject: [PATCH] fix rt_atomic_dec_and_test --- components/drivers/core/platform_ofw.c | 4 ++++ include/rtatomic.h | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/components/drivers/core/platform_ofw.c b/components/drivers/core/platform_ofw.c index f305fde62b..d1c0f774e0 100644 --- a/components/drivers/core/platform_ofw.c +++ b/components/drivers/core/platform_ofw.c @@ -206,6 +206,8 @@ static int platform_ofw_device_probe(void) if (ofw_node_root) { + rt_ofw_node_get(ofw_node_root); + err = platform_ofw_device_probe_once(ofw_node_root); rt_ofw_node_put(ofw_node_root); @@ -216,11 +218,13 @@ static int platform_ofw_device_probe(void) rt_ofw_node_put(node); } + rt_ofw_node_get(ofw_node_chosen); if ((node = rt_ofw_get_child_by_compatible(ofw_node_chosen, "simple-framebuffer"))) { platform_ofw_device_probe_once(node); rt_ofw_node_put(node); } + rt_ofw_node_get(ofw_node_chosen); } else { diff --git a/include/rtatomic.h b/include/rtatomic.h index 5363ee5426..b91145e40b 100644 --- a/include/rtatomic.h +++ b/include/rtatomic.h @@ -203,7 +203,7 @@ rt_inline rt_atomic_t rt_soft_atomic_compare_exchange_strong(volatile rt_atomic_ rt_inline rt_bool_t rt_atomic_dec_and_test(volatile rt_atomic_t *ptr) { - return rt_atomic_sub(ptr, 1) == 0; + return rt_atomic_sub(ptr, 1) == 1; } rt_inline rt_atomic_t rt_atomic_fetch_add_unless(volatile rt_atomic_t *ptr, rt_atomic_t a, rt_atomic_t u)