1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-06-11 23:02:07 +00:00
serenity/Kernel/ProcFileSystem.h
Andreas Kling f7cc454162 Add mechanism to expose kernel variables to userspace via ProcFS.
Only booleans are supported at first. More types can be added easily.
Use this to add /proc/sys/wm_flash_flush which when enabled flashes pending
screen flush rects in yellow before they happen.
2019-01-18 15:01:40 +01:00

31 lines
763 B
C++

#pragma once
#include <AK/Types.h>
#include <VirtualFileSystem/SyntheticFileSystem.h>
class Process;
class ProcFS final : public SynthFS {
public:
static ProcFS& the() PURE;
virtual ~ProcFS() override;
static RetainPtr<ProcFS> create();
virtual bool initialize() override;
virtual const char* class_name() const override;
void add_process(Process&);
void remove_process(Process&);
void add_sys_file(String&&, Function<ByteBuffer(SynthFSInode&)>&& read_callback, Function<ssize_t(SynthFSInode&, const ByteBuffer&)>&& write_callback);
void add_sys_bool(String&&, bool*, Function<void()>&& change_callback = nullptr);
private:
ProcFS();
HashMap<pid_t, InodeIndex> m_pid2inode;
InodeIdentifier m_sys_dir;
};