[rtems commit] libblock: Use unprotected chain operations
Sebastian Huber
sebh at rtems.org
Thu Apr 12 08:40:32 UTC 2012
Module: rtems
Branch: master
Commit: 89a84c0fa3c3c50221447cd396e0f6174aa5d314
Changeset: http://git.rtems.org/rtems/commit/?id=89a84c0fa3c3c50221447cd396e0f6174aa5d314
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Mon Mar 26 11:43:57 2012 +0200
libblock: Use unprotected chain operations
The chains are protected by the bdbuf cache lock.
---
cpukit/libblock/src/bdbuf.c | 34 +++++++++++++++++-----------------
1 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/cpukit/libblock/src/bdbuf.c b/cpukit/libblock/src/bdbuf.c
index a5eaa95..89951f4 100644
--- a/cpukit/libblock/src/bdbuf.c
+++ b/cpukit/libblock/src/bdbuf.c
@@ -1056,14 +1056,14 @@ rtems_bdbuf_remove_from_tree_and_lru_list (rtems_bdbuf_buffer *bd)
rtems_bdbuf_fatal (bd->state, RTEMS_BLKDEV_FATAL_BDBUF_STATE_10);
}
- rtems_chain_extract (&bd->link);
+ rtems_chain_extract_unprotected (&bd->link);
}
static void
rtems_bdbuf_make_free_and_add_to_lru_list (rtems_bdbuf_buffer *bd)
{
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_FREE);
- rtems_chain_prepend (&bdbuf_cache.lru, &bd->link);
+ rtems_chain_prepend_unprotected (&bdbuf_cache.lru, &bd->link);
}
static void
@@ -1076,7 +1076,7 @@ static void
rtems_bdbuf_make_cached_and_add_to_lru_list (rtems_bdbuf_buffer *bd)
{
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_CACHED);
- rtems_chain_append (&bdbuf_cache.lru, &bd->link);
+ rtems_chain_append_unprotected (&bdbuf_cache.lru, &bd->link);
}
static void
@@ -1123,7 +1123,7 @@ rtems_bdbuf_add_to_modified_list_after_access (rtems_bdbuf_buffer *bd)
bd->hold_timer = bdbuf_config.swap_block_hold;
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_MODIFIED);
- rtems_chain_append (&bdbuf_cache.modified, &bd->link);
+ rtems_chain_append_unprotected (&bdbuf_cache.modified, &bd->link);
if (bd->waiters)
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
@@ -1428,7 +1428,7 @@ rtems_bdbuf_init (void)
bd->group = group;
bd->buffer = buffer;
- rtems_chain_append (&bdbuf_cache.lru, &bd->link);
+ rtems_chain_append_unprotected (&bdbuf_cache.lru, &bd->link);
if ((b % bdbuf_cache.max_bds_per_group) ==
(bdbuf_cache.max_bds_per_group - 1))
@@ -1525,7 +1525,7 @@ rtems_bdbuf_wait_for_access (rtems_bdbuf_buffer *bd)
rtems_bdbuf_group_release (bd);
/* Fall through */
case RTEMS_BDBUF_STATE_CACHED:
- rtems_chain_extract (&bd->link);
+ rtems_chain_extract_unprotected (&bd->link);
/* Fall through */
case RTEMS_BDBUF_STATE_EMPTY:
return;
@@ -1550,8 +1550,8 @@ static void
rtems_bdbuf_request_sync_for_modified_buffer (rtems_bdbuf_buffer *bd)
{
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_SYNC);
- rtems_chain_extract (&bd->link);
- rtems_chain_append (&bdbuf_cache.sync, &bd->link);
+ rtems_chain_extract_unprotected (&bd->link);
+ rtems_chain_append_unprotected (&bdbuf_cache.sync, &bd->link);
rtems_bdbuf_wake_swapper ();
}
@@ -1645,7 +1645,7 @@ rtems_bdbuf_sync_after_access (rtems_bdbuf_buffer *bd)
{
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_SYNC);
- rtems_chain_append (&bdbuf_cache.sync, &bd->link);
+ rtems_chain_append_unprotected (&bdbuf_cache.sync, &bd->link);
if (bd->waiters)
rtems_bdbuf_wake (&bdbuf_cache.access_waiters);
@@ -2030,7 +2030,7 @@ rtems_bdbuf_read (const rtems_disk_device *dd,
sc = rtems_bdbuf_execute_transfer_request (dd, req, true);
if (sc == RTEMS_SUCCESSFUL)
{
- rtems_chain_extract (&bd->link);
+ rtems_chain_extract_unprotected (&bd->link);
rtems_bdbuf_group_obtain (bd);
}
}
@@ -2428,7 +2428,7 @@ rtems_bdbuf_swapout_modified_processing (const rtems_disk_device **dd_ptr,
rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_TRANSFER);
- rtems_chain_extract (node);
+ rtems_chain_extract_unprotected (node);
tnode = tnode->previous;
@@ -2498,7 +2498,7 @@ rtems_bdbuf_swapout_processing (unsigned long timer_delta,
else
{
worker = (rtems_bdbuf_swapout_worker*)
- rtems_chain_get (&bdbuf_cache.swapout_workers);
+ rtems_chain_get_unprotected (&bdbuf_cache.swapout_workers);
if (worker)
transfer = &worker->transfer;
}
@@ -2628,7 +2628,7 @@ rtems_bdbuf_swapout_worker_task (rtems_task_argument arg)
rtems_chain_initialize_empty (&worker->transfer.bds);
worker->transfer.dd = BDBUF_INVALID_DEV;
- rtems_chain_append (&bdbuf_cache.swapout_workers, &worker->link);
+ rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
rtems_bdbuf_unlock_cache ();
}
@@ -2658,7 +2658,7 @@ rtems_bdbuf_swapout_workers_open (void)
if (!worker)
rtems_fatal_error_occurred (RTEMS_BLKDEV_FATAL_BDBUF_SO_NOMEM);
- rtems_chain_append (&bdbuf_cache.swapout_workers, &worker->link);
+ rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
worker->enabled = true;
worker->transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();
@@ -2805,7 +2805,7 @@ rtems_bdbuf_purge_list (rtems_chain_control *purge_list)
bool wake_buffer_waiters = false;
rtems_chain_node *node = NULL;
- while ((node = rtems_chain_get (purge_list)) != NULL)
+ while ((node = rtems_chain_get_unprotected (purge_list)) != NULL)
{
rtems_bdbuf_buffer *bd = (rtems_bdbuf_buffer *) node;
@@ -2847,8 +2847,8 @@ rtems_bdbuf_gather_for_purge (rtems_chain_control *purge_list,
rtems_bdbuf_group_release (cur);
/* Fall through */
case RTEMS_BDBUF_STATE_CACHED:
- rtems_chain_extract (&cur->link);
- rtems_chain_append (purge_list, &cur->link);
+ rtems_chain_extract_unprotected (&cur->link);
+ rtems_chain_append_unprotected (purge_list, &cur->link);
break;
case RTEMS_BDBUF_STATE_TRANSFER:
rtems_bdbuf_set_state (cur, RTEMS_BDBUF_STATE_TRANSFER_PURGED);
More information about the vc
mailing list