X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fvfs%2Fmount.c;h=1773218a3908ab4a474cbc17c3788607cd3fbfcb;hb=d01b7e1a4924a41a5219eedfd2f6d32b310368cd;hp=0436043b1bd8c0f710557b1c73dd24a981eb2405;hpb=7d881c2e5fef91a6570e46ef69a5d4a5cf0e8b4d;p=tpg%2Facess2.git diff --git a/Kernel/vfs/mount.c b/Kernel/vfs/mount.c index 0436043b..1773218a 100644 --- a/Kernel/vfs/mount.c +++ b/Kernel/vfs/mount.c @@ -11,13 +11,16 @@ extern int giVFS_MountFileID; extern char *gsVFS_MountFile; // === PROTOTYPES === - int VFS_Mount(char *Device, char *MountPoint, char *Filesystem, char *Options); +#if 0 + int VFS_Mount(const char *Device, const char *MountPoint, const char *Filesystem, const char *Options); +#endif void VFS_UpdateMountFile(void); // === GLOBALS === tMutex glVFS_MountList; tVFS_Mount *gVFS_Mounts; tVFS_Mount *gVFS_RootMount = NULL; +Uint32 giVFS_NextMountIdent = 1; // === CODE === /** @@ -32,7 +35,7 @@ tVFS_Mount *gVFS_RootMount = NULL; * \a Filesystem. The options in the string \a Options is passed to the * driver's mount. */ -int VFS_Mount(char *Device, char *MountPoint, char *Filesystem, char *Options) +int VFS_Mount(const char *Device, const char *MountPoint, const char *Filesystem, const char *Options) { tVFS_Mount *mnt; tVFS_Driver *fs; @@ -77,6 +80,14 @@ int VFS_Mount(char *Device, char *MountPoint, char *Filesystem, char *Options) free(mnt); return -2; } + + mnt->Identifier = giVFS_NextMountIdent++; + #if 0 + // Ensure identifiers don't repeat + // - Only a problem if there have been 4 billion mounts + while( giVFS_NextMountIdent == 0 || VFS_GetMountByIdent(giVFS_NextMountIdent) ) + giVFS_NextMountIdent ++; + #endif // Set root if(!gVFS_RootMount) gVFS_RootMount = mnt; @@ -103,6 +114,20 @@ int VFS_Mount(char *Device, char *MountPoint, char *Filesystem, char *Options) return 0; } +/** + * \brief Gets a mount point given the identifier + */ +tVFS_Mount *VFS_GetMountByIdent(Uint32 MountID) +{ + tVFS_Mount *mnt; + for(mnt = gVFS_Mounts; mnt; mnt = mnt->Next) + { + if(mnt->Identifier == MountID) + return mnt; + } + return NULL; +} + /** * \brief Updates the mount file buffer *