From 401c87a0ccb7bb72d40622ae326889cacaaf5f7a Mon Sep 17 00:00:00 2001 From: Jesse Date: Fri, 2 Aug 2019 23:18:47 +1000 Subject: Kernel: mount system call (#396) It is now possible to mount ext2 `DiskDevice` devices under Serenity on any folder in the root filesystem. Currently any user can do this with any permissions. There's a fair amount of assumptions made here too, that might not be too good, but can be worked on in the future. This is a good start to allow more dynamic operation under the OS itself. It is also currently impossible to unmount and such, and devices will fail to mount in Linux as the FS 'needs to be cleaned'. I'll work on getting `umount` done ASAP to rectify this (as well as working on less assumption-making in the mount syscall. We don't want to just be able to mount DiskDevices!). This could probably be fixed with some `-t` flag or something similar. --- Libraries/LibC/unistd.cpp | 6 ++++++ Libraries/LibC/unistd.h | 1 + 2 files changed, 7 insertions(+) (limited to 'Libraries/LibC') diff --git a/Libraries/LibC/unistd.cpp b/Libraries/LibC/unistd.cpp index 922039c09f..5d9e9bb97d 100644 --- a/Libraries/LibC/unistd.cpp +++ b/Libraries/LibC/unistd.cpp @@ -546,6 +546,12 @@ int reboot() __RETURN_WITH_ERRNO(rc, rc, -1); } +int mount(const char* device, const char* mountpoint) +{ + int rc = syscall(SC_mount, device, mountpoint); + __RETURN_WITH_ERRNO(rc, rc, -1); +} + void dump_backtrace() { syscall(SC_dump_backtrace); diff --git a/Libraries/LibC/unistd.h b/Libraries/LibC/unistd.h index b4b8928e9c..567f098c82 100644 --- a/Libraries/LibC/unistd.h +++ b/Libraries/LibC/unistd.h @@ -98,6 +98,7 @@ int fchown(int fd, uid_t, gid_t); int ftruncate(int fd, off_t length); int halt(); int reboot(); +int mount(const char* device, const char* mountpoint); enum { _PC_NAME_MAX, -- cgit v1.2.3