X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fvfs%2Fmount.c;h=d0d7290c303243f05ebb3f3fb6ac6c10952e37ed;hb=7e3a0260f0a6bb7bb1c1c001649b04bbe7ad6d52;hp=eb6a5b1fdb91abf25bcca0369aaf45bc85c407e1;hpb=243bdab4e7acc8516d9b1c138f45dc1195f97767;p=tpg%2Facess2.git diff --git a/Kernel/vfs/mount.c b/Kernel/vfs/mount.c index eb6a5b1f..d0d7290c 100644 --- a/Kernel/vfs/mount.c +++ b/Kernel/vfs/mount.c @@ -1,7 +1,7 @@ /* * Acess Micro - VFS Server version 1 */ -#include +#include #include #include #include @@ -11,36 +11,39 @@ extern int giVFS_MountFileID; extern char *gsVFS_MountFile; // === PROTOTYPES === - int VFS_Mount(char *Device, char *MountPoint, char *Filesystem, char *ArgString); -void VFS_UpdateMountFile(); + int VFS_Mount(const char *Device, const char *MountPoint, const char *Filesystem, const char *Options); +void VFS_UpdateMountFile(void); // === GLOBALS === - int glVFS_MountList = 0; +tMutex glVFS_MountList; tVFS_Mount *gVFS_Mounts; tVFS_Mount *gVFS_RootMount = NULL; // === CODE === /** - * \fn int VFS_Mount(char *Device, char *MountPoint, char *Filesystem, char *ArgString) * \brief Mount a device * \param Device Device string to mount * \param MountPoint Destination for the mount * \param Filesystem Filesystem to use for the mount - * \param ArgString Options to be passed to the filesystem + * \param Options Options to be passed to the filesystem * \return -1 on Invalid FS, -2 on No Mem, 0 on success + * + * Mounts the filesystem on \a Device at \a MountPoint using the driver + * \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 *ArgString) +int VFS_Mount(const char *Device, const char *MountPoint, const char *Filesystem, const char *Options) { tVFS_Mount *mnt; tVFS_Driver *fs; int deviceLen = strlen(Device); int mountLen = strlen(MountPoint); - int argLen = strlen(ArgString); + int argLen = strlen(Options); // Get the filesystem fs = VFS_GetFSByName(Filesystem); if(!fs) { - Warning("VFS_Mount - Unknown FS Type '%s'", Filesystem); + Log_Warning("VFS", "VFS_Mount - Unknown FS Type '%s'", Filesystem); return -1; } @@ -66,7 +69,7 @@ int VFS_Mount(char *Device, char *MountPoint, char *Filesystem, char *ArgString) memcpy( mnt->MountPoint, MountPoint, mountLen+1 ); mnt->Options = &mnt->StrData[deviceLen+1+mountLen+1]; - memcpy( mnt->Options, ArgString, argLen+1 ); + memcpy( mnt->Options, Options, argLen+1 ); // Initialise Volume mnt->RootNode = fs->InitDevice(Device, NULL); //&ArgString); @@ -79,7 +82,7 @@ int VFS_Mount(char *Device, char *MountPoint, char *Filesystem, char *ArgString) if(!gVFS_RootMount) gVFS_RootMount = mnt; // Add to mount list - LOCK( &glVFS_MountList ); + Mutex_Acquire( &glVFS_MountList ); { tVFS_Mount *tmp; mnt->Next = NULL; @@ -91,9 +94,9 @@ int VFS_Mount(char *Device, char *MountPoint, char *Filesystem, char *ArgString) gVFS_Mounts = mnt; } } - RELEASE( &glVFS_MountList ); + Mutex_Release( &glVFS_MountList ); - Log("VFS_Mount: Mounted '%s' to '%s' ('%s')", Device, MountPoint, Filesystem); + Log_Log("VFS", "Mounted '%s' to '%s' ('%s')", Device, MountPoint, Filesystem); VFS_UpdateMountFile(); @@ -101,10 +104,11 @@ int VFS_Mount(char *Device, char *MountPoint, char *Filesystem, char *ArgString) } /** - * \fn void VFS_UpdateMountFile() * \brief Updates the mount file buffer + * + * Updates the ProcFS mounts file buffer to match the current mounts list. */ -void VFS_UpdateMountFile() +void VFS_UpdateMountFile(void) { int len = 0; char *buf;