diff options
Diffstat (limited to 'resource/vtimes.c')
-rw-r--r-- | resource/vtimes.c | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/resource/vtimes.c b/resource/vtimes.c index 56eed4cb35..a18c8188a6 100644 --- a/resource/vtimes.c +++ b/resource/vtimes.c @@ -16,12 +16,48 @@ <https://www.gnu.org/licenses/>. */ #include <stddef.h> -#include <sys/vtimes.h> #include <sys/resource.h> +#include <shlib-compat.h> + +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_33) + +/* Granularity of the `vm_utime' and `vm_stime' fields of a `struct vtimes'. + (This is the frequency of the machine's power supply, in Hz.) */ +# define VTIMES_UNITS_PER_SECOND 60 + +struct vtimes +{ + /* User time used in units of 1/VTIMES_UNITS_PER_SECOND seconds. */ + int vm_utime; + /* System time used in units of 1/VTIMES_UNITS_PER_SECOND seconds. */ + int vm_stime; + + /* Amount of data and stack memory used (kilobyte-seconds). */ + unsigned int vm_idsrss; + /* Amount of text memory used (kilobyte-seconds). */ + unsigned int vm_ixrss; + /* Maximum resident set size (text, data, and stack) (kilobytes). */ + int vm_maxrss; + + /* Number of hard page faults (i.e. those that required I/O). */ + int vm_majflt; + /* Number of soft page faults (i.e. those serviced by reclaiming + a page from the list of pages awaiting reallocation. */ + int vm_minflt; + + /* Number of times a process was swapped out of physical memory. */ + int vm_nswap; + + /* Number of input operations via the file system. Note: This + and `ru_oublock' do not include operations with the cache. */ + int vm_inblk; + /* Number of output operations via the file system. */ + int vm_oublk; +}; /* Return the number of 1/VTIMES_UNITS_PER_SECOND-second units in the `struct timeval' TV. */ -#define TIMEVAL_TO_VTIMES(tv) \ +# define TIMEVAL_TO_VTIMES(tv) \ ((tv.tv_sec * VTIMES_UNITS_PER_SECOND) \ + (tv.tv_usec * VTIMES_UNITS_PER_SECOND / 1000000)) @@ -53,10 +89,13 @@ vtimes_one (struct vtimes *vt, enum __rusage_who who) *CURRENT. If CHILD is not NULL, write statistics for all terminated child processes into *CHILD. Returns 0 for success, -1 for failure. */ int -vtimes (struct vtimes *current, struct vtimes *child) +__vtimes (struct vtimes *current, struct vtimes *child) { if (vtimes_one (current, RUSAGE_SELF) < 0 || vtimes_one (child, RUSAGE_CHILDREN) < 0) return -1; return 0; } +compat_symbol (libc, __vtimes, vtimes, GLIBC_2_0); + +#endif /* SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_33) */ |