LibC: Add functions for the new statvfs syscalls

This commit adds the statvfs() and fstatvfs() functions into LibC.
This commit is contained in:
Justin 2021-05-19 11:32:53 +02:00 committed by Andreas Kling
parent 1c3badede3
commit 45a1a7e1e6
Notes: sideshowbarker 2024-07-18 17:46:38 +09:00
3 changed files with 63 additions and 0 deletions

View file

@ -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

View file

@ -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, &params);
__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);
}
}

View file

@ -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