Use unprotected chain calls for delayed write workqueues since these
calls are either protected by locks or only operate on local chains and
are never accessed from interrupt context.

Updates #4956
---
 cpukit/libfs/src/jffs2/src/fs-rtems.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/cpukit/libfs/src/jffs2/src/fs-rtems.c 
b/cpukit/libfs/src/jffs2/src/fs-rtems.c
index 36bada9a98..644c7385c5 100644
--- a/cpukit/libfs/src/jffs2/src/fs-rtems.c
+++ b/cpukit/libfs/src/jffs2/src/fs-rtems.c
@@ -1246,7 +1246,7 @@ void jffs2_queue_delayed_work(struct delayed_work *work, 
int delay_ms)
        mutex_lock(&delayed_work_mutex);
        if (rtems_chain_is_node_off_chain(&work->work.node)) {
                work->execution_time = rtems_clock_get_uptime_nanoseconds() + 
delay_ms*1000000;
-               rtems_chain_append(&delayed_work_chain, &work->work.node);
+               rtems_chain_append_unprotected(&delayed_work_chain, 
&work->work.node);
        }
        mutex_unlock(&delayed_work_mutex);
 }
@@ -1267,7 +1267,7 @@ static void jffs2_remove_delayed_work(struct delayed_work 
*dwork)
                work = (struct delayed_work*) node;
                rtems_chain_node* next_node = rtems_chain_next(node);
                if (work == dwork) {
-                       rtems_chain_extract(node);
+                       rtems_chain_extract_unprotected(node);
                        rtems_chain_set_off_chain(node);
                        mutex_unlock(&delayed_work_mutex);
                        return;
@@ -1296,8 +1296,8 @@ static void process_delayed_work(void)
                work = (struct delayed_work*) node;
                rtems_chain_node* next_node = rtems_chain_next(node);
                if (rtems_clock_get_uptime_nanoseconds() >= 
work->execution_time) {
-                       rtems_chain_extract(node);
-                       rtems_chain_append(&process_work_chain, node);
+                       rtems_chain_extract_unprotected(node);
+                       rtems_chain_append_unprotected(&process_work_chain, 
node);
                }
                node = next_node;
        }
@@ -1315,7 +1315,7 @@ static void process_delayed_work(void)
 #ifdef RTEMS_DEBUG
                mutex_lock(&delayed_work_mutex);
 #endif
-               rtems_chain_extract(node);
+               rtems_chain_extract_unprotected(node);
 #ifdef RTEMS_DEBUG
                node->next = node;
                mutex_unlock(&delayed_work_mutex);
-- 
2.39.2

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to