From: John Hodge Date: Mon, 11 Jul 2011 13:29:57 +0000 (+0800) Subject: Kernel - VFS mmap spec (Node level) X-Git-Tag: rel0.10~40 X-Git-Url: https://git.ucc.asn.au/?a=commitdiff_plain;h=59b806f4193cbda2da7aa6a1c004cd19de5e33bd;p=tpg%2Facess2.git Kernel - VFS mmap spec (Node level) --- diff --git a/Kernel/include/vfs.h b/Kernel/include/vfs.h index f13f1b69..248a1ac9 100644 --- a/Kernel/include/vfs.h +++ b/Kernel/include/vfs.h @@ -67,6 +67,15 @@ typedef struct sVFS_SelectList tVFS_SelectList; * inherit the GID of the parent. */ #define VFS_FFLAG_SETGID 0x10 + +/** + * \brief "Don't do Write-Back" Flag + * + * Stops the VFS from calling tVFS_Node.Write on dirty pages when a region + * is unmapped. Nice for read-only files and memory-only files (or + * pseudo-readonly filesystems) + */ +#define VFS_FFLAG_NOWRITEBACK /** * \} */ @@ -215,6 +224,17 @@ typedef struct sVFS_Node * \return Number of bytes read */ Uint64 (*Write)(struct sVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer); + + /** + * \brief Map a region of a file into memory + * \param Node Pointer to this node + * \param Offset Start of the region (page aligned) + * \param Length Length of the region (page aligned) + * \param Dest Location to which to map + * \return Boolean Failure + * \note If NULL, the VFS implements it using .Read + */ + int (*MMap)(struct sVFS_Node *Node, Uint64 Offset, int Length, void *Dest); /** * \}