1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
#ifndef _SYS_RESOURCE_H
#include <resource/sys/resource.h>
#ifndef _ISOMAC
# include <time.h>
# include <string.h>
/* Internal version of rusage with a 64-bit time_t. */
#if __TIMESIZE == 64
# define __rusage64 rusage
#else
struct __rusage64
{
struct __timeval64 ru_utime;
struct __timeval64 ru_stime;
__extension__ union
{
long int ru_maxrss;
__syscall_slong_t __ru_maxrss_word;
};
__extension__ union
{
long int ru_ixrss;
__syscall_slong_t __ru_ixrss_word;
};
__extension__ union
{
long int ru_idrss;
__syscall_slong_t __ru_idrss_word;
};
__extension__ union
{
long int ru_isrss;
__syscall_slong_t __ru_isrss_word;
};
__extension__ union
{
long int ru_minflt;
__syscall_slong_t __ru_minflt_word;
};
__extension__ union
{
long int ru_majflt;
__syscall_slong_t __ru_majflt_word;
};
__extension__ union
{
long int ru_nswap;
__syscall_slong_t __ru_nswap_word;
};
__extension__ union
{
long int ru_inblock;
__syscall_slong_t __ru_inblock_word;
};
__extension__ union
{
long int ru_oublock;
__syscall_slong_t __ru_oublock_word;
};
__extension__ union
{
long int ru_msgsnd;
__syscall_slong_t __ru_msgsnd_word;
};
__extension__ union
{
long int ru_msgrcv;
__syscall_slong_t __ru_msgrcv_word;
};
__extension__ union
{
long int ru_nsignals;
__syscall_slong_t __ru_nsignals_word;
};
__extension__ union
{
long int ru_nvcsw;
__syscall_slong_t __ru_nvcsw_word;
};
__extension__ union
{
long int ru_nivcsw;
__syscall_slong_t __ru_nivcsw_word;
};
};
#endif
static inline void
rusage64_to_rusage (const struct __rusage64 *restrict r64,
struct rusage *restrict r)
{
/* Make sure the entire output structure is cleared, including
padding and reserved fields. */
memset (r, 0, sizeof *r);
r->ru_utime = valid_timeval64_to_timeval (r64->ru_utime);
r->ru_stime = valid_timeval64_to_timeval (r64->ru_stime);
r->ru_maxrss = r64->ru_maxrss;
r->ru_ixrss = r64->ru_ixrss;
r->ru_idrss = r64->ru_idrss;
r->ru_isrss = r64->ru_isrss;
r->ru_minflt = r64->ru_minflt;
r->ru_majflt = r64->ru_majflt;
r->ru_nswap = r64->ru_nswap;
r->ru_inblock = r64->ru_inblock;
r->ru_oublock = r64->ru_oublock;
r->ru_msgsnd = r64->ru_msgsnd;
r->ru_msgrcv = r64->ru_msgrcv;
r->ru_nsignals = r64->ru_nsignals;
r->ru_nvcsw = r64->ru_nvcsw;
r->ru_nivcsw = r64->ru_nivcsw;
}
/* Prototypes repeated instead of using __typeof because
sys/resource.h is included in C++ tests, and declaring functions
with __typeof and __THROW doesn't work for C++. */
extern int __getpriority (__priority_which_t __which, id_t __who) __THROW;
libc_hidden_proto (__getpriority)
extern int __setpriority (__priority_which_t __which, id_t __who, int __prio)
__THROW;
libc_hidden_proto (__setpriority)
libc_hidden_proto (getrlimit64)
extern __typeof (getrlimit64) __getrlimit64;
libc_hidden_proto (__getrlimit64);
/* Now define the internal interfaces. */
extern int __getrlimit (enum __rlimit_resource __resource,
struct rlimit *__rlimits) __nonnull ((2));
libc_hidden_proto (__getrlimit)
extern int __getrusage (enum __rusage_who __who, struct rusage *__usage)
attribute_hidden;
extern int __setrlimit (enum __rlimit_resource __resource,
const struct rlimit *__rlimits) __nonnull ((2));
libc_hidden_proto (__setrlimit);
#if __TIMESIZE == 64
# define __getrusage64 __getrusage
# define __wait4_time64 __wait4
# define __wait3_time64 __wait3
#else
extern int __getrusage64 (enum __rusage_who who, struct __rusage64 *usage);
libc_hidden_proto (__getrusage64)
extern pid_t __wait4_time64 (pid_t pid, int *stat_loc, int options,
struct __rusage64 *usage);
libc_hidden_proto (__wait4_time64)
extern pid_t __wait3_time64 (int *stat_loc, int options,
struct __rusage64 *usage);
libc_hidden_proto (__wait3_time64)
#endif
#endif
#endif
|