diff options
Diffstat (limited to 'libc/src/sys/statvfs/linux/statvfs.cpp')
| -rw-r--r-- | libc/src/sys/statvfs/linux/statvfs.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/libc/src/sys/statvfs/linux/statvfs.cpp b/libc/src/sys/statvfs/linux/statvfs.cpp new file mode 100644 index 000000000000..a438ef1f0117 --- /dev/null +++ b/libc/src/sys/statvfs/linux/statvfs.cpp @@ -0,0 +1,28 @@ +//===-- Linux implementation of statvfs -----------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "src/sys/statvfs/statvfs.h" +#include "src/__support/common.h" +#include "src/__support/libc_assert.h" +#include "src/sys/statvfs/linux/statfs_utils.h" + +namespace LIBC_NAMESPACE { + +LLVM_LIBC_FUNCTION(int, statvfs, + (const char *__restrict path, + struct statvfs *__restrict buf)) { + using namespace statfs_utils; + cpp::optional<LinuxStatFs> result = linux_statfs(path); + if (result) { + LIBC_ASSERT(buf != nullptr); + *buf = statfs_to_statvfs(*result); + } + return result ? 0 : -1; +} + +} // namespace LIBC_NAMESPACE |
