mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:57:35 +00:00
Kernel+ProcessManager: Let processes have an icon and show it in the table.
Processes can now have an icon assigned, which is essentially a 16x16 RGBA32 bitmap exposed as a shared buffer ID. You set the icon ID by calling set_process_icon(int) and the icon ID will be exposed through /proc/all. To make this work, I added a mechanism for making shared buffers globally accessible. For safety reasons, each app seals the icon buffer before making it global. Right now the first call to GWindow::set_icon() is what determines the process icon. We'll probably change this in the future. :^)
This commit is contained in:
parent
7356fd389f
commit
5ded77df39
14 changed files with 97 additions and 2 deletions
|
@ -22,6 +22,7 @@ class PageDirectory;
|
|||
class Region;
|
||||
class VMObject;
|
||||
class ProcessTracer;
|
||||
class SharedBuffer;
|
||||
|
||||
timeval kgettimeofday();
|
||||
void kgettimeofday(timeval&);
|
||||
|
@ -208,12 +209,14 @@ public:
|
|||
int sys$mknod(const char* pathname, mode_t, dev_t);
|
||||
int sys$create_shared_buffer(int, void** buffer);
|
||||
int sys$share_buffer_with(int, pid_t peer_pid);
|
||||
int sys$share_buffer_globally(int);
|
||||
void* sys$get_shared_buffer(int shared_buffer_id);
|
||||
int sys$release_shared_buffer(int shared_buffer_id);
|
||||
int sys$seal_shared_buffer(int shared_buffer_id);
|
||||
int sys$get_shared_buffer_size(int shared_buffer_id);
|
||||
int sys$halt();
|
||||
int sys$reboot();
|
||||
int sys$set_process_icon(int icon_id);
|
||||
|
||||
static void initialize();
|
||||
|
||||
|
@ -281,6 +284,8 @@ public:
|
|||
|
||||
const ELFLoader* elf_loader() const { return m_elf_loader.ptr(); }
|
||||
|
||||
int icon_id() const { return m_icon_id; }
|
||||
|
||||
private:
|
||||
friend class MemoryManager;
|
||||
friend class Scheduler;
|
||||
|
@ -359,6 +364,8 @@ private:
|
|||
Lock m_big_lock { "Process" };
|
||||
|
||||
u64 m_alarm_deadline { 0 };
|
||||
|
||||
int m_icon_id { -1 };
|
||||
};
|
||||
|
||||
class ProcessInspectionHandle {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue