Explorar o código

LibCore: Add syscall wrapper for umount()

Federico Guerinoni %!s(int64=3) %!d(string=hai) anos
pai
achega
2291ef6c3c
Modificáronse 2 ficheiros con 10 adicións e 0 borrados
  1. 9 0
      Userland/Libraries/LibCore/System.cpp
  2. 1 0
      Userland/Libraries/LibCore/System.h

+ 9 - 0
Userland/Libraries/LibCore/System.cpp

@@ -122,6 +122,15 @@ ErrorOr<void> mount(int source_fd, StringView target, StringView fs_type, int fl
     HANDLE_SYSCALL_RETURN_VALUE("mount", rc, {});
 }
 
+ErrorOr<void> umount(StringView mount_point)
+{
+    if (mount_point.is_null())
+        return Error::from_errno(EFAULT);
+
+    int rc = syscall(SC_umount, mount_point.characters_without_null_termination(), mount_point.length());
+    HANDLE_SYSCALL_RETURN_VALUE("umount", rc, {});
+}
+
 ErrorOr<long> ptrace(int request, pid_t tid, void* address, void* data)
 {
     auto rc = ::ptrace(request, tid, address, data);

+ 1 - 0
Userland/Libraries/LibCore/System.h

@@ -40,6 +40,7 @@ ErrorOr<int> recvfd(int sockfd, int options);
 ErrorOr<void> ptrace_peekbuf(pid_t tid, void const* tracee_addr, Bytes destination_buf);
 ErrorOr<void> setgroups(Span<gid_t const>);
 ErrorOr<void> mount(int source_fd, StringView target, StringView fs_type, int flags);
+ErrorOr<void> umount(StringView mount_point);
 ErrorOr<long> ptrace(int request, pid_t tid, void* address, void* data);
 ErrorOr<void> disown(pid_t pid);
 #endif