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:
parent
6f992d784f
commit
905065f8c8
5 changed files with 8 additions and 12 deletions
|
@ -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;
|
||||
}
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue