| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
* configure.ac: Check for -lrpm with simple AC_CHECK_LIB.
* Makefile.am: Forget about @rpm_LIBS@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The parallel install into lib-elfutils during the build seems to be fragile,
so explicitly install the libs with -j1.
* Makefile.am (stamp-elfutils): Add -j1 in for dir loop sub make.
* Makefile.in: Regenerated.
* aclocal.m4: Likewise.
* compile: Likewise.
* config.in: Likewise.
* configure: Likewise.
* doc/Makefile.in: Likewise.
* doc/SystemTap_Tapset_Reference/Makefile.in: Likewise.
* doc/beginners/Makefile.in: Likewise.
* grapher/Makefile.in: Likewise.
* testsuite/Makefile.in: Likewise.
* testsuite/aclocal.m4: Likewise.
* testsuite/configure: Likewise.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* configure.ac: Add --enable-publican and --with-publican-brand.
Setup "shadow" directory doc/beginners.
* Makefile.in: Regenerated.
* configure: Regenerated.
* doc/Makefile.am (SUBDIRS): Add beginners.
* doc/Makefile.in: Regenerated.
* doc/SystemTap_Beginners_Guide/en-US/Book_Info.xml (productname):
Set to Systemtap.
(productnumber): Set to 1.0.
* SystemTap_Beginners_Guide/en-US/*.xml: Replace includes from
extras/testsuite to ../testsuite,
* doc/SystemTap_Beginners_Guide/publican.cfg: Moved to ...
* doc/SystemTap_Beginners_Guide/publican.cfg.in: ... here.
* doc/SystemTap_Beginners_Guide/Makefile: Removed.
* doc/SystemTap_Beginners_Guide/old-syncandbuild.sh: Removed.
* doc/SystemTap_Beginners_Guide/syncandbuild.sh: Removed.
* doc/SystemTap_Tapset_Reference/Makefile.in: Regenerated.
* doc/beginners/Makefile.am: New makefile.
* doc/beginners/Makefile.in: New generated file.
* grapher/Makefile.in: Regenerated.
* systemtap.spec: Add with_publican and publican_brand.
|
|
|
|
|
|
| |
* grapher/CairoWidget.cxx (CairoTextBox::draw): Use
boost::is_from_range instead of is_any_of. Reports on the net
suggest that is_any_of triggers a compiler bug.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* NEWS: Set version number.
* configure.ac: Incremented version number.
* systemtap.spec: Incremented version number and added changelog entry.
* testsuite/configure.ac: Ditto.
* Makefile.in: Regenerated.
* aclocal.m4: Ditto.
* configure: Ditto.
* doc/Makefile.in: Ditto.
* doc/SystemTap_Tapset_Reference/Makefile.in: Ditto.
* grapher/Makefile.in: Ditto.
* testsuite/Makefile.in: Ditto.
* testsuite/aclocal.m4: Ditto.
* testsuite/configure: Ditto.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This makes zooming more consistent and less buggy.
* grapher/Graph.cxx (Graph::draw): Set graph time spread using
_zoomFactor.
* grapher/Graph.hxx (Graph::getHorizontalScale): no _zoomFactor
* grapher/GraphWidget.cxx (on_motion_notify_event): Dragging increment
uses _zoomFactor.
(on_scroll_event): Set extents after changing the zoom factor with
the scroll wheel.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The right side of the graph represents the most recent time. Since
there is never anything interesting to the right of that, it makes
sense to have the origin of the scaling be there.
* grapher/Graph.hxx (getHorizontalScale): new function
* grapher/GraphStyle.cxx (GraphStyleBar::draw, GraphStyleDot::draw,
GraphStyleEvent::draw): Use cairo transform functions to set up
scaling.
(GraphStyleBar::dataIndexAtPoint, GraphStyleEvent::dataIndexAtPoint):
Base calculations on scaling from right.
|
| |
| |
| |
| |
| |
| |
| | |
I don't why I thought this ever worked.
* grapher/GraphStyle.cxx (GraphStyleEvent::dataIndexAtPoint): return
distance from beginning of buffer, not beginning of search bounds.
|
| |
| |
| |
| |
| | |
* grapher/Graph.cxx (Graph::draw): Make axis values end up on
multiples of majorUnit.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Don't scale graph based on how much data will fit. This didn't work
very well and resulted in distracting, weird scale changes. We now
assume that scripts output their time (x axis) in milliseconds.
* grapher/Graph.hxx (setCurrentTime): New function.
* grapher/Graph.cxx (Graph::draw): Assume a fixed default scale of 1
pixel = 5 milliseconds and don't do any autoscaling.
* grapher/GraphWidget.cxx (GraphWidget constructor): Set global time
base on startup.
(on_expose_event): Don't search graphs for earliest time.
* grapher/GraphWidget.hxx (_timeBaseInitialized): delete
* grapher/Time.hxx: new file; interface to timeval.
|
|
|
|
|
| |
A silly change, but this works better with other tools, like git
diff. I should have started the C++ files this way.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* grapher/StapParser.cxx (StapParser::disconnect): new function
* grapher/StapParser.hxx (StapProcess::StapProcess): initialize argv to 0
* grapher/grapher.cxx (StapLauncher::setArgs): Set argv to 0
(StapLauncher launch, launchUsingParser): Refactor launch(),
extracting function a that (re)launches a stap process using an
existing parser.
(StapLauncher::onChildDied): call disconnect() on dead parser.
(GrapherWindow::_graphicalLauncher, setGraphicalLauncher): delete
member, replacing with...
(graphicalLauncher): new variable
(ProcModelColumns): Store parser object in the list model instead of
just a StapProcess object.
(ProcWindow::onRestart): new function
(ProcWindow::refresh): Preserve the list selection when the process
list is refreshed.
(ProcWindow::onSelectionChanged): Manage the restart button's state.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was the original way to do graphing and had bitrotted some.
* grapher/StapParser.cxx (initIO): new catchHUP argument
(ioCallback): Only disconnect signals, etc. on IN_HUP if catchHUP is
true.
(errIoCallback): Write error messages to stderr, not stdout.
* grapher/grapher.cxx (StapLauncher::launch): Don't catchHUP on our
stap process children.
(ProcWindow::refresh): Display something reasonable for the stap
"process" that is feeding stdin.
(main): Use StapParser::initIO to initialize parser reading from
stdin.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The process arguments are displayed, and the "kill" button is
insensitive when a process is dead or nothing is selected.
* grapher/grapher.cxx (ProcWindow _killButton, _restartButton,
_stapArgsLabel, _scriptArgsLabel): new members
(ProcWindow::ProcWindow): hook 'em up
(ProcWindow::onSelectionChanged): Enable / disable kill button and
display process arguments.
* grapher/processwindow.glade: Replace bizzare handle window with a
horizontal pane. Tweak various widget sizes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The signal handler now calls waitpid() and writes the pid and status
to its pipe.
* grapher.cxx (ChildInfo): new class
(handleChild): wait for zombies and write their status down the
pipe.
(ChildDeathReader::ioCallback): Read dead child's pid from signal
handler pipe and emit signal.
(ChildDeathReader::reap): delete
(ChildDeathReader::Callback): delete
(StapLauncher::StapLauncher): Connect to childDied signal.
(StapLauncher setWinParams, reap, cleanUp): delete
(onChildDied): new function that updates the parsers list when a
child dies.
(GrapherWindow): Remove ChildDeathReader::Callback base class
(GrapherWindow::onParserListChanged): New function; exits if program
is quitting and no parsers are left.
(on_menu_file_quit): Kill all children; don't hide (and exit) unless
there are no parsers.
(main): Don't do any cleanup after Gtk loop exits.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also, the "kill" button now works.
* grapher/StapParser.hxx (_ioConnection, _errIoConnection): new
members for sigc connections.
(initIo): New function
(parsers, parserListChangedSignal): new variables
* grapher/StapParser.cxx (ioCallback): disconnect signals when child
dies
(initIo): new function
* grapher/grapher.cxx (StapLauncher): eliminate death callback in
favor of childDied signal. Use global parsers list
(ProcWindow::_listSelection): new member
(ProcWindow::show, hide, onParserListChanged, onSelectionChanged,
onKill): new functions
(ProcWindow::ProcWindow): Set up cell renderer for status icon
* grapher/processwindow.glade: labels for display script and stap arguments
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The names of active scripts are displayed in a list; mock buttons
suggest being able to stop and restart them.
* grapher/processwindow.glade: new file
* grapher/Makefile.am: add processwindow.glade to installed files
* grapher/StapParser.hxx (StapProcess): new class
(StapParser): factor out members that are now in StapProcess
(ioCallback): Use the new childDied signal instead of aborting the
whole grapher when a child dies.
* grapher/grapher.cxx (ProcModelColumns, ProcWindow): classes for
displaying stap process window.
(GrapherWindow::on_menu_proc_window): new function
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also, add a sigc signal for broadcasting data set changes.
* grapher/GraphData.hxx (GraphDataList) new typedef
(getGraphData, graphDataSignal): new functions
* grapher/Graph.hxx (DatasetList): remove typedef in favor of
systemtap::GraphDataList
* grapher/GraphWidget.cxx (GraphWidget, onGraphDataChanged): Use
graphDataSignal to notice new data sets that need to be added. Use
the global data set list instead of one embedded in GraphWidget.
* grapher/StapParser.hxx: delete the _widget member; use signals to
broadcast that there are new data sets instead of calling into the widget.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The checkbox selects the list, so it is just sloppy to allow the item
to be selected.
* grapher/GraphWidget.hxx (no_select_fun): New function; just returns
false.
* grapher/GraphWidget.cxx (GraphWidget): Connect list store selection
to function that prevents selection.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Incidently, this supports removing a data set from a graph.
Also, remove the Add, Remove, and Cancel buttons from the data set dialog.
* grapher/GraphWidget.hxx (DataModelColumns::_dataEnabled): new member
_listConnection: new member
* grapher/GraphWidget.cxx (GraphWidget): Delete connections for
removed buttons. Connect to dialog show and hide signals instead of
map. Add "Enabled" column to dialog list.
(onDataAdd, onDataRemove): delete
(onDataDialogOpen): Initialize list store with all data sets and
hook up row_changed signal
(onDataDialogClose, onRowChanged): new functions
* grapher/graph-dialog.glade: Remove obsolete buttons (Add, Remove, Cancel).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This avoids having humongous numbers displayed on the graphs' x
axis. Also, the dialog for adding a data set to a graph was cleaned
up.
* grapher/graph-dialog.glade: Add check box for display of relative
time and a label for the data set list. Force the list of data sets
to be larger.
* grapher/Graph.hxx (_timeBase): new member
* grapher/Graph.cxx (draw): Subtract _timeBase from displayed time
value.
* grapher/GraphWidget.hxx (DataModelColumns): Add a column for a data
set's title, which is optional at the moment.
* grapher/GraphWidget.hxx (_globalTimeBase, _timeBaseInitialized,
_relativeTimesButton, _displayRelativeTimes): new members
* grapher/GraphWidget.hxx (GraphWidget): Hook up check button for
displaying relative time.
(on_expose_event): Determine base time if needed; set base time in
graphs.
(onDataDialogOpen): Insert graph data set's name (key) and title
into the list of data sets.
|
|
|
|
|
|
|
| |
It's not clear if this was causing any ill effects, but it is
certainly bad form.
* grapher/GraphWidget.cxx (on_expose_event): add missing cr->restore().
|
| |
|
|
|
|
|
| |
* grapher/GraphStyle.cxx (GraphStyleEvent::draw): set event color in
inner loop.
|
|
|
|
|
|
|
|
|
| |
* grapher/Graph.cxx (window2GraphCoords): Take the entire graph's
position into account too.
* grapher/GraphWidget.cxx (GraphWidget): Hook up the data dialog's OK
button.
(onDataDialogOpen): If a data set doesn't have a title, use it's
name (key) instead.
|
|
|
|
|
|
|
|
| |
* grapher/CairoWidget.cxx (CairoTextBox::draw): Use font information
to caculate legible spacing. Also change the font to something more
readable.
* testsuite/systemtap.examples/general/grapher.stp: Put carriage
returns in the right spots.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is accompanied by support for multiline output in hover text.
* grapher/StapParser.cxx (ioCallback): Read data 'til the end of line
character, not just '\n'. Be careful to use I/O functions that don't
treat '\n' specially.
* grapher/StapParser.hxx: ditto
* grapher/CairoWidget.cxx (CairoTextBox::draw): Perform line breaks
for hover text.
* testsuite/systemtap.examples/general/grapher.stp: Do multiline
output of keyboard events. Also, fix longstanding breaking in the
pty probe.
|
|
|
|
|
| |
* grapher/GraphStyle.cxx(GraphStyleEvent::dataIndexAtPoint,
GraphStyleBar::dataIndexAtPoint): check for empty graph data
|
|
|
|
|
|
|
|
|
| |
Don't draw the data value for an event; only display it in hover text.
* grapher/Graph.hxx (window2GraphCoords): new function
* grapher/Graph.cxx (window2GraphCoords): ditto
* grapher/GraphStyle.cxx (GraphStyleEvent::dataIndexAtPoint): new
function implementation.
|
|
|
|
|
|
|
|
|
| |
Start of code to be more selective about the association between the
hover text and the underling graph. Also, show the data set name in hover text.
* grapher/GraphStyle.hxx (dataIndexAtPoint): New virtual function.
* grapher/GraphStyle.cxx (dataIndexAtPoint): Implementation for bar graphs
* grapher/GraphWidget.cxx (onHoverTimeout): Use dataIndexAtPoint.
|
|
|
|
|
|
| |
* grapher/GraphStyle.cxx: New file
* grapher/GraphStyle.hxx: New file
* grapher/Graph(draw): Move much drawing code to GraphStyle::draw
|
|
|
|
| |
* grapher/Graph.cxx (getTimeAtPoint): Divide by _zoomFactor too.
|
|
|
|
| |
changes.
|
|
|
|
|
|
| |
* grapher/Graph.cxx (draw): Draw tick labels (times) below the graph.
* grapher/grapher.cxx (main): Open main window with a size big enough
to display an entire graph.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the graph display is paused, leaving the mouse stationary over
the graph will display the data point under the pointer.
* grapher/CairoWidget.hxx (CairoTextBox): new class
(CairoWidget, CairoPlayButton): refector some play button-specific
things from CairoWidget to CairoPlayButton.
* grapher/CairoWidget.cxx (CairoTextBox::draw): new function.
* grapher/GraphWidget.hxx (GraphWidget): new members for supporting
hover text.
* grapher/GraphWidget.cxx (on_motion_notify_event): Set up hover text box.
(establishHoverTimeout, onHoverTimeout, getGraphUnderPoint): new functions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* grapher/Graph.hxx (Graph): Change variables holding the time limits
of the displayed graph from double to int64_t.
* grapher/Graph.cxx (Graph::draw): Do calculations of time differences
using int64_t.
(Graph::getExtents, Graph::setExtents): Change left and right
arguments to int64_t.
* grapher/GraphData.hxx (GraphDataBase): Change time type to int64_t.
(GraphDataBase::elementAsString): New function.
(GraphData::elementAsString): Implementation of that function.
* grapher/StapParser.cxx (parseData): Parse time values from the stap
script as 64 bit values.
|
|\
| |
| |
| |
| |
| | |
Conflicts:
configure
|
| |
| |
| |
| |
| | |
* configure.ac (PROCFLAGS): Don't define it.
* Makefile.am: Don't use it.
|
|/
|
|
|
| |
Ensure uprobes install directory has group 'stap-server'.
Rename igid_in to in_group.
|
|
|
|
| |
(And incidentally re-enable quiet builds at the same time...)
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
Makefile.in
configure
doc/Makefile.in
doc/SystemTap_Tapset_Reference/Makefile.in
grapher/Makefile.in
testsuite/configure
|
| |
| |
| |
| | |
boost::circular_buffer for time and data storage.
|
| |
| |
| |
| |
| | |
* grapher/StapParser.hxx (ioCallback): Test return value from findTaggedValue
properly.
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This enables much cleaner build output from automake. To re-enable the
verbose commands, pass --disable-silent-rules to configure, or use V=1
at make time.
* configure.ac: Enable AM_SILENT_RULES by default.
|