1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 03:08:11 +00:00

Kernel: Make PerformanceEventBuffer::to_json() return a KResult

There's a ton of things inside to_json() that could go wrong but we
don't know about it yet. One step at a time.
This commit is contained in:
Andreas Kling 2021-09-07 18:21:37 +02:00
parent 6f992d784f
commit 905065f8c8
5 changed files with 8 additions and 12 deletions

View file

@ -721,11 +721,7 @@ private:
{
if (!g_global_perf_events)
return ENOENT;
// FIXME: to_json() should return a better error.
if (!g_global_perf_events->to_json(builder))
return ENOMEM;
TRY(g_global_perf_events->to_json(builder));
return KSuccess;
}
};

View file

@ -164,7 +164,7 @@ PerformanceEvent& PerformanceEventBuffer::at(size_t index)
}
template<typename Serializer>
bool PerformanceEventBuffer::to_json_impl(Serializer& object) const
KResult PerformanceEventBuffer::to_json_impl(Serializer& object) const
{
{
auto strings = object.add_array("strings");
@ -263,10 +263,10 @@ bool PerformanceEventBuffer::to_json_impl(Serializer& object) const
}
array.finish();
object.finish();
return true;
return KSuccess;
}
bool PerformanceEventBuffer::to_json(KBufferBuilder& builder) const
KResult PerformanceEventBuffer::to_json(KBufferBuilder& builder) const
{
JsonObjectSerializer object(builder);
return to_json_impl(object);

View file

@ -116,7 +116,7 @@ public:
return const_cast<PerformanceEventBuffer&>(*this).at(index);
}
bool to_json(KBufferBuilder&) const;
KResult to_json(KBufferBuilder&) const;
void add_process(const Process&, ProcessEventType event_type);
@ -126,7 +126,7 @@ private:
explicit PerformanceEventBuffer(NonnullOwnPtr<KBuffer>);
template<typename Serializer>
bool to_json_impl(Serializer&) const;
KResult to_json_impl(Serializer&) const;
PerformanceEvent& at(size_t index);

View file

@ -581,7 +581,7 @@ bool Process::dump_perfcore()
return false;
}
auto builder = builder_or_error.release_value();
if (!m_perf_event_buffer->to_json(builder)) {
if (m_perf_event_buffer->to_json(builder).is_error()) {
dbgln("Failed to generate perfcore for pid {}: Could not serialize performance events to JSON.", pid().value());
return false;
}

View file

@ -166,7 +166,7 @@ KResult Process::procfs_get_perf_events(KBufferBuilder& builder) const
dbgln("ProcFS: No perf events for {}", pid());
return KResult(ENOBUFS);
}
return perf_events()->to_json(builder) ? KSuccess : KResult(EINVAL);
return perf_events()->to_json(builder);
}
KResult Process::procfs_get_fds_stats(KBufferBuilder& builder) const