mirror of
https://github.com/SerenityOS/serenity
synced 2024-07-23 11:04:40 +00:00
Add subregions to /proc/PID/vm
This commit is contained in:
parent
1d5afbdffc
commit
0a6a2521e8
|
@ -30,7 +30,7 @@ ByteBuffer procfs$pid_vm(const Task& task)
|
|||
{
|
||||
InterruptDisabler disabler;
|
||||
char* buffer;
|
||||
auto stringImpl = StringImpl::createUninitialized(80 + task.regionCount() * 80, buffer);
|
||||
auto stringImpl = StringImpl::createUninitialized(80 + task.regionCount() * 80 + 80 + task.subregionCount() * 80, buffer);
|
||||
memset(buffer, 0, stringImpl->length());
|
||||
char* ptr = buffer;
|
||||
ptr += ksprintf(ptr, "BEGIN END SIZE NAME\n");
|
||||
|
@ -41,6 +41,18 @@ ByteBuffer procfs$pid_vm(const Task& task)
|
|||
region->size,
|
||||
region->name.characters());
|
||||
}
|
||||
if (task.subregionCount()) {
|
||||
ptr += ksprintf(ptr, "\nREGION OFFSET BEGIN END SIZE NAME\n");
|
||||
for (auto& subregion : task.subregions()) {
|
||||
ptr += ksprintf(ptr, "%x %x %x -- %x %x %s\n",
|
||||
subregion->region->linearAddress.get(),
|
||||
subregion->offset,
|
||||
subregion->linearAddress.get(),
|
||||
subregion->linearAddress.offset(subregion->size - 1).get(),
|
||||
subregion->size,
|
||||
subregion->name.characters());
|
||||
}
|
||||
}
|
||||
*ptr = '\0';
|
||||
return ByteBuffer::copy((byte*)buffer, ptr - buffer);
|
||||
}
|
||||
|
|
|
@ -15,7 +15,8 @@ class Zone;
|
|||
|
||||
class Task : public InlineLinkedListNode<Task> {
|
||||
friend class InlineLinkedListNode<Task>;
|
||||
class Region;
|
||||
struct Region;
|
||||
struct Subregion;
|
||||
public:
|
||||
static Task* createKernelTask(void (*entry)(), String&& name);
|
||||
static Task* createUserTask(const String& path, uid_t, gid_t, pid_t parentPID, int& error, const char** args = nullptr);
|
||||
|
@ -114,6 +115,8 @@ public:
|
|||
|
||||
size_t regionCount() const { return m_regions.size(); }
|
||||
const Vector<RetainPtr<Region>>& regions() const { return m_regions; }
|
||||
size_t subregionCount() const { return m_regions.size(); }
|
||||
const Vector<OwnPtr<Subregion>>& subregions() const { return m_subregions; }
|
||||
void dumpRegions();
|
||||
|
||||
void didSchedule() { ++m_timesScheduled; }
|
||||
|
|
Loading…
Reference in a new issue