[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2] physmem: use sysinfo on linux for physmem_total
From: |
Pádraig Brady |
Subject: |
Re: [PATCH v2] physmem: use sysinfo on linux for physmem_total |
Date: |
Fri, 18 Apr 2014 17:11:44 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130110 Thunderbird/17.0.2 |
On 04/18/2014 10:16 AM, Natanael Copa wrote:
> * lib/physmem.c (physmem_total): Some systems like musl libc does not
> (yet) support _SC_PHYS_PAGES. Use the linux syscall sysinfo as fallback
> if _SC_PHYS_PAGES or _SC_PAGESIZE fails.
>
> Signed-off-by: Natanael Copa <address@hidden>
> ---
> Changes since v1:
> - prefer use _SC_PHYS_PAGES * _SC_PAGESIZE if available and use
> sysinfo as fallback.
> - check for and use mem_unit, member of struct sysinfo.
>
> lib/physmem.c | 13 ++++++++++++-
> m4/physmem.m4 | 3 ++-
> 2 files changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/lib/physmem.c b/lib/physmem.c
> index 7a67fb3..53afdd9 100644
> --- a/lib/physmem.c
> +++ b/lib/physmem.c
> @@ -32,8 +32,11 @@
> # include <sys/sysmp.h>
> #endif
>
> -#if HAVE_SYS_SYSINFO_H && HAVE_MACHINE_HAL_SYSINFO_H
> +#if HAVE_SYS_SYSINFO_H
> # include <sys/sysinfo.h>
> +#endif
> +
> +#if HAVE_MACHINE_HAL_SYSINFO_H
> # include <machine/hal_sysinfo.h>
> #endif
>
> @@ -90,6 +93,14 @@ physmem_total (void)
> }
> #endif
>
> +#if HAVE_SYSINFO && HAVE_STRUCT_SYSINFO_MEM_UNIT
> + { /* This works on linux */
> + struct sysinfo si;
> + if (sysinfo(&si) == 0)
> + return (double) si.totalram * (double) si.mem_unit;
> + }
> +#endif
> +
> #if HAVE_PSTAT_GETSTATIC
> { /* This works on hpux11. */
> struct pst_static pss;
> diff --git a/m4/physmem.m4 b/m4/physmem.m4
> index ff3d268..a1179eb 100644
> --- a/m4/physmem.m4
> +++ b/m4/physmem.m4
> @@ -40,6 +40,7 @@ AC_DEFUN([gl_PHYSMEM],
> #endif
> ])
>
> - AC_CHECK_FUNCS([pstat_getstatic pstat_getdynamic sysmp getsysinfo sysctl
> table])
> + AC_CHECK_FUNCS([pstat_getstatic pstat_getdynamic sysmp getsysinfo sysctl
> table sysinfo])
> + AC_CHECK_MEMBERS([struct sysinfo.mem_unit],,, [[#include <sys/sysinfo.h>]])
> AC_REQUIRE([gl_SYS__SYSTEM_CONFIGURATION])
> ])
>
looks good,
though you might as well also adjust physmem_available() similarly.
I've done that in the attached and will push later.
thanks,
Pádraig.
musl-physmem_available.patch
Description: Text Data