master
 1#define _WASI_EMULATED_PROCESS_CLOCKS
 2#include <sys/resource.h>
 3#include <errno.h>
 4#include <time.h>
 5#include <wasi/api.h>
 6#include <common/time.h>
 7
 8// `clock` is a weak symbol so that application code can override it.
 9// We want to use the function in libc, so use the libc-internal name.
10clock_t __clock(void);
11
12int getrusage(int who, struct rusage *r_usage) {
13    switch (who) {
14    case RUSAGE_SELF: {
15        __wasi_timestamp_t usertime = __clock();
16        *r_usage = (struct rusage) {
17            .ru_utime = timestamp_to_timeval(usertime)
18	};
19        return 0;
20    }
21    case RUSAGE_CHILDREN:
22        *r_usage = (struct rusage) {};
23        return 0;
24    default:
25        errno = EINVAL;
26        return -1;
27    }
28}