mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 00:58:12 +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)
|
if (!g_global_perf_events)
|
||||||
return ENOENT;
|
return ENOENT;
|
||||||
|
TRY(g_global_perf_events->to_json(builder));
|
||||||
// FIXME: to_json() should return a better error.
|
|
||||||
if (!g_global_perf_events->to_json(builder))
|
|
||||||
return ENOMEM;
|
|
||||||
|
|
||||||
return KSuccess;
|
return KSuccess;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -164,7 +164,7 @@ PerformanceEvent& PerformanceEventBuffer::at(size_t index)
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename Serializer>
|
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");
|
auto strings = object.add_array("strings");
|
||||||
|
@ -263,10 +263,10 @@ bool PerformanceEventBuffer::to_json_impl(Serializer& object) const
|
||||||
}
|
}
|
||||||
array.finish();
|
array.finish();
|
||||||
object.finish();
|
object.finish();
|
||||||
return true;
|
return KSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PerformanceEventBuffer::to_json(KBufferBuilder& builder) const
|
KResult PerformanceEventBuffer::to_json(KBufferBuilder& builder) const
|
||||||
{
|
{
|
||||||
JsonObjectSerializer object(builder);
|
JsonObjectSerializer object(builder);
|
||||||
return to_json_impl(object);
|
return to_json_impl(object);
|
||||||
|
|
|
@ -116,7 +116,7 @@ public:
|
||||||
return const_cast<PerformanceEventBuffer&>(*this).at(index);
|
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);
|
void add_process(const Process&, ProcessEventType event_type);
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ private:
|
||||||
explicit PerformanceEventBuffer(NonnullOwnPtr<KBuffer>);
|
explicit PerformanceEventBuffer(NonnullOwnPtr<KBuffer>);
|
||||||
|
|
||||||
template<typename Serializer>
|
template<typename Serializer>
|
||||||
bool to_json_impl(Serializer&) const;
|
KResult to_json_impl(Serializer&) const;
|
||||||
|
|
||||||
PerformanceEvent& at(size_t index);
|
PerformanceEvent& at(size_t index);
|
||||||
|
|
||||||
|
|
|
@ -581,7 +581,7 @@ bool Process::dump_perfcore()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
auto builder = builder_or_error.release_value();
|
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());
|
dbgln("Failed to generate perfcore for pid {}: Could not serialize performance events to JSON.", pid().value());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -166,7 +166,7 @@ KResult Process::procfs_get_perf_events(KBufferBuilder& builder) const
|
||||||
dbgln("ProcFS: No perf events for {}", pid());
|
dbgln("ProcFS: No perf events for {}", pid());
|
||||||
return KResult(ENOBUFS);
|
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
|
KResult Process::procfs_get_fds_stats(KBufferBuilder& builder) const
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue