瀏覽代碼

LibCore: Add syscall wrappers for read() and write()

Andreas Kling 3 年之前
父節點
當前提交
16356ca478
共有 2 個文件被更改,包括 18 次插入0 次删除
  1. 16 0
      Userland/Libraries/LibCore/System.cpp
  2. 2 0
      Userland/Libraries/LibCore/System.h

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

@@ -148,4 +148,20 @@ ErrorOr<struct stat> stat(StringView path)
 #endif
 }
 
+ErrorOr<ssize_t> read(int fd, void* buffer, size_t buffer_size)
+{
+    ssize_t rc = ::read(fd, buffer, buffer_size);
+    if (rc < 0)
+        return Error::from_syscall("read"sv, -errno);
+    return rc;
+}
+
+ErrorOr<ssize_t> write(int fd, void const* data, size_t data_size)
+{
+    ssize_t rc = ::write(fd, data, data_size);
+    if (rc < 0)
+        return Error::from_syscall("write"sv, -errno);
+    return rc;
+}
+
 }

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

@@ -26,5 +26,7 @@ ErrorOr<int> open(StringView path, int options, ...);
 ErrorOr<void> close(int fd);
 ErrorOr<void> ftruncate(int fd, off_t length);
 ErrorOr<struct stat> stat(StringView path);
+ErrorOr<ssize_t> read(int fd, void* buffer, size_t buffer_size);
+ErrorOr<ssize_t> write(int fd, void const* data, size_t data_size);
 
 }