svghmi/svghmi.c
branchsvghmi
changeset 3295 0375d801fff7
parent 3294 e3db472b0dfb
child 3374 9a82918e063c
--- a/svghmi/svghmi.c	Mon Aug 16 22:49:08 2021 +0200
+++ b/svghmi/svghmi.c	Tue Aug 17 12:29:36 2021 +0200
@@ -137,7 +137,8 @@
 static uint32_t send_session_index;
 static int send_iterator(uint32_t index, hmi_tree_item_t *dsc)
 {
-    while(AtomicCompareExchange(&dsc->wlock, 0, 1)) sched_yield();
+    while(AtomicCompareExchange(&dsc->wlock, 0, 1))
+        nRT_reschedule();
 
     if(dsc->wstate[send_session_index] == buf_tosend)
     {
@@ -188,7 +189,9 @@
 
 void update_refresh_period(hmi_tree_item_t *dsc, uint32_t session_index, uint16_t refresh_period_ms)
 {
-    while(AtomicCompareExchange(&dsc->wlock, 0, 1)) sched_yield();
+    while(AtomicCompareExchange(&dsc->wlock, 0, 1)) 
+        nRT_reschedule();
+
     if(refresh_period_ms) {
         if(!dsc->refresh_period_ms[session_index])
         {
@@ -224,8 +227,8 @@
 
 int __init_svghmi()
 {
-    bzero(rbuf,sizeof(rbuf));
-    bzero(wbuf,sizeof(wbuf));
+    memset(rbuf,0,sizeof(rbuf));
+    memset(wbuf,0,sizeof(wbuf));
 
     svghmi_continue_collect = 1;
 
@@ -347,7 +350,8 @@
                     if((valptr + sz) <= end)
                     {
                         // rescheduling spinlock until free
-                        while(AtomicCompareExchange(&dsc->rlock, 0, 1)) sched_yield();
+                        while(AtomicCompareExchange(&dsc->rlock, 0, 1)) 
+                            nRT_reschedule();
 
                         memcpy(dst_p, valptr, sz);
                         dsc->rstate = buf_set;