X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Finclude%2Fvfs_ext.h;h=d04fcf275f8f432ce8115aad4a6f04818ab3c61f;hb=7b8c541cd83b70296325dbbf047d682fd7b03c22;hp=4fe892331ab810dfcaa01be1fdbb6b7cf17c4e59;hpb=386adcea9ab9e3b30a83c57ea6cfffe011536891;p=tpg%2Facess2.git diff --git a/Kernel/include/vfs_ext.h b/Kernel/include/vfs_ext.h index 4fe89233..d04fcf27 100644 --- a/Kernel/include/vfs_ext.h +++ b/Kernel/include/vfs_ext.h @@ -6,6 +6,9 @@ #ifndef _VFS_EXT_H #define _VFS_EXT_H +typedef Uint64 tInode; +typedef Uint32 tMount; + // === CONSTANTS === //! Maximum size of a Memory Path generated by VFS_GetMemPath #define VFS_MEMPATH_SIZE (3 + (BITS/4)*2) @@ -75,6 +78,15 @@ enum eVFS_SeekDirs * \} */ +#define MMAP_PROT_READ 0x001 +#define MMAP_PROT_WRITE 0x002 +#define MMAP_PROT_EXEC 0x004 + +#define MMAP_MAP_SHARED 0x001 +#define MMAP_MAP_PRIVATE 0x002 +#define MMAP_MAP_FIXED 0x004 +#define MMAP_MAP_ANONYMOUS 0x008 + // -- System Call Structures --- /** * \brief ACL Defintion Structure @@ -96,14 +108,16 @@ typedef struct sVFS_ACL */ typedef struct sFInfo { - Uint uid; //!< Owning User ID - Uint gid; //!< Owning Group ID - Uint flags; //!< File flags + tMount mount; //!< Mountpoint ID + tInode inode; //!< Inode + Uint32 uid; //!< Owning User ID + Uint32 gid; //!< Owning Group ID + Uint32 flags; //!< File flags Uint64 size; //!< File Size Sint64 atime; //!< Last Accessed time Sint64 mtime; //!< Last modified time Sint64 ctime; //!< Creation time - int numacls; //!< Total number of ACL entries + Sint32 numacls; //!< Total number of ACL entries tVFS_ACL acls[]; //!< ACL buffer (size is passed in the \a MaxACLs argument to VFS_FInfo) } tFInfo; @@ -133,6 +147,24 @@ extern int VFS_Init(void); * \return VFS Handle (an integer) or -1 if an error occured */ extern int VFS_Open(const char *Path, Uint Mode); +/** + * \brief Opens a file via an open directory + * \note The file to open must be a direct child of the parent + * \param FD Parent Directory + * \param Name Child name + * \param Mode Open mode + * \return File handle (same as returned from VFS_Open) + */ +extern int VFS_OpenChild(int FD, const char *Name, Uint Mode); +/** + * \brief Opens a file given a mount ID and an inode number + * \param Mount Mount ID returned by FInfo + * \param Inode Inode number from FInfo + * \param Mode Open mode (see VFS_Open) + * \return File handle (same as VFS_Open) + */ +extern int VFS_OpenInode(Uint32 Mount, Uint64 Inode, int Mode); + /** * \brief Close a currently open file * \param FD Handle returned by ::VFS_Open @@ -281,17 +313,6 @@ extern int VFS_Symlink(const char *Name, const char *Link); * \return Boolean Success */ extern int VFS_ReadDir(int FD, char *Dest); -/** - * \brief Opens a file via an open directory - * \note The file to open must be a direct child of the parent - * \param Errno Error number - * \param FD Parent Directory - * \param Name Child name - * \param Mode Open mode - * \return File handle (same as returned from VFS_Open) - */ -extern int VFS_OpenChild(Uint *Errno, int FD, const char *Name, Uint Mode); - /** * \brief Wait for an aciton on a file descriptor * \param MaxHandle Maximum set handle in \a *Handles @@ -306,7 +327,6 @@ extern int VFS_Select(int MaxHandle, fd_set *ReadHandles, fd_set *WriteHandles, /** * \brief Map a file into memory - * \param ErrNo Error status pointer * \param DestHint Suggested place for read data * \param Length Size of area to map * \param Protection Protection type (see `man mmap`) @@ -314,7 +334,7 @@ extern int VFS_Select(int MaxHandle, fd_set *ReadHandles, fd_set *WriteHandles, * \param FD File descriptor to load from * \param Offset Start of region */ -extern void *VFS_MMap(int *ErrNo, void *DestHint, size_t Length, int Protection, int Flags, int FD, Uint64 Offset); +extern void *VFS_MMap(void *DestHint, size_t Length, int Protection, int Flags, int FD, Uint64 Offset); /** * \brief Unmap memory allocated by VFS_MMap @@ -322,5 +342,5 @@ extern void *VFS_MMap(int *ErrNo, void *DestHint, size_t Length, int Protection, * \param Addr Address of data to unmap * \param Length Length of data */ -extern int VFS_MUnmap(int *ErrNo, void *Addr, size_t Length); +extern int VFS_MUnmap(void *Addr, size_t Length); #endif