| 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>
|
|\| |
|
| |
| |
| |
| |
| | |
* translate.cxx (dump_unwindsyms): Adjust extra_offset always
against module base as workaround for buggy elfutils < 0.138.
|
| | |
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | | |
This test simply checks that _gettimeofday_init and _gettimeofday_kill
are pulled in when gettimeofday is used, and also that they are NOT
pulled in when gettimeofday is not used.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Our gettimeofday runtime has frequent wakeups to stay in sync with
kernel time, but this is wasted effort if gettimeofday is not used in
the script. This patch moves the calls to _stp_time_init and
_stp_time_kill into begin and end/error probes, which only get pulled in
if one of the gettimeofday variants is called.
|
| |/
| |
| |
| |
| |
| |
| | |
* tapsets.cxx (dwflpp::build): Improve c+ method navigation.
Use .label for listing mode.
* systemtap.base/static_uprobes.exp: Test multiple invocations of the same
probe per block. (SW9770)
|
| |
| |
| |
| | |
* tapsets.cxx (iterate_over_cu_labels): Check dwarf_child result.
|
| |
| |
| |
| |
| |
| |
| | |
2009-02-23 David Smith <dsmith@redhat.com>
* translate.cxx (translate_pass): Made probe_start()/probe_exit()
function definitions match their declarations.
|