added vm pages functions based on file_cache
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18697 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
7ee49d9f64
commit
98396cd878
|
@ -1122,9 +1122,9 @@ static file_system_module_info sDosFileSystem = {
|
|||
&dosfs_remove_vnode,
|
||||
|
||||
/* VM file access */
|
||||
NULL, //&fs_can_page,
|
||||
NULL, //&fs_read_pages,
|
||||
NULL, //&fs_write_pages,
|
||||
&dosfs_can_page,
|
||||
&dosfs_read_pages,
|
||||
&dosfs_write_pages,
|
||||
|
||||
&dosfs_get_file_map,
|
||||
|
||||
|
|
|
@ -1468,6 +1468,62 @@ dosfs_rmdir(void *vol, void *dir, const char *name)
|
|||
}
|
||||
|
||||
|
||||
bool
|
||||
dosfs_can_page(fs_volume _fs, fs_vnode _v, fs_cookie _cookie)
|
||||
{
|
||||
// ToDo: we're obviously not even asked...
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
dosfs_read_pages(fs_volume _fs, fs_vnode _node, fs_cookie _cookie, off_t pos,
|
||||
const iovec *vecs, size_t count, size_t *_numBytes, bool reenter)
|
||||
{
|
||||
nspace *vol = (nspace *)_fs;
|
||||
vnode *node = (vnode *)_node;
|
||||
status_t status;
|
||||
|
||||
if (check_nspace_magic(vol, "dosfs_read_pages") ||
|
||||
check_vnode_magic(node, "dosfs_read_pages"))
|
||||
return EINVAL;
|
||||
|
||||
if (node->cache == NULL)
|
||||
return(B_BAD_VALUE);
|
||||
|
||||
LOCK_VOL(vol);
|
||||
status = file_cache_read_pages(node->cache, pos, vecs, count,
|
||||
_numBytes);
|
||||
UNLOCK_VOL(vol);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
dosfs_write_pages(fs_volume _fs, fs_vnode _node, fs_cookie _cookie, off_t pos,
|
||||
const iovec *vecs, size_t count, size_t *_numBytes, bool reenter)
|
||||
{
|
||||
nspace *vol = (nspace *)_fs;
|
||||
vnode *node = (vnode *)_node;
|
||||
status_t status;
|
||||
|
||||
if (check_nspace_magic(vol, "dosfs_write_pages") ||
|
||||
check_vnode_magic(node, "dosfs_write_pages"))
|
||||
return EINVAL;
|
||||
|
||||
if (node->cache == NULL)
|
||||
return B_BAD_VALUE;
|
||||
|
||||
LOCK_VOL(vol);
|
||||
status = file_cache_write_pages(node->cache, pos, vecs, count,
|
||||
_numBytes);
|
||||
UNLOCK_VOL(vol);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
dosfs_get_file_map(void *_fs, void *_node, off_t pos, size_t len,
|
||||
struct file_io_vec *vecs, size_t *_count)
|
||||
|
|
|
@ -29,5 +29,10 @@ status_t dosfs_write(void *vol, void *node, void *cookie, off_t pos,
|
|||
const void *buf, size_t *len);
|
||||
status_t dosfs_get_file_map(void *fs, void *node, off_t pos, size_t reqLen,
|
||||
struct file_io_vec *vecs, size_t *_count);
|
||||
bool dosfs_can_page(fs_volume _fs, fs_vnode _v, fs_cookie _cookie);
|
||||
status_t dosfs_read_pages(fs_volume _fs, fs_vnode _node, fs_cookie _cookie, off_t pos,
|
||||
const iovec *vecs, size_t count, size_t *_numBytes, bool reenter);
|
||||
status_t dosfs_write_pages(fs_volume _fs, fs_vnode _node, fs_cookie _cookie, off_t pos,
|
||||
const iovec *vecs, size_t count, size_t *_numBytes, bool reenter);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue