static Array HHVM_FUNCTION(getrusage, int64_t who /* = 0 */) { struct rusage usg; memset(&usg, 0, sizeof(struct rusage)); int actual_who; switch (who) { case 1: actual_who = RUSAGE_CHILDREN; break; case 2: #ifdef RUSAGE_THREAD actual_who = RUSAGE_THREAD; #else throw_not_supported(__func__, "RUSAGE_THREAD is not defined on this sytem"); #endif break; default: actual_who = RUSAGE_SELF; break; } if (getrusage(actual_who, &usg) == -1) { raise_error("getrusage returned %d: %s", errno, folly::errnoStr(errno).c_str()); } return Array(ArrayInit(17, ArrayInit::Mixed{}). set(PHP_RUSAGE_PARA(ru_oublock)). set(PHP_RUSAGE_PARA(ru_inblock)). set(PHP_RUSAGE_PARA(ru_msgsnd)). set(PHP_RUSAGE_PARA(ru_msgrcv)). set(PHP_RUSAGE_PARA(ru_maxrss)). set(PHP_RUSAGE_PARA(ru_ixrss)). set(PHP_RUSAGE_PARA(ru_idrss)). set(PHP_RUSAGE_PARA(ru_minflt)). set(PHP_RUSAGE_PARA(ru_majflt)). set(PHP_RUSAGE_PARA(ru_nsignals)). set(PHP_RUSAGE_PARA(ru_nvcsw)). set(PHP_RUSAGE_PARA(ru_nivcsw)). set(PHP_RUSAGE_PARA(ru_nswap)). set(s_ru_utime_tv_usec, (int64_t)usg.ru_utime.tv_usec). set(s_ru_utime_tv_sec, (int64_t)usg.ru_utime.tv_sec). set(s_ru_stime_tv_usec, (int64_t)usg.ru_stime.tv_usec). set(s_ru_stime_tv_sec, (int64_t)usg.ru_stime.tv_sec). toArray()); }
static Array HHVM_FUNCTION(getrusage, int64_t who /* = 0 */) { struct rusage usg; memset(&usg, 0, sizeof(struct rusage)); if (getrusage(who == 1 ? RUSAGE_CHILDREN : RUSAGE_SELF, &usg) == -1) { throw SystemCallFailure("getrusage"); } return Array(ArrayInit(17, ArrayInit::Mixed{}). set(PHP_RUSAGE_PARA(ru_oublock)). set(PHP_RUSAGE_PARA(ru_inblock)). set(PHP_RUSAGE_PARA(ru_msgsnd)). set(PHP_RUSAGE_PARA(ru_msgrcv)). set(PHP_RUSAGE_PARA(ru_maxrss)). set(PHP_RUSAGE_PARA(ru_ixrss)). set(PHP_RUSAGE_PARA(ru_idrss)). set(PHP_RUSAGE_PARA(ru_minflt)). set(PHP_RUSAGE_PARA(ru_majflt)). set(PHP_RUSAGE_PARA(ru_nsignals)). set(PHP_RUSAGE_PARA(ru_nvcsw)). set(PHP_RUSAGE_PARA(ru_nivcsw)). set(PHP_RUSAGE_PARA(ru_nswap)). set(s_ru_utime_tv_usec, (int64_t)usg.ru_utime.tv_usec). set(s_ru_utime_tv_sec, (int64_t)usg.ru_utime.tv_sec). set(s_ru_stime_tv_usec, (int64_t)usg.ru_stime.tv_usec). set(s_ru_stime_tv_sec, (int64_t)usg.ru_stime.tv_sec). create()); }
static Array HHVM_FUNCTION(getrusage, int64_t who /* = 0 */) { struct rusage usg; memset(&usg, 0, sizeof(struct rusage)); if (getrusage(who == 1 ? RUSAGE_CHILDREN : RUSAGE_SELF, &usg) == -1) { raise_error("getrusage returned %d: %s", errno, folly::errnoStr(errno).c_str()); } return Array(ArrayInit(17, ArrayInit::Mixed{}). set(PHP_RUSAGE_PARA(ru_oublock)). set(PHP_RUSAGE_PARA(ru_inblock)). set(PHP_RUSAGE_PARA(ru_msgsnd)). set(PHP_RUSAGE_PARA(ru_msgrcv)). set(PHP_RUSAGE_PARA(ru_maxrss)). set(PHP_RUSAGE_PARA(ru_ixrss)). set(PHP_RUSAGE_PARA(ru_idrss)). set(PHP_RUSAGE_PARA(ru_minflt)). set(PHP_RUSAGE_PARA(ru_majflt)). set(PHP_RUSAGE_PARA(ru_nsignals)). set(PHP_RUSAGE_PARA(ru_nvcsw)). set(PHP_RUSAGE_PARA(ru_nivcsw)). set(PHP_RUSAGE_PARA(ru_nswap)). set(s_ru_utime_tv_usec, (int64_t)usg.ru_utime.tv_usec). set(s_ru_utime_tv_sec, (int64_t)usg.ru_utime.tv_sec). set(s_ru_stime_tv_usec, (int64_t)usg.ru_stime.tv_usec). set(s_ru_stime_tv_sec, (int64_t)usg.ru_stime.tv_sec). toArray()); }