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:
@@ -144,6 +144,14 @@ HaikuKernelVolume::UndoPublishVNode(HaikuKernelNode* node)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// NodeWithID
|
||||||
|
HaikuKernelNode*
|
||||||
|
HaikuKernelVolume::NodeWithID(ino_t vnodeID) const
|
||||||
|
{
|
||||||
|
return fNodes->Get(vnodeID);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// #pragma mark -
|
// #pragma mark -
|
||||||
// #pragma mark ----- FS -----
|
// #pragma mark ----- FS -----
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ public:
|
|||||||
void UndoNewVNode(HaikuKernelNode* node);
|
void UndoNewVNode(HaikuKernelNode* node);
|
||||||
void UndoPublishVNode(HaikuKernelNode* node);
|
void UndoPublishVNode(HaikuKernelNode* node);
|
||||||
|
|
||||||
|
HaikuKernelNode* NodeWithID(ino_t vnodeID) const;
|
||||||
|
|
||||||
// FS
|
// FS
|
||||||
virtual status_t Mount(const char* device, uint32 flags,
|
virtual status_t Mount(const char* device, uint32 flags,
|
||||||
const char* parameters, ino_t* rootID);
|
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 <stdarg.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -12,6 +15,7 @@
|
|||||||
|
|
||||||
#include "Debug.h"
|
#include "Debug.h"
|
||||||
|
|
||||||
|
#include "../FileSystem.h"
|
||||||
#include "../kernel_emu.h"
|
#include "../kernel_emu.h"
|
||||||
|
|
||||||
#include "HaikuKernelNode.h"
|
#include "HaikuKernelNode.h"
|
||||||
@@ -251,16 +255,29 @@ status_t
|
|||||||
vfs_get_file_map(struct vnode *vnode, off_t offset, size_t size,
|
vfs_get_file_map(struct vnode *vnode, off_t offset, size_t size,
|
||||||
struct file_io_vec *vecs, size_t *_count)
|
struct file_io_vec *vecs, size_t *_count)
|
||||||
{
|
{
|
||||||
// TODO: Implement!
|
HaikuKernelNode* node = (HaikuKernelNode*)vnode;
|
||||||
return B_BAD_VALUE;
|
|
||||||
|
return node->volume->GetFileMap(node, offset, size, vecs, _count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
vfs_lookup_vnode(dev_t mountID, ino_t vnodeID, struct vnode **_vnode)
|
vfs_lookup_vnode(dev_t mountID, ino_t vnodeID, struct vnode **_vnode)
|
||||||
{
|
{
|
||||||
// TODO: Implement!
|
// get the volume
|
||||||
return B_BAD_VALUE;
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user