Implemented vfs_get_file_map() and vfs_lookup_vnode().

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29393 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2009-03-04 00:53:57 +00:00
parent c74777f3d3
commit 02f7a2f4cb
3 changed files with 32 additions and 5 deletions
@@ -144,6 +144,14 @@ HaikuKernelVolume::UndoPublishVNode(HaikuKernelNode* node)
}
// NodeWithID
HaikuKernelNode*
HaikuKernelVolume::NodeWithID(ino_t vnodeID) const
{
return fNodes->Get(vnodeID);
}
// #pragma mark -
// #pragma mark ----- FS -----
@@ -33,6 +33,8 @@ public:
void UndoNewVNode(HaikuKernelNode* node);
void UndoPublishVNode(HaikuKernelNode* node);
HaikuKernelNode* NodeWithID(ino_t vnodeID) const;
// FS
virtual status_t Mount(const char* device, uint32 flags,
const char* parameters, ino_t* rootID);
@@ -1,4 +1,7 @@
// beos_kernel_emu.cpp
/*
* Copyright 2009, Ingo Weinhold, [email protected].
* Distributed under the terms of the MIT License.
*/
#include <stdarg.h>
#include <stdio.h>
@@ -12,6 +15,7 @@
#include "Debug.h"
#include "../FileSystem.h"
#include "../kernel_emu.h"
#include "HaikuKernelNode.h"
@@ -251,16 +255,29 @@ status_t
vfs_get_file_map(struct vnode *vnode, off_t offset, size_t size,
struct file_io_vec *vecs, size_t *_count)
{
// TODO: Implement!
return B_BAD_VALUE;
HaikuKernelNode* node = (HaikuKernelNode*)vnode;
return node->volume->GetFileMap(node, offset, size, vecs, _count);
}
status_t
vfs_lookup_vnode(dev_t mountID, ino_t vnodeID, struct vnode **_vnode)
{
// TODO: Implement!
return B_BAD_VALUE;
// get the volume
HaikuKernelVolume* volume = dynamic_cast<HaikuKernelVolume*>(
FileSystem::GetInstance()->VolumeWithID(mountID));
if (volume == NULL)
return B_BAD_VALUE;
// get the node
HaikuKernelNode* node = volume->NodeWithID(vnodeID);
if (node == NULL)
return B_BAD_VALUE;
*_vnode = (struct vnode*)node;
return B_OK;
}