Subversion Repositories HelenOS

Rev

Rev 2679 | Rev 2687 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2679 Rev 2680
Line 38... Line 38...
38
#include "vfs.h"
38
#include "vfs.h"
39
#include <stdlib.h>
39
#include <stdlib.h>
40
#include <string.h>
40
#include <string.h>
41
#include <atomic.h>
41
#include <atomic.h>
42
#include <futex.h>
42
#include <futex.h>
-
 
43
#include <rwlock.h>
43
#include <libadt/hash_table.h>
44
#include <libadt/hash_table.h>
44
 
45
 
45
/** Futex protecting the VFS node hash table. */
46
/** Futex protecting the VFS node hash table. */
46
atomic_t nodes_futex = FUTEX_INITIALIZER;
47
atomic_t nodes_futex = FUTEX_INITIALIZER;
47
 
48
 
Line 144... Line 145...
144
        memset(node, 0, sizeof(vfs_node_t));
145
        memset(node, 0, sizeof(vfs_node_t));
145
        node->fs_handle = triplet->fs_handle;
146
        node->fs_handle = triplet->fs_handle;
146
        node->dev_handle = triplet->fs_handle;
147
        node->dev_handle = triplet->fs_handle;
147
        node->index = triplet->index;
148
        node->index = triplet->index;
148
        link_initialize(&node->nh_link);
149
        link_initialize(&node->nh_link);
149
        futex_initialize(&node->contents_futex, 1);
150
        rwlock_initialize(&node->contents_rwlock);
150
        hash_table_insert(&nodes, key, &node->nh_link);
151
        hash_table_insert(&nodes, key, &node->nh_link);
151
    } else {
152
    } else {
152
        node = hash_table_get_instance(tmp, vfs_node_t, nh_link);  
153
        node = hash_table_get_instance(tmp, vfs_node_t, nh_link);  
153
    }
154
    }
154
    _vfs_node_addref(node);
155
    _vfs_node_addref(node);