mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-02-09 00:00:04 +03:00
Use a single sysinfo(2) call to fill out struct sysinfo instead of multiple libc sysconf(3) requests, which will only make sysinfo(2) calls internally anyway. This also enables us to access other struct sysinfo fields, not just the three filled-out previously. As we provide our own definition of struct sysinfo in include/linux/mm.h to match the kernel, which is not guaranteed to align with the definition libc provides in <sys/sysinfo.h>, use syscall(SYS_sysinfo, ...) directly instead of the libc wrapper. Signed-off-by: Chris Webb <chris@arachsys.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
32 lines
996 B
C
32 lines
996 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _TOOLS_LINUX_MM_H
|
|
#define _TOOLS_LINUX_MM_H
|
|
|
|
#include <sys/syscall.h>
|
|
#include <linux/types.h>
|
|
|
|
struct sysinfo {
|
|
long uptime; /* Seconds since boot */
|
|
unsigned long loads[3]; /* 1, 5, and 15 minute load averages */
|
|
unsigned long totalram; /* Total usable main memory size */
|
|
unsigned long freeram; /* Available memory size */
|
|
unsigned long sharedram; /* Amount of shared memory */
|
|
unsigned long bufferram; /* Memory used by buffers */
|
|
unsigned long totalswap; /* Total swap space size */
|
|
unsigned long freeswap; /* swap space still available */
|
|
__u16 procs; /* Number of current processes */
|
|
__u16 pad; /* Explicit padding for m68k */
|
|
unsigned long totalhigh; /* Total high memory size */
|
|
unsigned long freehigh; /* Available high memory size */
|
|
__u32 mem_unit; /* Memory unit size in bytes */
|
|
};
|
|
|
|
|
|
|
|
static inline void si_meminfo(struct sysinfo *val)
|
|
{
|
|
BUG_ON(syscall(SYS_sysinfo, val));
|
|
}
|
|
|
|
#endif /* _TOOLS_LINUX_MM_H */
|