Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/block/libblock.c

    rb72efe8 r79ae36dd  
    6060static FIBRIL_MUTEX_INITIALIZE(dcl_lock);
    6161/** Device connection list head. */
    62 static LIST_INITIALIZE(dcl);
     62static LIST_INITIALIZE(dcl_head);
    6363
    6464#define CACHE_BUCKETS_LOG2  10
     
    7272        unsigned blocks_cached;   /**< Number of cached blocks. */
    7373        hash_table_t block_hash;
    74         list_t free_list;
     74        link_t free_head;
    7575        enum cache_mode mode;
    7676} cache_t;
     
    9797static devcon_t *devcon_search(devmap_handle_t devmap_handle)
    9898{
     99        link_t *cur;
     100       
    99101        fibril_mutex_lock(&dcl_lock);
    100102       
    101         list_foreach(dcl, cur) {
     103        for (cur = dcl_head.next; cur != &dcl_head; cur = cur->next) {
    102104                devcon_t *devcon = list_get_instance(cur, devcon_t, link);
    103105                if (devcon->devmap_handle == devmap_handle) {
     
    114116    size_t bsize, void *comm_area, size_t comm_size)
    115117{
     118        link_t *cur;
    116119        devcon_t *devcon;
    117120       
     
    135138       
    136139        fibril_mutex_lock(&dcl_lock);
    137         list_foreach(dcl, cur) {
     140        for (cur = dcl_head.next; cur != &dcl_head; cur = cur->next) {
    138141                devcon_t *d = list_get_instance(cur, devcon_t, link);
    139142                if (d->devmap_handle == devmap_handle) {
     
    143146                }
    144147        }
    145         list_append(&devcon->link, &dcl);
     148        list_append(&devcon->link, &dcl_head);
    146149        fibril_mutex_unlock(&dcl_lock);
    147150        return EOK;
     
    291294       
    292295        fibril_mutex_initialize(&cache->lock);
    293         list_initialize(&cache->free_list);
     296        list_initialize(&cache->free_head);
    294297        cache->lblock_size = size;
    295298        cache->block_count = blocks;
     
    332335         * bother with the cache and block locks because we are single-threaded.
    333336         */
    334         while (!list_empty(&cache->free_list)) {
    335                 block_t *b = list_get_instance(list_first(&cache->free_list),
     337        while (!list_empty(&cache->free_head)) {
     338                block_t *b = list_get_instance(cache->free_head.next,
    336339                    block_t, free_link);
    337340
     
    364367        if (cache->blocks_cached < CACHE_LO_WATERMARK)
    365368                return true;
    366         if (!list_empty(&cache->free_list))
     369        if (!list_empty(&cache->free_head))
    367370                return false;
    368371        return true;
     
    453456                        unsigned long temp_key;
    454457recycle:
    455                         if (list_empty(&cache->free_list)) {
     458                        if (list_empty(&cache->free_head)) {
    456459                                fibril_mutex_unlock(&cache->lock);
    457460                                rc = ENOMEM;
    458461                                goto out;
    459462                        }
    460                         l = list_first(&cache->free_list);
     463                        l = cache->free_head.next;
    461464                        b = list_get_instance(l, block_t, free_link);
    462465
     
    473476                                 */
    474477                                list_remove(&b->free_link);
    475                                 list_append(&b->free_link, &cache->free_list);
     478                                list_append(&b->free_link, &cache->free_head);
    476479                                fibril_mutex_unlock(&cache->lock);
    477480                                fibril_mutex_lock(&devcon->comm_area_lock);
     
    665668                        goto retry;
    666669                }
    667                 list_append(&block->free_link, &cache->free_list);
     670                list_append(&block->free_link, &cache->free_head);
    668671        }
    669672        fibril_mutex_unlock(&block->lock);
Note: See TracChangeset for help on using the changeset viewer.