Add EXTRA_NONE flag for use with unit masks empty "extra:" field

Add a dummy extra flag that is set when any extra: (including an empty one)
field is present in a unit mask line.

This can be used to express that the unit mask has a unique name as the
first word of the description.

This is mapped to the x86 enabled flag, as we have to pass it around
as part of the event mask.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Add empty extra: lines to every Intel event with a unique first word

Add empty extra: lines to every Intel event with a unique first word
in the description. This can then be used to specify the unit mask
symbolically.

Haswell already had the empty extra masks.
Core 2 did not have unique words for everything. I only add it there
to the events which had.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Remove improper extra field from core_2 unit masks

In the new unit mask parsing scheme, "extra:" should always followed
by named mask. This patch fixes the entries which does not follow
the scheme.

Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Add support for named default unit masks

Current libop does not allow named mask to be used as default mask.
This causes the tools to fail when user does not specify the named
mask of an event and relying on the numerical default unit mask
which could have duplication.

Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Use names to make all non-unique Intel default unit masks unique

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Fix unit mask value for EXTRA_NONE

For named unit masks that do not have real extra values
associated with them, the 'extra' field of the unit mask
description structure is set to EXTRA_NONE, which is not
really a valid value as far as the performance monitoring
hardware goes.  In such cases, 'ophelp --extra-mask'
was returning EXTRA_NONE to the operf and opcontrol
profilers, which results in no samples being collected,
since it's not a valid mask value.  In such cases, ophelp
should return the simple unit mask value. The operf
and opcontrol tools that use 'ophelp --extra-mask' must
be able to differentiate between a simple mask value
and an "extra" value.  Anything greater or equal to
0x40000 is interpreted as a valid "extra" value; otherwise
it's a simple mask value.

Signed-off-by: Maynard Johnson <maynardj@us.ibm.com>
Make doc changes to reflect changes in behavior for named unit masks

These doc changes correspond to the previous 5 patches contributed
by Suravee, Andi, and Maynard that fixed functional issues with
named unit masks.

Signed-off-by: Maynard Johnson <maynardj@us.ibm.com>
Remove invalid '+' character from line 140 of Ivybridge unit_masks

This problem was caught by Suravee running 'make distcheck'.

Signed-off-by: Maynard Johnson <maynardj@us.ibm.com>
Fix recent regression in opreport --debuginfo output

The '--debuginfo' option of opreport is broken. Output shows
"(no location information)" when it should show source file
and line number. I found that the May 15 commit ("Fix Coverity
issues identified against oprofile 0.9.8 release") was the
culprit. Coverity complained about a file descriptor in
the op_bfd constructor not being closed. My "fix" for that
complaint was wrong. The file descriptor in question is
the one we open for the binary image being processed by op_bfd
and which we pass to fdopen_bfd. Apparently, libbfd caches that
fd internally and makes use of it for certain functions -- in
particular, bfd_find_nearest_line(). This bug also caused
another symptom: when opreport is run with '--xml --details',
the output does not contain the binary code for the symbols.

The fix for this problem was trivial. I put the declaration for
the "fd" into the op_bfd class private section and then closed
the fd in the op_bfd destructor.

Signed-off-by: Maynard Johnson <maynardj@us.ibm.com>
Add the "--no-header" short form option, "-n", to the opreport man page

Signed-off-by: William Cohen <wcohen@redhat.com>
Document additional ophelp options on the man page

Signed-off-by: William Cohen <wcohen@redhat.com>
Add the --merge option description to opannotate man page.

Signed-off-by: William Cohen <wcohen@redhat.com>
Document the opcontrol short form options on the man page

Signed-off-by: William Cohen <wcohen@redhat.com>
Add a short man page for op-check-perfevents.

Signed-off-by: William Cohen <wcohen@redhat.com>
Add man page for oprof_start.

Signed-off-by: William Cohen <wcohen@redhat.com>
Remove obsolete --note-table-size option from opcontrol

Only the very old kernels (2.4) provided support for --note-table-size option.
Given that other 2.4 support was removed from OProfile there isn't any
reason to keep this around.

Signed-off-by: William Cohen <wcohen@redhat.com>
Add 'check_count' parameter to parse_events function

For profiling, oprofile enforces a 'count' value to be
included in the event specification passed by a user.
It is the parse_events() function in libop/op_parse_event.c
that handles that checking.  But for counting events
versus profiling, a 'count' value is meaningless, so this
patch adds support for parse_events() to parse an event
spec from either the profiling tools or the new counting
tool.

Signed-off-by: Maynard Johnson <maynardj@us.ibm.com>
Add various utility routines needed by new ocount tool

Signed-off-by: Maynard Johnson <maynardj@us.ibm.com>
New ocount tool and associated ocount_counter classes

This patch implements the executable 'ocount' tool, as
well as some classes used for opening and managing the
"perf_events" file descriptors (opened via perf_event_open).

Signed-off-by: Maynard Johnson <maynardj@us.ibm.com>
Add manpage for new ocount tool

Signed-off-by: Maynard Johnson <maynardj@us.ibm.com>