diff --git a/Libraries/LibC/serenity.cpp b/Libraries/LibC/serenity.cpp index 5b47f6ae41..7ada371ad8 100644 --- a/Libraries/LibC/serenity.cpp +++ b/Libraries/LibC/serenity.cpp @@ -47,4 +47,10 @@ int futex(int32_t* userspace_address, int futex_op, int32_t value, const struct __RETURN_WITH_ERRNO(rc, rc, -1); } +int purge(int mode) +{ + int rc = syscall(SC_purge, mode); + __RETURN_WITH_ERRNO(rc, rc, -1); +} + } diff --git a/Libraries/LibC/serenity.h b/Libraries/LibC/serenity.h index 634d804502..5ab39f7da0 100644 --- a/Libraries/LibC/serenity.h +++ b/Libraries/LibC/serenity.h @@ -58,4 +58,9 @@ int set_process_boost(pid_t, int amount); int futex(int32_t* userspace_address, int futex_op, int32_t value, const struct timespec* timeout); +#define PURGE_ALL_VOLATILE 0x1 +#define PURGE_ALL_CLEAN_INODE 0x2 + +int purge(int mode); + __END_DECLS diff --git a/Userland/purge.cpp b/Userland/purge.cpp index 7979133e50..4e3f16861e 100644 --- a/Userland/purge.cpp +++ b/Userland/purge.cpp @@ -1,10 +1,8 @@ #include +#include #include #include -#define PURGE_ALL_VOLATILE 0x1 -#define PURGE_ALL_CLEAN_INODE 0x2 - int main(int argc, char** argv) { int mode = 0; @@ -20,7 +18,11 @@ int main(int argc, char** argv) return 1; } } - int purged_page_count = syscall(SC_purge, mode); + int purged_page_count = purge(mode); + if (purged_page_count < 0) { + perror("purge"); + return 1; + } printf("Purged page count: %d\n", purged_page_count); return 0; }