diff --git a/libc/CMakeLists.txt b/libc/CMakeLists.txt index 1123601d..75033f6a 100644 --- a/libc/CMakeLists.txt +++ b/libc/CMakeLists.txt @@ -26,6 +26,7 @@ set(SOURCES src/sys/utsname.cpp src/sys/mount.cpp src/sys/pstat.cpp + src/sys/resource.cpp ) if(${LUNA_ARCH} STREQUAL "x86_64") diff --git a/libc/include/sys/resource.h b/libc/include/sys/resource.h new file mode 100644 index 00000000..1f6a8d84 --- /dev/null +++ b/libc/include/sys/resource.h @@ -0,0 +1,20 @@ +/* sys/resource.h: System resource management. */ + +#ifndef _SYS_RESOURCE_H +#define _SYS_RESOURCE_H + +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + + /* Get this process or its children's resource usage. */ + int getrusage(int who, struct rusage* ru); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libc/src/sys/resource.cpp b/libc/src/sys/resource.cpp new file mode 100644 index 00000000..f408906d --- /dev/null +++ b/libc/src/sys/resource.cpp @@ -0,0 +1,13 @@ +#include +#include +#include +#include + +extern "C" +{ + int getrusage(int who, struct rusage* ru) + { + long rc = syscall(SYS_getrusage, who, ru); + __errno_return(rc, int); + } +}