summaryrefslogtreecommitdiff
path: root/Kernel/GlobalProcessExposed.cpp
diff options
context:
space:
mode:
authorBrian Gianforcaro <bgianf@serenityos.org>2021-11-29 03:01:24 -0800
committerAndreas Kling <kling@serenityos.org>2021-11-30 11:16:35 +0100
commit74ee491b842e1f1a4df75f81e980957ff194c5b0 (patch)
treedbc9414585f48368ff2e31112d38b7d82cd7bbd0 /Kernel/GlobalProcessExposed.cpp
parenta0e59099fcbd4f22f081928f6f47849ee7b7842d (diff)
downloadserenity-74ee491b842e1f1a4df75f81e980957ff194c5b0.zip
Kernel: Handle string format errors in SlabAllocator stats :^)
Switch to KString::formatted and fix API so we can propagate errors.
Diffstat (limited to 'Kernel/GlobalProcessExposed.cpp')
-rw-r--r--Kernel/GlobalProcessExposed.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/Kernel/GlobalProcessExposed.cpp b/Kernel/GlobalProcessExposed.cpp
index 2bed0a83ae..2733e9537c 100644
--- a/Kernel/GlobalProcessExposed.cpp
+++ b/Kernel/GlobalProcessExposed.cpp
@@ -412,11 +412,14 @@ private:
json.add("super_physical_available", system_memory.super_physical_pages - system_memory.super_physical_pages_used);
json.add("kmalloc_call_count", stats.kmalloc_call_count);
json.add("kfree_call_count", stats.kfree_call_count);
- slab_alloc_stats([&json](size_t slab_size, size_t num_allocated, size_t num_free) {
- auto prefix = String::formatted("slab_{}", slab_size);
- json.add(String::formatted("{}_num_allocated", prefix), num_allocated);
- json.add(String::formatted("{}_num_free", prefix), num_free);
- });
+ TRY(slab_alloc_stats([&json](size_t slab_size, size_t num_allocated, size_t num_free) -> ErrorOr<void> {
+ auto prefix = TRY(KString::formatted("slab_{}", slab_size));
+ auto formatted_num_allocated = TRY(KString::formatted("{}_num_allocated", prefix));
+ auto formatted_num_free = TRY(KString::formatted("{}_num_free", prefix));
+ json.add(formatted_num_allocated->view(), num_allocated);
+ json.add(formatted_num_free->view(), num_free);
+ return {};
+ }));
json.finish();
return {};
}
@@ -952,7 +955,8 @@ ErrorOr<void> ProcFSRootDirectory::traverse_as_directory(FileSystemID fsid, Func
VERIFY(!(process.pid() < 0));
u64 process_id = (u64)process.pid().value();
InodeIdentifier identifier = { fsid, static_cast<InodeIndex>(process_id << 36) };
- TRY(callback({ String::formatted("{:d}", process.pid().value()), identifier, 0 }));
+ auto process_id_string = TRY(KString::formatted("{:d}", process_id));
+ TRY(callback({ process_id_string->view(), identifier, 0 }));
}
return {};
});