mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 04:17:35 +00:00
LibCore: Use Core::Stream
for ProcessStatisticsReader
This commit is contained in:
parent
e338a0656d
commit
8940f2da7f
18 changed files with 55 additions and 95 deletions
|
@ -21,11 +21,9 @@ static void print_usage_and_exit()
|
|||
|
||||
static ErrorOr<int> kill_all(DeprecatedString const& process_name, unsigned const signum)
|
||||
{
|
||||
auto all_processes = Core::ProcessStatisticsReader::get_all();
|
||||
if (!all_processes.has_value())
|
||||
return 1;
|
||||
auto all_processes = TRY(Core::ProcessStatisticsReader::get_all());
|
||||
|
||||
for (auto& process : all_processes.value().processes) {
|
||||
for (auto& process : all_processes.processes) {
|
||||
if (process.name == process_name) {
|
||||
TRY(Core::System::kill(process.pid, signum));
|
||||
}
|
||||
|
|
|
@ -141,11 +141,9 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
}
|
||||
|
||||
outln("{:28} {:>4} {:>4} {:10} {:>4} {}", "COMMAND", "PID", "PGID", "USER", "FD", "NAME");
|
||||
auto all_processes = Core::ProcessStatisticsReader::get_all();
|
||||
if (!all_processes.has_value())
|
||||
return 1;
|
||||
auto all_processes = TRY(Core::ProcessStatisticsReader::get_all());
|
||||
if (arg_pid == -1) {
|
||||
for (auto& process : all_processes.value().processes) {
|
||||
for (auto& process : all_processes.processes) {
|
||||
if (process.pid == 0)
|
||||
continue;
|
||||
auto open_files = get_open_files_by_pid(process.pid);
|
||||
|
@ -170,7 +168,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
return 0;
|
||||
|
||||
for (auto& file : open_files) {
|
||||
display_entry(file, *all_processes->processes.find_if([&](auto& entry) { return entry.pid == arg_pid; }));
|
||||
display_entry(file, *all_processes.processes.find_if([&](auto& entry) { return entry.pid == arg_pid; }));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -58,11 +58,9 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
HashMap<pid_t, DeprecatedString> programs;
|
||||
|
||||
if (flag_program) {
|
||||
auto processes = Core::ProcessStatisticsReader::get_all();
|
||||
if (!processes.has_value())
|
||||
return 1;
|
||||
auto processes = TRY(Core::ProcessStatisticsReader::get_all());
|
||||
|
||||
for (auto& proc : processes.value().processes) {
|
||||
for (auto& proc : processes.processes) {
|
||||
programs.set(proc.pid, proc.name);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -38,12 +38,10 @@ ErrorOr<int> serenity_main(Main::Arguments args)
|
|||
return 1;
|
||||
}
|
||||
|
||||
auto all_processes = Core::ProcessStatisticsReader::get_all();
|
||||
if (!all_processes.has_value())
|
||||
return 1;
|
||||
auto all_processes = TRY(Core::ProcessStatisticsReader::get_all());
|
||||
|
||||
Vector<pid_t> matches;
|
||||
for (auto& it : all_processes.value().processes) {
|
||||
for (auto& it : all_processes.processes) {
|
||||
auto result = re.match(it.name, PosixFlags::Global);
|
||||
if (result.success ^ invert_match) {
|
||||
matches.append(it.pid);
|
||||
|
|
|
@ -18,11 +18,9 @@ static ErrorOr<int> pid_of(DeprecatedString const& process_name, bool single_sho
|
|||
{
|
||||
bool displayed_at_least_one = false;
|
||||
|
||||
auto all_processes = Core::ProcessStatisticsReader::get_all();
|
||||
if (!all_processes.has_value())
|
||||
return 1;
|
||||
auto all_processes = TRY(Core::ProcessStatisticsReader::get_all());
|
||||
|
||||
for (auto& it : all_processes.value().processes) {
|
||||
for (auto& it : all_processes.processes) {
|
||||
if (it.name == process_name) {
|
||||
if (!omit_pid || it.pid != pid) {
|
||||
out(displayed_at_least_one ? " {}"sv : "{}"sv, it.pid);
|
||||
|
|
|
@ -34,10 +34,7 @@ ErrorOr<int> serenity_main(Main::Arguments args)
|
|||
args_parser.add_positional_argument(pattern, "Process name to search for", "process-name");
|
||||
args_parser.parse(args);
|
||||
|
||||
auto all_processes = Core::ProcessStatisticsReader::get_all();
|
||||
if (!all_processes.has_value()) {
|
||||
return 1;
|
||||
}
|
||||
auto all_processes = TRY(Core::ProcessStatisticsReader::get_all());
|
||||
|
||||
PosixOptions options {};
|
||||
if (case_insensitive) {
|
||||
|
@ -50,7 +47,7 @@ ErrorOr<int> serenity_main(Main::Arguments args)
|
|||
}
|
||||
|
||||
Vector<Core::ProcessStatistics> matched_processes;
|
||||
for (auto& process : all_processes.value().processes) {
|
||||
for (auto& process : all_processes.processes) {
|
||||
auto result = re.match(process.name, PosixFlags::Global);
|
||||
if (result.success) {
|
||||
matched_processes.append(process);
|
||||
|
|
|
@ -98,11 +98,9 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
cmd_column = add_column("CMD", Alignment::Left);
|
||||
}
|
||||
|
||||
auto all_processes = Core::ProcessStatisticsReader::get_all();
|
||||
if (!all_processes.has_value())
|
||||
return 1;
|
||||
auto all_processes = TRY(Core::ProcessStatisticsReader::get_all());
|
||||
|
||||
auto& processes = all_processes.value().processes;
|
||||
auto& processes = all_processes.processes;
|
||||
|
||||
if (!pid_list.is_empty()) {
|
||||
every_process_flag = true;
|
||||
|
|
|
@ -89,14 +89,12 @@ struct Snapshot {
|
|||
u64 total_time_scheduled_kernel { 0 };
|
||||
};
|
||||
|
||||
static Snapshot get_snapshot()
|
||||
static ErrorOr<Snapshot> get_snapshot()
|
||||
{
|
||||
auto all_processes = Core::ProcessStatisticsReader::get_all();
|
||||
if (!all_processes.has_value())
|
||||
return {};
|
||||
auto all_processes = TRY(Core::ProcessStatisticsReader::get_all());
|
||||
|
||||
Snapshot snapshot;
|
||||
for (auto& process : all_processes.value().processes) {
|
||||
for (auto& process : all_processes.processes) {
|
||||
for (auto& thread : process.threads) {
|
||||
ThreadData thread_data;
|
||||
thread_data.tid = thread.tid;
|
||||
|
@ -126,8 +124,8 @@ static Snapshot get_snapshot()
|
|||
}
|
||||
}
|
||||
|
||||
snapshot.total_time_scheduled = all_processes->total_time_scheduled;
|
||||
snapshot.total_time_scheduled_kernel = all_processes->total_time_scheduled_kernel;
|
||||
snapshot.total_time_scheduled = all_processes.total_time_scheduled;
|
||||
snapshot.total_time_scheduled_kernel = all_processes.total_time_scheduled_kernel;
|
||||
|
||||
return snapshot;
|
||||
}
|
||||
|
@ -216,7 +214,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
enable_nonblocking_stdin();
|
||||
|
||||
Vector<ThreadData*> threads;
|
||||
auto prev = get_snapshot();
|
||||
auto prev = TRY(get_snapshot());
|
||||
usleep(10000);
|
||||
for (;;) {
|
||||
if (g_window_size_changed) {
|
||||
|
@ -224,7 +222,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
g_window_size_changed = false;
|
||||
}
|
||||
|
||||
auto current = get_snapshot();
|
||||
auto current = TRY(get_snapshot());
|
||||
auto total_scheduled_diff = current.total_time_scheduled - prev.total_time_scheduled;
|
||||
|
||||
printf("\033[3J\033[H\033[2J");
|
||||
|
|
|
@ -33,11 +33,7 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
return 1;
|
||||
}
|
||||
|
||||
auto process_statistics = Core::ProcessStatisticsReader::get_all();
|
||||
if (!process_statistics.has_value()) {
|
||||
warnln("Error: Could not get process statistics");
|
||||
return 1;
|
||||
}
|
||||
auto process_statistics = TRY(Core::ProcessStatisticsReader::get_all());
|
||||
|
||||
auto now = time(nullptr);
|
||||
|
||||
|
@ -70,7 +66,7 @@ ErrorOr<int> serenity_main(Main::Arguments)
|
|||
|
||||
DeprecatedString what = "n/a";
|
||||
|
||||
for (auto& process : process_statistics.value().processes) {
|
||||
for (auto& process : process_statistics.processes) {
|
||||
if (process.tty == tty && process.pid == process.pgid)
|
||||
what = process.name;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue