Commit Graph

23 Commits

Author SHA1 Message Date
dim
0dd9212d5b In usr.sbin/pmccontrol/pmccontrol.c, fix a few warnings about format
strings not being literals.

MFC after:	1 week
2011-12-17 23:39:13 +00:00
obrien
645c15928a Improve the chances of matching an outputted string with the line of code. 2011-11-15 06:44:07 +00:00
attilio
3b092444e9 Fix logical_cpus_mask retrieving by using, correctly, cpuset_t.
This fix also a bug where pmccontrol uses a 32 static type rather than
old cpumask_t.

Reported and reviewed by:	avg
2011-07-15 11:46:54 +00:00
avg
466a13c175 pmcstat, pmccontrol: catch up with removal of machdep.hlt_cpus sysctl
Reported by:	Pan Tsu <inyaoo@gmail.com>
Reviewed by:	attilio
No objections:	gnn
2011-07-15 11:30:41 +00:00
attilio
27825059cd Revert r222363, as bde@ pointed out the initial solution was far more
correct.
2011-05-31 20:59:53 +00:00
attilio
cc1bd831c1 Style fix: cast to size_t rather than u_long when comparing to sizeof()
rets.

Requested by:	kib
2011-05-27 16:01:51 +00:00
attilio
0f9cccb091 Avoid breaking strict-aliasing. 2011-05-10 13:49:34 +00:00
attilio
a605037db4 Fix breakage.
Reported by:	sbruno
2011-05-06 15:31:27 +00:00
attilio
fe4de567b5 Commit the support for removing cpumask_t and replacing it directly with
cpuset_t objects.
That is going to offer the underlying support for a simple bump of
MAXCPU and then support for number of cpus > 32 (as it is today).

Right now, cpumask_t is an int, 32 bits on all our supported architecture.
cpumask_t on the other side is implemented as an array of longs, and
easilly extendible by definition.

The architectures touched by this commit are the following:
- amd64
- i386
- pc98
- arm
- ia64
- XEN

while the others are still missing.
Userland is believed to be fully converted with the changes contained
here.

Some technical notes:
- This commit may be considered an ABI nop for all the architectures
  different from amd64 and ia64 (and sparc64 in the future)
- per-cpu members, which are now converted to cpuset_t, needs to be
  accessed avoiding migration, because the size of cpuset_t should be
  considered unknown
- size of cpuset_t objects is different from kernel and userland (this is
  primirally done in order to leave some more space in userland to cope
  with KBI extensions). If you need to access kernel cpuset_t from the
  userland please refer to example in this patch on how to do that
  correctly (kgdb may be a good source, for example).
- Support for other architectures is going to be added soon
- Only MAXCPU for amd64 is bumped now

The patch has been tested by sbruno and Nicholas Esborn on opteron
4 x 12 pack CPUs. More testing on big SMP is expected to came soon.
pluknet tested the patch with his 8-ways on both amd64 and i386.

Tested by:	pluknet, sbruno, gianni, Nicholas Esborn
Reviewed by:	jeff, jhb, sbruno
2011-05-05 14:39:14 +00:00
gnn
b70c0f5aa8 Add code to print the number and type of the CPU that is present in
the system as well has how many PMCs there are per CPU.  In this code
CPU and core are equivalent.

MFC after:	1 day
2010-10-11 14:31:24 +00:00
uqs
3960614646 mdoc: order prologue macros consistently by Dd/Dt/Os
Although groff_mdoc(7) gives another impression, this is the ordering
most widely used and also required by mdocml/mandoc.

Reviewed by:	ru
Approved by:	philip, ed (mentors)
2010-04-14 19:08:06 +00:00
ed
073cafdd42 The last big commit: let usr.sbin/ use WARNS=6 by default. 2010-01-02 11:07:44 +00:00
jkoshy
89701909aa Ignore absent CPUs when listing the current state of PMC hardware. 2008-11-16 04:26:38 +00:00
jkoshy
1d083db91c - Document the changed meaning of a '*' argument to option "-c".
- Tweak grammar.
2008-11-09 08:39:52 +00:00
jkoshy
d430ed23cd Change the meaning of a "*" argument to option -c to mean 'all
unhalted CPUs', instead of 'all CPUs'.  This change brings
pmccontrol(8) in line with pmcstat(8).
2008-11-09 08:36:35 +00:00
jkoshy
38bcf38e8e Fix pmccontrol(8) on Intel Xeon's running in 64 bit mode.
PR:		kern/93773
2006-02-27 14:25:32 +00:00
jkoshy
fa4873dd0c The 'intr_bufferfull' driver statistic actually counts the number
of times sampling was stopped due to a space shortage; change its
description in the output of `pmcstat -s` to match reality.

MFC after:	3 days
2005-09-29 01:40:03 +00:00
ru
1aae741134 Tidy up the markup, fixed the HISTORY section (1).
Reviewed by:	jkoshy
Submitted by:	jkoshy (1)
Approved by:	re (blanket)
2005-06-24 16:19:46 +00:00
jkoshy
874f2e44cb Sync the usage message with the code.
Approved by:	re (hwpmc blanket)
Pointed out by:	ru
2005-06-24 15:43:13 +00:00
jkoshy
1d3209ab83 MFP4:
- Implement sampling modes and logging support in hwpmc(4).

- Separate MI and MD parts of hwpmc(4) and allow sharing of
  PMC implementations across different architectures.
  Add support for P4 (EMT64) style PMCs to the amd64 code.

- New pmcstat(8) options: -E (exit time counts) -W (counts
  every context switch), -R (print log file).

- pmc(3) API changes, improve our ability to keep ABI compatibility
  in the future.  Add more 'alias' names for commonly used events.

- bug fixes & documentation.
2005-06-09 19:45:09 +00:00
jkoshy
a21392e3ac Add convenience APIs pmc_width() and pmc_capabilities() to -lpmc.
Have pmcstat(8) and pmccontrol(8) use these APIs.

Return PMC class-related constants (PMC widths and capabilities)
with the OP GETCPUINFO call leaving OP PMCINFO to return only the
dynamic information associated with a PMC (i.e., whether enabled,
owner pid, reload count etc.).

Allow pmc_read() (i.e., OPS PMCRW) on active self-attached PMCs to
get upto-date values from hardware since we can guarantee that the
hardware is running the correct PMC at the time of the call.

Bug fixes:
 - (x86 class processors) Fix a bug that prevented an RDPMC
   instruction from being recognized as permitted till after the
   attached process had context switched out and back in again after
   a pmc_start() call.

   Tighten the rules for using RDPMC class instructions: a GETMSR
   OP is now allowed only after an OP ATTACH has been done by the
   PMC's owner to itself.  OP GETMSR is not allowed for PMCs that
   track descendants, for PMCs attached to processes other than
   their owner processes.

 - (P4/HTT processors only) Fix a bug that caused the MI and MD
   layers to get out of sync.  Add a new MD operation 'get_config()'
   as part of this fix.

 - Allow multiple system-mode PMCs at the same row-index but on
   different CPUs to be allocated.

 - Reject allocation of an administratively disabled PMC.

Misc. code cleanups and refactoring.  Improve a few comments.
2005-05-01 14:11:49 +00:00
jkoshy
0e598d84b7 Remove superfluous CFLAGS lines. Use the conditional '?=' construct
for WARNS lines.

Submitted by:	ru
2005-04-19 14:43:59 +00:00
jkoshy
dc3444cd91 Bring a working snapshot of hwpmc(4), its associated libraries, userland utilities
and documentation into -CURRENT.

Bump FreeBSD_version.

Reviewed by:	alc, jhb (kernel changes)
2005-04-19 04:01:25 +00:00