Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2686 → Rev 2687

/trunk/uspace/srv/vfs/vfs_node.c
42,6 → 42,7
#include <futex.h>
#include <rwlock.h>
#include <libadt/hash_table.h>
#include <assert.h>
 
/** Futex protecting the VFS node hash table. */
atomic_t nodes_futex = FUTEX_INITIALIZER;
121,10 → 122,11
* vfs_node_put() on it.
*
* @param triplet Triplet encoding the identity of the VFS node.
* @param size Size of the node as filled by vfs_lookup_internal().
*
* @return VFS node corresponding to the given triplet.
*/
vfs_node_t *vfs_node_get(vfs_triplet_t *triplet)
vfs_node_t *vfs_node_get(vfs_triplet_t *triplet, size_t size)
{
unsigned long key[] = {
[KEY_FS_HANDLE] = triplet->fs_handle,
146,6 → 148,7
node->fs_handle = triplet->fs_handle;
node->dev_handle = triplet->fs_handle;
node->index = triplet->index;
node->size = size;
link_initialize(&node->nh_link);
rwlock_initialize(&node->contents_rwlock);
hash_table_insert(&nodes, key, &node->nh_link);
152,6 → 155,9
} else {
node = hash_table_get_instance(tmp, vfs_node_t, nh_link);
}
 
assert(node->size == size);
 
_vfs_node_addref(node);
futex_up(&nodes_futex);