| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The tracepoint API provides tracepoint_synchronize_unregister() as a way
to guarantee that all tracepoint handlers are inactive. This is
necessary after unregistering to allow the module to safely unload.
* tapsets.cxx (tracepoint_derived_probe_group::emit_module_init):
Call synchronize after unregistering tracepoints.
(tracepoint_derived_probe_group::emit_module_exit): Ditto.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
At one point, the tracepoints API didn't have DECLARE_TRACE, and the
trace headers all used DEFINE_TRACE. This is what got pulled into RHEL,
so we need to support this older usage. The rest of the API stays the
same though.
* buildrun.cxx (make_tracequery): Redefine DEFINE_TRACE as well.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This uses a similar mechanism as marker probes for storing target
variables in locals of the probe body.
* tapsets.cxx (tracepoint_arg): Add fields to help $target access.
(tracepoint_var_expanding_visitor): Expand code to access target
variables - a $target for each tracepoint parameter, as well as
the special $$name and $$vars.
(tracepoint_derived_probe::tracepoint_derived_probe): Expand targets
(resolve_tracepoint_arg_type): Determine if a parameter is a type
that we can dereference, and store the underlying type.
(tracepoint_derived_probe::build_args): Resolve the types.
(tracepoint_derived_probe::emit_probe_context_vars): Emit $target
placeholders into the locals of the probe body.
(tracepoint_derived_probe_group::emit_module_decls): Initialize
$targets from the entry point parameters.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* tapsets.cxx (tracepoint_arg): New
(tracepoint_derived_probe): Add declaring header name and arg vector
(dwarf_type_name): Build a type string for a given type DIE
(tracepoint_derived_probe::build_args): Scan the function DIE for
the name and type of formal parameters required by the tracepoint.
(tracepoint_derived_probe::tracepoint_derived_probe): Call
build_args and determine the relevant header to include.
(tracepoint_derived_probe_group::emit_module_decls): For each
tracepoint, include its header and declare a probe entry point with
the right function signature.
(tracepoint_derived_probe_group::emit_module_init): Call the
registration for each tracepoint, and handle error unwinding.
(tracepoint_derived_probe_group::emit_module_exit): Unregister each.
|
| | |
| | |
| | |
| | |
| | |
| | | |
* tapsets.cxx (tracepoint_derived_probe): Create a skeleton probe
(tracepoint_derived_probe_group): Create a skeleton group
(tracepoint_query::handle_query_func): build a probe
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* tapsets.cxx (tracepoint_query): Iterate over the modules, CUs, and
functions in tracequery.ko looking for our hijacked tracepoint
declarations.
(tracepoint_builder::build): Run a tracepoint_query
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* session.h (systemtap_session): add tracepoint_derived_probes
* buildrun.cxx (make_tracequery): New - builds a kernel module that
hijacks the tracepoint declarations, so we can query debuginfo.
* buildrun.h: declare above
* tapsets.cxx (tracepoint_builder): New builder for tracepoint
probes. For now it just handles the initialization to build the
tracequery kernel module.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* tapsets.cxx (dwflpp::iterate_over_functions): Change arg from
void* to base_query*, and add explicit function-search parameters.
(query_cu): update caller
(query_dwarf_func): update callback signature
(Note: instead of passing around callback functions, it might be nicer
to use a virtual method in base_query...)
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We used to check & init module_cache in a few inconsistent places. Now
it is always handled in dwflpp::setup_user/setup_kernel.
* tapsets.cxx (dwflpp::setup_user): add module_cache check
(dwarf_builder::build): remove module_cache check
(dwarf_cast_expanding_visitor::visit_cast_op): ditto
|
| | | |
|
| | |
| | |
| | |
| | | |
* includes/sys/sdt.h (STAP_PROBE): Don't add __VA_ARGS__.
|
| | |
| | |
| | |
| | |
| | | |
* includes/sys/sdt.h (STAP_PROBEN_): New macros that take
advantage of __COUNTER__
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Rewrite some functions using type casting to
get rid of embedded C code in nfs, scsi, signal,
socket, rpc, task and vfs tapset.
Signed-off-by: Wenji Huang <wenji.huang@oracle.com>
|
| | | |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
Dev Guide
|
| |/ |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
* tapset/inet_sock.stp (inet_get_local_port): Fix kernel version check.
(inet_get_ip_source): Likewise.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* buildrun.cxx (compile_pass): Add autoconf line for stack trace
test, which defines STAPCONF_KERNEL_STACKTRACE.
* runtime/autoconf-save-stack-trace.c: New file.
* runtime/stack.c : Use STAPCONF_KERNEL_STACKTRACE instead of
tests for kernel configuration and versions.
* runtime/stack-i386.c : ditto
* runtime/stack-x86_64.c : ditto
|
| |
| |
| |
| | |
* translate.cxx (visit_arrayindex): Update last_stmt.
|
| | |
|
| |
| |
| |
| | |
* tapsets.cxx (dwflpp::build): Use .label for .so instead of .statement(N)
|
| |
| |
| |
| |
| | |
It also adds a private copy of access_process_vm to runtime/itrace.c
since that function is not consistently exported by all distros.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Impact: cleanup
Since sdt.h is in git tree, sduprobes is no longer needed.
* Makefile.am: Remove sduprobes.
* Makefile.in: Regenerated.
* doc/Makefile.in: Ditto.
* runtime/sduprobes.c: Removed.
Signed-off-by: Wenji Huang <wenji.huang@oracle.com>
|
| |
| |
| |
| |
| | |
* dtrace (provider): Add STAP_PROBE10.
* includes/sys/sdt.h: Likewise. Convert labels to __label__
|
| | |
|
| | |
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* tapset/inet_sock.stp: Remove includes.
(inet_get_local_port): No embedded C, use @cast.
(inet_get_ip_source): Likewise.
(daddr_to_string): New function, still some embedded C used.
|
| | |
| | |
| | |
| | | |
* tapset/networking.stp: Remove include.
|
| | |
| | |
| | |
| | |
| | | |
* tapset/aux_syscalls.stp (_struct_sigaction_u): Only needed and compiles
when CONFIG_COMPAT defined.
|
| | |
| | |
| | |
| | | |
The gcc on Ubuntu doesn't like fprintf() without format arguments
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Impact: trivial cleanup.
Avoid emitting empty struct global code that is harmless.
Signed-off-by: Wenji Huang <wenji.huang@oracle.com>
|
| |\| |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
2009-03-12 David Smith <dsmith@redhat.com>
* transport/ring_buffer.c (__stp_alloc_ring_buffer): Updated
buffer size.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
2009-03-11 David Smith <dsmith@redhat.com>
* print_new.c (stp_print_flush): Updated MAX_RESERVE_SIZE.
* transport/ring_buffer.c (__stp_alloc_ring_buffer): Reserves
more space.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
2009-03-11 David Smith <dsmith@redhat.com>
* systemtap.printf/end1.exp: The test fails when stap fails.
* systemtap.printf/end1b.exp: Ditto.
* systemtap.printf/mixed_out.exp: Ditto.
* systemtap.printf/mixed_outb.exp: Ditto.
* systemtap.printf/out1.exp: Ditto.
* systemtap.printf/out1b.exp: Ditto.
* systemtap.printf/out2.exp: Ditto.
* systemtap.printf/out2b.exp: Ditto.
* systemtap.printf/out3.exp: Ditto.
* systemtap.printf/out3b.exp: Ditto.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
2009-03-11 David Smith <dsmith@redhat.com>
* print_new.c (stp_print_flush): Breaks up the buffer into smaller
pieces (since the ring_buffer likes lots of small events, not one
large one).
* transport/ring_buffer.c (__stp_alloc_ring_buffer): Reserves
space for struct _stp_entry.
(_stp_data_poll_trace): New function.
(_stp_data_write_commit): Wakes up any tasks waiting on data.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
2009-03-09 David Smith <dsmith@redhat.com>
* print_new.c (stp_print_flush): Calls _stp_data_write_reserve()
and _stp_data_write_commit().
* transport/ring_buffer.c (__stp_alloc_ring_buffer): Sets up a
default buffer size of STP_BUFFER_SIZE;
(trace_seq_reset): New function.
(peek_next_entry): New function.
(__find_next_entry): New function.
(find_next_entry_inc): New function.
(_stp_data_read_trace): Uses find_next_entry_inc() to get the next
entry, then calls _stp_entry_to_user() to copy it to the user's
buffer, then calls ring_buffer_consume() to consume it.
(_stp_data_write_reserve): New function.
(_stp_data_write_commit): New function.
* transport/transport.c (_stp_transport_close): Calls functions
that were ifdef'ed out.
* transport/transport.h (struct _stp_entry): Added _stp_entry
definition and _stp_data_write_reserve()/_stp_data_write_commit()
prototypes.
|