rusage
pid_t wait3(int *status, int options, struct rusage *rusage);
pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage);
extern int getrusage(int who, struct rusage *rusage);
pid_t _wait3_base(int *status, int options, struct rusage *rusage);
pid_t _wait4_base(pid_t pid, int *status, int options, struct rusage *rusage);
pid_t _wait3_current(int *status, int options, struct rusage *rusage);
struct rusage *rusage);
_wait3_base(int *status, int options, struct rusage *rusage)
return _wait4_base(-1, status, options, rusage);
_wait4_base(pid_t pid, int *status, int options, struct rusage *rusage)
rusage != NULL ? &info : NULL);
if (waitPid != -1 && rusage != NULL) {
rusage->ru_utime.tv_sec = info.user_time / 1000000;
rusage->ru_utime.tv_usec = info.user_time % 1000000;
rusage->ru_stime.tv_sec = info.kernel_time / 1000000;
rusage->ru_stime.tv_usec = info.kernel_time % 1000000;
_wait3_current(int *status, int options, struct rusage *rusage)
return _wait4_current(-1, status, options, rusage);
_wait4_current(pid_t pid, int *status, int options, struct rusage *rusage)
pid_t waitPid = _wait4_base(pid, status, options, rusage);
if (waitPid != -1 && rusage != NULL) {
memset(&rusage->ru_maxrss, 0, sizeof(struct rusage) -
offsetof(struct rusage, ru_maxrss));
int _getrusage_base(int who, struct rusage *rusage);
int _getrusage_current(int who, struct rusage *rusage);
_getrusage_base(int who, struct rusage *rusage)
rusage->ru_utime.tv_sec = info.user_time / 1000000;
rusage->ru_utime.tv_usec = info.user_time % 1000000;
rusage->ru_stime.tv_sec = info.kernel_time / 1000000;
rusage->ru_stime.tv_usec = info.kernel_time % 1000000;
_getrusage_current(int who, struct rusage *rusage)
int err = _getrusage_base(who, rusage);
memset(&rusage->ru_maxrss, 0, sizeof(struct rusage) -
offsetof(struct rusage, ru_maxrss));
struct rusage usage;