summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzhao maosheng <[email protected]>2024-08-01 11:20:14 +0800
committerBernard Xiong <[email protected]>2024-08-09 12:54:10 +0800
commitf543160ead455096d0f5756ffd8876914dd4abdb (patch)
tree896ffa6d9e610e41ad4c076b1414f80d1e11aaf5
parent8c5f24469c7a51066fa72298427841ec509dbc9b (diff)
fix rt_atomic_dec_and_test
-rw-r--r--components/drivers/core/platform_ofw.c4
-rw-r--r--include/rtatomic.h2
2 files changed, 5 insertions, 1 deletions
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)