diff options
author | Justin <sw1tchbl4d3@sw1tchbl4d3.com> | 2021-05-19 11:32:53 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-05-19 21:33:29 +0200 |
commit | 45a1a7e1e6cb3e88d6f70b161f8b8ada1bded246 (patch) | |
tree | afd1810901f83917e13880d106e6854429aba01d /Userland/Libraries | |
parent | 1c3badede3183e3f649d656dc0f64e093a1cd128 (diff) | |
download | serenity-45a1a7e1e6cb3e88d6f70b161f8b8ada1bded246.zip |
LibC: Add functions for the new statvfs syscalls
This commit adds the statvfs() and fstatvfs() functions into LibC.
Diffstat (limited to 'Userland/Libraries')
-rw-r--r-- | Userland/Libraries/LibC/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Userland/Libraries/LibC/sys/statvfs.cpp | 26 | ||||
-rw-r--r-- | Userland/Libraries/LibC/sys/statvfs.h | 36 |
3 files changed, 63 insertions, 0 deletions
diff --git a/Userland/Libraries/LibC/CMakeLists.txt b/Userland/Libraries/LibC/CMakeLists.txt index 44f7e46bcc..9df1b2a559 100644 --- a/Userland/Libraries/LibC/CMakeLists.txt +++ b/Userland/Libraries/LibC/CMakeLists.txt @@ -46,6 +46,7 @@ set(LIBC_SOURCES sys/socket.cpp sys/uio.cpp sys/wait.cpp + sys/statvfs.cpp termcap.cpp termios.cpp time.cpp diff --git a/Userland/Libraries/LibC/sys/statvfs.cpp b/Userland/Libraries/LibC/sys/statvfs.cpp new file mode 100644 index 0000000000..d49e38623b --- /dev/null +++ b/Userland/Libraries/LibC/sys/statvfs.cpp @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2021, Justin Mietzner <sw1tchbl4d3@sw1tchbl4d3.com> + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include <errno.h> +#include <string.h> +#include <sys/statvfs.h> +#include <syscall.h> + +extern "C" { + +int statvfs(const char* path, struct statvfs* buf) +{ + Syscall::SC_statvfs_params params { { path, strlen(path) }, buf }; + int rc = syscall(SC_statvfs, ¶ms); + __RETURN_WITH_ERRNO(rc, rc, -1); +} + +int fstatvfs(int fd, struct statvfs* buf) +{ + int rc = syscall(SC_fstatvfs, fd, buf); + __RETURN_WITH_ERRNO(rc, rc, -1); +} +} diff --git a/Userland/Libraries/LibC/sys/statvfs.h b/Userland/Libraries/LibC/sys/statvfs.h new file mode 100644 index 0000000000..4b34479a69 --- /dev/null +++ b/Userland/Libraries/LibC/sys/statvfs.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2021, Justin Mietzner <sw1tchbl4d3@sw1tchbl4d3.com> + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include <sys/cdefs.h> +#include <sys/types.h> + +__BEGIN_DECLS + +#define ST_RDONLY 0x1 +#define ST_NOSUID 0x2 + +struct statvfs { + unsigned long f_bsize; + unsigned long f_frsize; + fsblkcnt_t f_blocks; + fsblkcnt_t f_bfree; + fsblkcnt_t f_bavail; + + fsfilcnt_t f_files; + fsfilcnt_t f_ffree; + fsfilcnt_t f_favail; + + unsigned long f_fsid; + unsigned long f_flag; + unsigned long f_namemax; +}; + +int statvfs(const char* path, struct statvfs* buf); +int fstatvfs(int fd, struct statvfs* buf); + +__END_DECLS |