diff --git a/include/linux/mm.h b/include/linux/mm.h index 4bf80ba3..744a14ce 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -2,6 +2,7 @@ #ifndef _TOOLS_LINUX_MM_H #define _TOOLS_LINUX_MM_H +#include #include struct sysinfo { @@ -20,6 +21,11 @@ struct sysinfo { __u32 mem_unit; /* Memory unit size in bytes */ }; -extern void si_meminfo(struct sysinfo * val); + + +static inline void si_meminfo(struct sysinfo *val) +{ + BUG_ON(syscall(SYS_sysinfo, val)); +} #endif /* _TOOLS_LINUX_MM_H */ diff --git a/linux/shrinker.c b/linux/shrinker.c index 91f633b5..7658fb7e 100644 --- a/linux/shrinker.c +++ b/linux/shrinker.c @@ -33,21 +33,6 @@ void unregister_shrinker(struct shrinker *shrinker) mutex_unlock(&shrinker_lock); } -struct meminfo { - u64 total; - u64 available; -}; - -void si_meminfo(struct sysinfo *val) -{ - long page_size = sysconf(_SC_PAGESIZE); - memset(val, 0, sizeof(*val)); - val->mem_unit = 1; - - val->totalram = sysconf(_SC_PHYS_PAGES) * page_size; - val->freeram = sysconf(_SC_AVPHYS_PAGES) * page_size; -} - static void run_shrinkers_allocation_failed(gfp_t gfp_mask) { struct shrinker *shrinker;