/**
 * D header file for GNU/Linux.
 *
 * License:   $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
 * Authors:   Martin Nowak
 */
module core.sys.linux.sys.sysinfo;

version (linux) extern(C) @nogc nothrow:

import core.sys.linux.config;

// linux/sysinfo.h
enum SI_LOAD_SHIFT = 16;

struct sysinfo_
{
    c_long uptime;     /* Seconds since boot */
    c_ulong[3] loads;  /* 1, 5, and 15 minute load averages */
    c_ulong totalram;  /* Total usable main memory size */
    c_ulong freeram;   /* Available memory size */
    c_ulong sharedram; /* Amount of shared memory */
    c_ulong bufferram; /* Memory used by buffers */
    c_ulong totalswap; /* Total swap space size */
    c_ulong freeswap;  /* swap space still available */
    ushort procs;      /* Number of current processes */
    ushort pad;        /* Explicit padding for m68k */
    c_ulong totalhigh; /* Total high memory size */
    c_ulong freehigh;  /* Available high memory size */
    uint mem_unit;     /* Memory unit size in bytes */
    ubyte[20-2 * c_ulong.sizeof - uint.sizeof] _f; /* Padding: libc5 uses this.. */
}


int sysinfo(sysinfo_ *info);
int get_nprocs_conf();
int get_nprocs();
c_long get_phys_pages();
c_long get_avphys_pages();