diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2012-05-22 05:32:34 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2012-05-22 05:32:34 -0700 |
commit | 5e1a27a96de16ad0cd67a81e25741790b32e2c25 (patch) | |
tree | cfbc1db07dc5308209dc2c18891d028d7942e878 /sysdeps | |
parent | 46259beccca5f4b3a6c64a1b84b2c09f079eb3ae (diff) | |
download | glibc-5e1a27a96de16ad0cd67a81e25741790b32e2c25.tar.gz glibc-5e1a27a96de16ad0cd67a81e25741790b32e2c25.tar.xz glibc-5e1a27a96de16ad0cd67a81e25741790b32e2c25.zip |
Pad each field to __syscall_slong_t in struct rusage
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/unix/sysv/linux/bits/resource.h | 95 |
1 files changed, 78 insertions, 17 deletions
diff --git a/sysdeps/unix/sysv/linux/bits/resource.h b/sysdeps/unix/sysv/linux/bits/resource.h index be852e5247..62cb257410 100644 --- a/sysdeps/unix/sysv/linux/bits/resource.h +++ b/sysdeps/unix/sysv/linux/bits/resource.h @@ -1,6 +1,5 @@ /* Bit values & structures for resource limits. Linux version. - Copyright (C) 1994, 1996-2000, 2004, 2005, 2008, 2009, 2010, 2011, 2012 - Free Software Foundation, Inc. + Copyright (C) 1994-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -113,7 +112,7 @@ enum __rlimit_resource /* Value to indicate that there is no limit. */ #ifndef __USE_FILE_OFFSET64 -# define RLIM_INFINITY ((unsigned long int)(~0UL)) +# define RLIM_INFINITY ((__rlim_t) -1) #else # define RLIM_INFINITY 0xffffffffffffffffuLL #endif @@ -180,6 +179,11 @@ enum __rusage_who #include <bits/time.h> /* For `struct timeval'. */ /* Structure which says how much of each resource has been used. */ + +/* The purpose of all the unions is to have the kernel-compatible layout + while keeping the API type as 'long int', and among machines where + __syscall_slong_t is not 'long int', this only does the right thing + for little-endian ones, like x32. */ struct rusage { /* Total amount of user time used. */ @@ -187,39 +191,96 @@ struct rusage /* Total amount of system time used. */ struct timeval ru_stime; /* Maximum resident set size (in kilobytes). */ - long int ru_maxrss; + __extension__ union + { + long int ru_maxrss; + __syscall_slong_t __ru_maxrss_word; + }; /* Amount of sharing of text segment memory with other processes (kilobyte-seconds). */ - long int ru_ixrss; + /* Maximum resident set size (in kilobytes). */ + __extension__ union + { + long int ru_ixrss; + __syscall_slong_t __ru_ixrss_word; + }; /* Amount of data segment memory used (kilobyte-seconds). */ - long int ru_idrss; + __extension__ union + { + long int ru_idrss; + __syscall_slong_t __ru_idrss_word; + }; /* Amount of stack memory used (kilobyte-seconds). */ - long int ru_isrss; + __extension__ union + { + long int ru_isrss; + __syscall_slong_t __ru_isrss_word; + }; /* Number of soft page faults (i.e. those serviced by reclaiming a page from the list of pages awaiting reallocation. */ - long int ru_minflt; + __extension__ union + { + long int ru_minflt; + __syscall_slong_t __ru_minflt_word; + }; /* Number of hard page faults (i.e. those that required I/O). */ - long int ru_majflt; + __extension__ union + { + long int ru_majflt; + __syscall_slong_t __ru_majflt_word; + }; /* Number of times a process was swapped out of physical memory. */ - long int ru_nswap; + __extension__ union + { + long int ru_nswap; + __syscall_slong_t __ru_nswap_word; + }; /* Number of input operations via the file system. Note: This and `ru_oublock' do not include operations with the cache. */ - long int ru_inblock; + __extension__ union + { + long int ru_inblock; + __syscall_slong_t __ru_inblock_word; + }; /* Number of output operations via the file system. */ - long int ru_oublock; + __extension__ union + { + long int ru_oublock; + __syscall_slong_t __ru_oublock_word; + }; /* Number of IPC messages sent. */ - long int ru_msgsnd; + __extension__ union + { + long int ru_msgsnd; + __syscall_slong_t __ru_msgsnd_word; + }; /* Number of IPC messages received. */ - long int ru_msgrcv; + __extension__ union + { + long int ru_msgrcv; + __syscall_slong_t __ru_msgrcv_word; + }; /* Number of signals delivered. */ - long int ru_nsignals; + __extension__ union + { + long int ru_nsignals; + __syscall_slong_t __ru_nsignals_word; + }; /* Number of voluntary context switches, i.e. because the process gave up the process before it had to (usually to wait for some resource to be available). */ - long int ru_nvcsw; + __extension__ union + { + long int ru_nvcsw; + __syscall_slong_t __ru_nvcsw_word; + }; /* Number of involuntary context switches, i.e. a higher priority process became runnable or the current process used up its time slice. */ - long int ru_nivcsw; + __extension__ union + { + long int ru_nivcsw; + __syscall_slong_t __ru_nivcsw_word; + }; }; /* Priority limits. */ |