mirror of
https://github.com/matrix-construct/construct
synced 2024-12-27 07:54:05 +01:00
ircd::ctx: Inline cur_slice_cycles().
modules/media/magick: Use this_ctx::cycles_here(). ircd::ctx: Improve prof::cycles API related.
This commit is contained in:
parent
df11d9bec6
commit
bde9e16e5c
4 changed files with 14 additions and 15 deletions
|
@ -92,6 +92,12 @@ struct ircd::ctx::prof::ticker
|
|||
std::array<uint64_t, num_of<prof::event>()> event {{0}};
|
||||
};
|
||||
|
||||
inline uint64_t
|
||||
ircd::ctx::prof::cur_slice_cycles()
|
||||
{
|
||||
return cycles() - cur_slice_start();
|
||||
}
|
||||
|
||||
extern inline uint64_t
|
||||
__attribute__((flatten, always_inline, gnu_inline, artificial))
|
||||
ircd::ctx::prof::cycles()
|
||||
|
|
|
@ -19,7 +19,7 @@ inline namespace this_ctx
|
|||
const uint64_t &id(); // Unique ID for cur ctx
|
||||
string_view name(); // Optional label for cur ctx
|
||||
|
||||
ulong cycles_here(); // misc profiling related
|
||||
ulong cycles(); // misc profiling related
|
||||
|
||||
bool interruption_requested(); // interruption(cur())
|
||||
void interruption_point(); // throws if interruption_requested()
|
||||
|
@ -126,6 +126,12 @@ ircd::ctx::this_ctx::wait(const duration &d)
|
|||
return duration_cast<duration>(ret);
|
||||
}
|
||||
|
||||
inline ulong
|
||||
ircd::ctx::this_ctx::cycles()
|
||||
{
|
||||
return cycles(cur()) + prof::cur_slice_cycles();
|
||||
}
|
||||
|
||||
/// Reference to the currently running context. Call if you expect to be in a
|
||||
/// context. Otherwise use the ctx::current pointer.
|
||||
inline ircd::ctx::ctx &
|
||||
|
|
13
ircd/ctx.cc
13
ircd/ctx.cc
|
@ -646,13 +646,6 @@ ircd::ctx::this_ctx::yield()
|
|||
};
|
||||
}
|
||||
|
||||
ulong
|
||||
ircd::ctx::this_ctx::cycles_here()
|
||||
{
|
||||
assert(current);
|
||||
return cycles(cur()) + prof::cur_slice_cycles();
|
||||
}
|
||||
|
||||
size_t
|
||||
ircd::ctx::this_ctx::stack_at_here()
|
||||
{
|
||||
|
@ -1827,12 +1820,6 @@ ircd::ctx::prof::slice_exceeded_warning(const ulong &cycles)
|
|||
return threshold > 0 && cycles >= threshold;
|
||||
}
|
||||
|
||||
ulong
|
||||
ircd::ctx::prof::cur_slice_cycles()
|
||||
{
|
||||
return cycles() - cur_slice_start();
|
||||
}
|
||||
|
||||
const ulong &
|
||||
ircd::ctx::prof::cur_slice_start()
|
||||
{
|
||||
|
|
|
@ -546,7 +546,7 @@ noexcept try
|
|||
// and monotonically increases across jobs as well.
|
||||
const auto cycles_sample
|
||||
{
|
||||
cycles(ctx::cur()) + ctx::prof::cur_slice_cycles()
|
||||
ctx::this_ctx::cycles()
|
||||
};
|
||||
|
||||
// Detect if this is a new job. Tick is usually zero for a new job, but for
|
||||
|
|
Loading…
Reference in a new issue