Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 553492be in mainline


Ignore:
Timestamp:
2009-06-17T22:33:08Z (13 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master
Children:
ac47b7c2
Parents:
ca093b3
Message:

Finish converting VFS to fibril synchronization.

Location:
uspace/srv/vfs
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/vfs/vfs.h

    rca093b3 r553492be  
    3737#include <adt/list.h>
    3838#include <fibril_sync.h>
    39 #include <futex.h>
    4039#include <sys/types.h>
    4140#include <devmap.h>
     
    146145} vfs_file_t;
    147146
    148 extern futex_t nodes_futex;
     147extern fibril_mutex_t nodes_mutex;
    149148
    150149extern link_t fs_head;          /**< List of registered file systems. */
     
    159158} plb_entry_t;
    160159
    161 extern futex_t plb_futex;       /**< Futex protecting plb and plb_head. */
     160extern fibril_mutex_t plb_mutex;/**< Mutex protecting plb and plb_head. */
    162161extern uint8_t *plb;            /**< Path Lookup Buffer */
    163162extern link_t plb_head;         /**< List of active PLB entries. */
  • uspace/srv/vfs/vfs_file.c

    rca093b3 r553492be  
    5858 *
    5959 * This resource being per-connection and, in the first place, per-fibril, we
    60  * don't need to protect it by a futex.
     60 * don't need to protect it by a mutex.
    6161 */
    6262fibril_local vfs_file_t **files = NULL;
  • uspace/srv/vfs/vfs_lookup.c

    rca093b3 r553492be  
    4343#include <stdarg.h>
    4444#include <bool.h>
    45 #include <futex.h>
     45#include <fibril_sync.h>
    4646#include <adt/list.h>
    4747#include <vfs/canonify.h>
     
    4949#define min(a, b)  ((a) < (b) ? (a) : (b))
    5050
    51 futex_t plb_futex = FUTEX_INITIALIZER;
     51FIBRIL_MUTEX_INITIALIZE(plb_mutex);
    5252link_t plb_head;  /**< PLB entry ring buffer. */
    5353uint8_t *plb = NULL;
     
    9393        }
    9494       
    95         futex_down(&plb_futex);
     95        fibril_mutex_lock(&plb_mutex);
    9696
    9797        plb_entry_t entry;
     
    120120                         * The buffer cannot absorb the path.
    121121                         */
    122                         futex_up(&plb_futex);
     122                        fibril_mutex_unlock(&plb_mutex);
    123123                        return ELIMIT;
    124124                }
     
    128128                         * The buffer cannot absorb the path.
    129129                         */
    130                         futex_up(&plb_futex);
     130                        fibril_mutex_unlock(&plb_mutex);
    131131                        return ELIMIT;
    132132                }
     
    147147        list_append(&entry.plb_link, &plb_head);
    148148       
    149         futex_up(&plb_futex);
     149        fibril_mutex_unlock(&plb_mutex);
    150150
    151151        /*
     
    169169        vfs_release_phone(phone);
    170170       
    171         futex_down(&plb_futex);
     171        fibril_mutex_lock(&plb_mutex);
    172172        list_remove(&entry.plb_link);
    173173        /*
     
    176176        memset(&plb[first], 0, cnt1);
    177177        memset(plb, 0, cnt2);
    178         futex_up(&plb_futex);
     178        fibril_mutex_unlock(&plb_mutex);
    179179
    180180        if ((rc == EOK) && (result)) {
  • uspace/srv/vfs/vfs_node.c

    rca093b3 r553492be  
    3939#include <stdlib.h>
    4040#include <string.h>
    41 #include <futex.h>
    4241#include <fibril_sync.h>
    4342#include <adt/hash_table.h>
     
    4645#include <errno.h>
    4746
    48 /** Futex protecting the VFS node hash table. */
    49 futex_t nodes_futex = FUTEX_INITIALIZER;
     47/** Mutex protecting the VFS node hash table. */
     48FIBRIL_MUTEX_INITIALIZE(nodes_mutex);
    5049
    5150#define NODES_BUCKETS_LOG       8
     
    9089void vfs_node_addref(vfs_node_t *node)
    9190{
    92         futex_down(&nodes_futex);
     91        fibril_mutex_lock(&nodes_mutex);
    9392        _vfs_node_addref(node);
    94         futex_up(&nodes_futex);
     93        fibril_mutex_unlock(&nodes_mutex);
    9594}
    9695
     
    106105        bool free_fs_node = false;
    107106
    108         futex_down(&nodes_futex);
     107        fibril_mutex_lock(&nodes_mutex);
    109108        if (node->refcnt-- == 1) {
    110109                /*
     
    122121                        free_fs_node = true;
    123122        }
    124         futex_up(&nodes_futex);
     123        fibril_mutex_unlock(&nodes_mutex);
    125124
    126125        if (free_fs_node) {
     
    162161        vfs_node_t *node;
    163162
    164         futex_down(&nodes_futex);
     163        fibril_mutex_lock(&nodes_mutex);
    165164        tmp = hash_table_find(&nodes, key);
    166165        if (!tmp) {
    167166                node = (vfs_node_t *) malloc(sizeof(vfs_node_t));
    168167                if (!node) {
    169                         futex_up(&nodes_futex);
     168                        fibril_mutex_unlock(&nodes_mutex);
    170169                        return NULL;
    171170                }
     
    194193
    195194        _vfs_node_addref(node);
    196         futex_up(&nodes_futex);
     195        fibril_mutex_unlock(&nodes_mutex);
    197196
    198197        return node;
  • uspace/srv/vfs/vfs_ops.c

    rca093b3 r553492be  
    4444#include <string.h>
    4545#include <bool.h>
    46 #include <futex.h>
    4746#include <fibril_sync.h>
    4847#include <adt/list.h>
     
    11321131         */
    11331132        vfs_node_t *node = vfs_node_get(&lr);
    1134         futex_down(&nodes_futex);
     1133        fibril_mutex_lock(&nodes_mutex);
    11351134        node->lnkcnt--;
    1136         futex_up(&nodes_futex);
     1135        fibril_mutex_unlock(&nodes_mutex);
    11371136        fibril_rwlock_write_unlock(&namespace_rwlock);
    11381137        vfs_node_put(node);
     
    12831282                        return;
    12841283                }
    1285                 futex_down(&nodes_futex);
     1284                fibril_mutex_lock(&nodes_mutex);
    12861285                new_node->lnkcnt--;
    1287                 futex_up(&nodes_futex);
     1286                fibril_mutex_unlock(&nodes_mutex);
    12881287                break;
    12891288        default:
     
    13051304                return;
    13061305        }
    1307         futex_down(&nodes_futex);
     1306        fibril_mutex_lock(&nodes_mutex);
    13081307        old_node->lnkcnt++;
    1309         futex_up(&nodes_futex);
     1308        fibril_mutex_unlock(&nodes_mutex);
    13101309        /* Destroy the link for the old name. */
    13111310        rc = vfs_lookup_internal(oldc, L_UNLINK, NULL, NULL);
     
    13201319                return;
    13211320        }
    1322         futex_down(&nodes_futex);
     1321        fibril_mutex_lock(&nodes_mutex);
    13231322        old_node->lnkcnt--;
    1324         futex_up(&nodes_futex);
     1323        fibril_mutex_unlock(&nodes_mutex);
    13251324        fibril_rwlock_write_unlock(&namespace_rwlock);
    13261325        vfs_node_put(old_node);
Note: See TracChangeset for help on using the changeset viewer.