| Age | Commit message (Collapse) | Author | Files | Lines |
|
OK mpi@
|
|
the SCHED_LOCK().
Putting a thread on a sleep queue is reduce to the following:
sleep_setup();
/* check condition or release lock */
sleep_finish();
Previous version ok cheloha@, jmatthew@, ok claudio@
|
|
ones added to malloc() and free(). Pass the struct pool pointer as argv1
since it is currently not possible to pass the pool name to btrace.
OK mpi@
|
|
via dt(4) and btrace(8).
OK mpi@ millert@
|
|
ok mpi@
|
|
while here, swap two lines in bufcache_release() to put a KASSERT() first
following the pattern in bufcache_take()
ok beck@ mpi@
|
|
also noticed by semarie@
|
|
ok kettenis@
|
|
|
|
Simplify the logic by always exporting the return value and errno in the
syscall profiler.
|
|
capital letters in locking annotations. Therefore harmonize the existing
annotations.
Also, if multiple locks are required they should be delimited using
commas.
ok mpi@
|
|
As a result remove unneeded variable
OK kn@, millert@
|
|
Matches the behavior of other dynamic tracing tools.
From Yuichiro NAITO.
|
|
Also make the syscall provider exports the number of syscall
arguments. This will allow for stricter checks when parsing
`argN' and future `args->name'.
This is an ABI change, don't forget to keep btrace(8) and your
kernel in sync.
|
|
This variant of stacktrace_save() takes an aditionnal argument to skip
an arbitrary number of frame. This allows to skip recording frames used
to execute the profiling code and produces outputs easier to understand.
Inputs from and ok visa@
|
|
This handrolled cond_wait() dealing with signals prevents a lock
ordering problem when executing probes inside the scheduler code.
That means we stop relying on a mutex for synchronisation and instead
rely on the sleep_* internals, currently the SCHED_LOCK().
From kettenis@
|
|
is invoked. This enables threads to continue gathering events without
interruption when another thread starts or stops recording.
OK mpi@
|
|
dt(4) exposes kernel internals, addresses and content of states to
userland. As such its interface shouldn't be available without
enabling it consciously.
ok millert@, deraadt@
|
|
The design is fairly simple: events, in the form of descriptors on a
ring, are being produced in any kernel context and being consumed by
a userland process reading /dev/dt.
Code and hooks are all guarded under '#if NDT > 0' so this commit
shouldn't introduce any change as long as dt(4) is disable in GENERIC.
ok kettenis@, visa@, jasper@, deraadt@
|