]> git.proxmox.com Git - wasi-libc.git/blame - libc-bottom-half/clocks/getrusage.c
Use bulk memory opcodes when possible
[wasi-libc.git] / libc-bottom-half / clocks / getrusage.c
CommitLineData
b9b64a69
DG
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
c82d116d
DG
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.
b9b64a69
DG
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}