Serenity Operating System
1/*
2 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#include <LibCore/ArgsParser.h>
8#include <LibMain/Main.h>
9#include <serenity.h>
10#include <stdio.h>
11
12ErrorOr<int> serenity_main(Main::Arguments arguments)
13{
14 int mode = 0;
15
16 bool purge_all_volatile = false;
17 bool purge_all_clean_inode = false;
18
19 Core::ArgsParser args_parser;
20 args_parser.add_option(purge_all_volatile, "Mode PURGE_ALL_VOLATILE", nullptr, 'v');
21 args_parser.add_option(purge_all_clean_inode, "Mode PURGE_ALL_CLEAN_INODE", nullptr, 'c');
22 args_parser.parse(arguments);
23
24 if (!purge_all_volatile && !purge_all_clean_inode)
25 purge_all_volatile = purge_all_clean_inode = true;
26
27 if (purge_all_volatile)
28 mode |= PURGE_ALL_VOLATILE;
29 if (purge_all_clean_inode)
30 mode |= PURGE_ALL_CLEAN_INODE;
31
32 int purged_page_count = purge(mode);
33 if (purged_page_count < 0) {
34 perror("purge");
35 return 1;
36 }
37 outln("Purged page count: {}", purged_page_count);
38 return 0;
39}