-}
-
-__DEFINE_LXSYSCALL3(int,
- mount,
- const char*,
- source,
- const char*,
- target,
- const char*,
- fstype)
-{
- struct v_dnode *dev, *mnt;
- int errno = 0;
-
- if ((errno = vfs_walk(__current->cwd, source, &dev, NULL, 0))) {
- goto done;
- }
-
- if ((errno = vfs_walk(__current->cwd, target, &mnt, NULL, 0))) {
- goto done;
- }
-
- if (mnt->ref_count > 1) {
- errno = EBUSY;
- goto done;
- }
-
- // By our convention.
- // XXX could we do better?
- struct device* device = (struct device*)dev->data;
-
- if (!(dev->inode->itype & VFS_IFVOLDEV) || !device) {
- errno = ENOTDEV;
- goto done;
- }
-
- errno = vfs_mount_at(fstype, device, mnt);
-
-done:
- return DO_STATUS(errno);
-}
-
-__DEFINE_LXSYSCALL1(int, unmount, const char*, target)
-{
- return vfs_unmount(target);