Jusqu'au noyau 2.3.16,
sysinfo()
renvoyait les informations dans la structure suivante :
struct sysinfo {
long uptime; /* Secondes écoulées depuis le boot.*/
unsigned long loads[3]; /* Charges depuis 1, 5, et 15 mn. */
unsigned long totalram; /* Mémoire totale du système. */
unsigned long freeram; /* Mémoire disponible. */
unsigned long sharedram; /* Mémoire partagée. */
unsigned long bufferram; /* Mémoire utilisée par les tampons */
unsigned long totalswap; /* Taille totale du swap. */
unsigned long freeswap; /* Espace disponible dans le swap. */
unsigned short procs; /* Nombre de processus actuels. */
char _f[22]; /* Remplissage jusqu'à 64 octets. */
};
et les tailles étaient fournies en octets.
Depuis le noyau 2.3.23 (i386) et 2.3.48 (toutes architectures),
la structure est devenue :
struct sysinfo {
long uptime; /* Secondes écoulées depuis le boot.*/
unsigned long loads[3]; /* Charges depuis 1, 5, et 15 mn. */
unsigned long totalram; /* Mémoire totale du système. */
unsigned long freeram; /* Mémoire disponible. */
unsigned long sharedram; /* Mémoire partagée. */
unsigned long bufferram; /* Mémoire utilisée par les tampons */
unsigned long totalswap; /* Taille totale du swap. */
unsigned long freeswap; /* Espace disponible dans le swap. */
unsigned short procs; /* Nombre de processus actuels. */
unsigned long totalhigh; /* Taille totale mémoire haute. */
unsigned long freehigh; /* Taille mémoire haute libre. */
usigned int mem_unit; /* Taille de bloc mémoire en octets */
char _f [20 - 2*sizeof(long) - sizeof(int)]; /* remplissage */
};
et les tailles sont indiquées sous forme de multiples de mem_unit.
sysinfo()
permet d'obtenir facilement des statistiques systèmes.
C'est plus portable que la lecture de
/dev/kmem.