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
[email protected]
http://lists.rtems.org/mailman/listinfo/devel