Commit Graph

28 Commits

Author SHA1 Message Date
oshogbo
b60d6a5607 capsicum: use a new capsicum helpers in tools
Use caph_{rights,ioctls,fcntls}_limit to simplify the code.
2018-11-04 19:24:49 +00:00
jhb
df51d482a8 Add a "live" mode to ktrdump.
Support a "live" mode in ktrdump enabled via the -l flag.  In this
mode, ktrdump polls the kernel's trace buffer periodically (currently
hardcoded as a 50 millisecond interval) and dumps any newly added
entries.  Fancier logic for the timeout (e.g. a command line option or
some kind of backoff based on the time since the last entry) can be
added later as the need arises.

While here, fix some bugs from when this was Capsicum-ized:
- Use caph_limit_stream() for the output stream so that isatty() works
  and the output can be line-buffered (especially useful for live
  mode).
- Use caph_limit_stderr() to permit error messages to be displayed if
  an error occurs after cap_enter().

Reviewed by:	kib, 0mp (manpage)
MFC after:	2 months
Differential Revision:	https://reviews.freebsd.org/D17315
2018-10-22 21:25:28 +00:00
oshogbo
8acf9b1609 Convert cap_enter() < 0 && errno != ENOSYS to caph_enter() < 0.
No functional change intended.
2018-06-19 23:43:14 +00:00
pfg
7551d83c35 various: general adoption of SPDX licensing ID tags.
Mainly focus on files that use BSD 2-Clause license, however the tool I
was using misidentified many licenses so this was mostly a manual - error
prone - task.

The Software Package Data Exchange (SPDX) group provides a specification
to make it easier for automated tools to detect and summarize well known
opensource licenses. We are gradually adopting the specification, noting
that the tags are considered only advisory and do not, in any way,
superceed or replace the license texts.

No functional change intended.
2017-11-27 15:37:16 +00:00
markj
f5658ab735 Provide an error message if KTR symbols in a vmcore cannot be resolved.
libkvm does not set an error string in this case, so we were previously
failing silently.

MFC after:	1 week
2017-09-11 15:18:43 +00:00
cem
15ab6428c9 ktrdump(8): Capsicumify
We restrict the (optional) input file and output files. It would be
nice to restrict the KVM files, but that's up to libkvm.

We wait until after kvm_nlist() is invoked to cap_enter() because
kldsym() isn't supported in the Capsicum sandbox.

Feedback from:	emaste@ (earlier versions)
Sponsored by:	Dell EMC Isilon
Differential Revision:	https://reviews.freebsd.org/D7921
2016-12-16 01:59:28 +00:00
jhb
c94cf013f1 Change ktrdump to use the more standard -M/-N flags to specify the path
to a crash dump and kernel, respectively.  The existing -m/-e flags are
still supported for backwards compatiblity but are no longer documented.

Requested by:	np
MFC after:	2 weeks
2015-02-06 19:41:23 +00:00
neel
1efaaf7b72 Don't dump entries that were modified during the time the KTR buffer was being
copied to userspace. Failing to do this would result in entries at the bottom
of the ktrdump output to be more recent than entries at the top.

With this change the timestamps are monotonically decreasing going from the
top to the bottom of the ktrdump output.
2014-03-14 22:07:08 +00:00
neel
79059ce446 Fix an issue with ktrdump(8) where it would not print all entries in the
KTR buffer.

This happens when 'i' tries to wrap around from 0 to 'entries - 1'. Since 'i'
is a signed integer the modulo operation actually returns a negative number.

Fix this by computing the next index to use "by hand" instead of relying
on the modulo operator.
2014-03-14 21:35:16 +00:00
glebius
e516af2147 Print the ktr(4) format line that caused a failure.
Sponsored by:	Nginx, Inc.
2014-01-17 09:11:44 +00:00
jeff
f40f3c3255 - Implement run-time expansion of the KTR buffer via sysctl.
- Implement a function to ensure that all preempted threads have switched
   back out at least once.  Use this to make sure there are no stale
   references to the old ktr_buf or the lock profiling buffers before
   updating them.

Reviewed by:	marius (sparc64 parts), attilio (earlier patch)
Sponsored by:	EMC / Isilon Storage Division
2012-11-15 00:51:57 +00:00
np
335b7a9f3c Catch up with r238925. ktr_entries may not be a power of 2. 2012-10-30 21:10:06 +00:00
dchagin
a553f5bca5 Add -H flag to print thread id. 2011-01-26 06:36:14 +00:00
delphij
aabdbf37d0 Remove unnecessary opt* definations. 2009-02-21 03:53:06 +00:00
glebius
c8537e7add Skip format flags, when parsing ktr_desc. 2006-01-12 22:32:07 +00:00
njl
f71899b1d5 Really fix the relative timestamp bug. It was only incorrect for the ALQ
case.  It seems entries are in reverse order when read from the kernel
memory but in the right order when read from a file (i.e. ALQ).  Handle
both cases.

MFC after:	1 day
2005-12-09 14:27:03 +00:00
njl
615d32b5e4 Fix -r flag to actually work. "now" comes after "then", not vice versa.
MFC after:	1 day
2005-12-06 14:13:39 +00:00
csjp
c7b82f2db4 Append a newline character to the usage string.
MFC after:	3 days
2005-06-05 23:49:35 +00:00
ru
0491ba1f63 Sync program's usage() with manpage's SYNOPSIS. 2005-05-21 09:55:10 +00:00
julian
cbad2b873c Don't use an uninitialised variable when reading from a ktr alq file. 2004-09-27 05:56:57 +00:00
rwatson
ba22e917d3 Add a "-r" flag to ktrdump(1) to print relative timestamps when used
with "-t" rather than absolute timestamps.  This allows the reader
to get a better sense of latency between events, such as time to
schedule an interrupt thread from time the interrupt occurred.  Assert
a copyright on ktrdump.c since I seem to be modifying it more than I
thought.
2004-05-22 08:26:10 +00:00
rwatson
222404c032 Add a quiet mode to ktrdump(1): if the "-q" flag is used, don't print
the pretty text header on top of the output.  Simplifies feeding the
results of tracing into a script for mechanical processing.
2004-05-21 21:24:58 +00:00
rwatson
bc5a4332ff When the 'f' flag is passed to ktrdump(1), use 40 characters for the
"file and line" field consistently; previously, a 32-character field
length was used for the table header, which resulted in the header
not lining up with the table.
2004-05-21 21:15:48 +00:00
dwmalone
f603a8a338 Remove an unused variable. 2004-02-15 22:12:32 +00:00
kris
beeea993c6 Use strlcpy() instead of strcpy() to not overflow static buffers. 2002-10-06 23:52:06 +00:00
jeff
280b42baf6 - Add the -i option to read in a saved ktr file output by KTR_ALQ. 2002-09-22 07:21:28 +00:00
jake
2438d95008 1. Add missing include of stdint.h.
2. Fix reversed arguments to strcpy.

Noticed by:	davidc (2)
2002-04-02 04:24:59 +00:00
jake
ead6030164 ktrdump is a utility to dump the ktr trace buffer from userland. It can
also be run on a core dump.
2002-04-01 05:41:13 +00:00