lh | 9ed821d | 2023-04-07 01:36:19 -0700 | [diff] [blame^] | 1 | /* Copyright (C) 1996, 1999, 2001 Free Software Foundation, Inc. |
| 2 | This file is part of the GNU C Library. |
| 3 | |
| 4 | The GNU C Library is free software; you can redistribute it and/or |
| 5 | modify it under the terms of the GNU Lesser General Public |
| 6 | License as published by the Free Software Foundation; either |
| 7 | version 2.1 of the License, or (at your option) any later version. |
| 8 | |
| 9 | The GNU C Library is distributed in the hope that it will be useful, |
| 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 12 | Lesser General Public License for more details. |
| 13 | |
| 14 | You should have received a copy of the GNU Lesser General Public |
| 15 | License along with the GNU C Library; if not, write to the Free |
| 16 | Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA |
| 17 | 02111-1307 USA. */ |
| 18 | |
| 19 | #ifndef _SYS_SYSINFO_H |
| 20 | #define _SYS_SYSINFO_H 1 |
| 21 | |
| 22 | #include <features.h> |
| 23 | |
| 24 | #ifndef _LINUX_KERNEL_H |
| 25 | /* Include our own copy of struct sysinfo to avoid binary compatability |
| 26 | * problems with Linux 2.4, which changed things. Grumble, grumble. */ |
| 27 | #define SI_LOAD_SHIFT 16 |
| 28 | struct sysinfo { |
| 29 | long uptime; /* Seconds since boot */ |
| 30 | unsigned long loads[3]; /* 1, 5, and 15 minute load averages */ |
| 31 | unsigned long totalram; /* Total usable main memory size */ |
| 32 | unsigned long freeram; /* Available memory size */ |
| 33 | unsigned long sharedram; /* Amount of shared memory */ |
| 34 | unsigned long bufferram; /* Memory used by buffers */ |
| 35 | unsigned long totalswap; /* Total swap space size */ |
| 36 | unsigned long freeswap; /* swap space still available */ |
| 37 | unsigned short procs; /* Number of current processes */ |
| 38 | unsigned short pad; /* Padding needed for m68k */ |
| 39 | unsigned long totalhigh; /* Total high memory size */ |
| 40 | unsigned long freehigh; /* Available high memory size */ |
| 41 | unsigned int mem_unit; /* Memory unit size in bytes */ |
| 42 | char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */ |
| 43 | }; |
| 44 | #endif |
| 45 | |
| 46 | __BEGIN_DECLS |
| 47 | |
| 48 | /* Returns information on overall system statistics. */ |
| 49 | extern int sysinfo (struct sysinfo *__info) __THROW; |
| 50 | |
| 51 | /* Return number of configured processors. */ |
| 52 | #define get_nprocs_conf() (sysconf(_SC_NPROCESSORS_CONF)) |
| 53 | |
| 54 | /* Return number of available processors. */ |
| 55 | #define get_nprocs() (sysconf(_SC_NPROCESSORS_ONLN)) |
| 56 | |
| 57 | |
| 58 | #if 0 |
| 59 | /* Return number of physical pages of memory in the system. */ |
| 60 | extern long int get_phys_pages (void) __THROW; |
| 61 | |
| 62 | /* Return number of available physical pages of memory in the system. */ |
| 63 | extern long int get_avphys_pages (void) __THROW; |
| 64 | #endif |
| 65 | |
| 66 | __END_DECLS |
| 67 | |
| 68 | #endif /* sys/sysinfo.h */ |