1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-22 19:45:08 +00:00
serenity/Applications/ProcessManager/ProcessModel.h
Andreas Kling 0ed89440f1 ProcessManager+top: Rename "linear" size to "virtual" size.
I originally called it "linear" because that's how the Intel manual names
virtual addresses in many cases. I'm ready to accept that most people know
this as "virtual" so let's just call it that.
2019-06-07 12:44:29 +02:00

70 lines
1.7 KiB
C++

#pragma once
#include <AK/AKString.h>
#include <AK/HashMap.h>
#include <AK/Vector.h>
#include <LibCore/CFile.h>
#include <LibGUI/GModel.h>
#include <unistd.h>
class GraphWidget;
class ProcessModel final : public GModel {
public:
enum Column
{
Icon = 0,
Name,
CPU,
State,
Priority,
User,
PID,
Virtual,
Physical,
Syscalls,
__Count
};
static Retained<ProcessModel> create(GraphWidget& graph) { return adopt(*new ProcessModel(graph)); }
virtual ~ProcessModel() override;
virtual int row_count(const GModelIndex&) const override;
virtual int column_count(const GModelIndex&) const override;
virtual String column_name(int column) const override;
virtual ColumnMetadata column_metadata(int column) const override;
virtual GVariant data(const GModelIndex&, Role = Role::Display) const override;
virtual void update() override;
private:
explicit ProcessModel(GraphWidget&);
GraphWidget& m_graph;
struct ProcessState {
pid_t pid;
unsigned nsched;
String name;
String state;
String user;
String priority;
size_t virtual_size;
size_t physical_size;
unsigned syscalls;
float cpu_percent;
};
struct Process {
ProcessState current_state;
ProcessState previous_state;
};
HashMap<uid_t, String> m_usernames;
HashMap<pid_t, OwnPtr<Process>> m_processes;
Vector<pid_t> m_pids;
RetainPtr<GraphicsBitmap> m_generic_process_icon;
RetainPtr<GraphicsBitmap> m_high_priority_icon;
RetainPtr<GraphicsBitmap> m_low_priority_icon;
RetainPtr<GraphicsBitmap> m_normal_priority_icon;
CFile m_proc_all;
};