summaryrefslogtreecommitdiffstats
path: root/runtime
Commit message (Collapse)AuthorAgeFilesLines
* Add kernel-writing functions for guru onlyJosh Stone2010-04-011-0/+11
| | | | | * runtime/loc2c-runtime.h (store_deref_string): New. * tapset/conversions-guru.stp (set_kernel_*): New guru functions.
* Sprinkle static to prevent unnecessary inclusionJosh Stone2010-03-182-3/+3
| | | | | | * runtime/stack.c (_stp_stack_print_tsk): Static. (_stp_stack_snprint_tsk): Static. * runtime/task_finder.c (__stp_utrace_task_finder_ops): Static.
* Create one perf structure to rule them allJosh Stone2010-03-182-58/+29
| | | | | | | | | | * perf.h (stap_perf_probe): Define one structure for all our needs. * perf.c (_stp_perf_init): Use the new struct, return errors directly. (_stp_perf_exit): Use the new struct. * tapset-perfmon.cxx (perf_derived_probe_group::emit_module_decls): Use the stap_perf_probe definition from perf.h now. (perf_derived_probe_group::emit_module_init): Adapt. (perf_derived_probe_group::emit_module_exit): Adapt.
* Remove <asm/segment.h> inclusion to fix ppc build.David Smith2010-03-181-1/+0
| | | | | * runtime/sym.c: Removed <asm/segment.h> include. That file doesn't exist on ppc, and it appears to be empty everywhere else.
* PR909: filter out offline cpus from perfctr registration loopFrank Ch. Eigler2010-03-171-0/+5
| | | | * runtime/perf.c (_stp_perf_init): If cpu_is_offline(), don't.
* Preserve perf initialization errorsJosh Stone2010-03-171-3/+7
| | | | | | | * runtime/perf.c (_stp_perf_init): Pass through ERR_PTRs, and create our own -ENOMEM for allocation failures. * tapset-perfmon.cxx (perf_derived_probe_group::emit_module_init): Check IS_ERR for registration status.
* Modify the systemtap perf sampling internal apiWill Cohen2010-03-172-20/+31
| | | | | | The only information available in the overflow interrupt is the event. Need to group other pieces of information needed by systemtap, so they can be found based on the the location of the event information.
* PR909: Runtime for Performance Event SamplingWill Cohen2010-03-172-108/+69
| | | | | | | | | | | | | | Implements a very simple sampling runtime to using the performance events kernel API. An perf event attribute describing the setup and a function to handle the counter overflows are passed into _stp_perf_init(). This function sets up the event on each processor. If successfully initialized, a pointer data structure is returned. When the sampling is no longer needed _stp_perf_del() is called to shutdown the sampling. * runtime/perf.h: Add declarations for data structures and functions * runtime/perf.c: Remove old perfmon runtime runtime. Add _stp_perf_init() and _stp_perf_del() functions.
* PR10812: make build-id checking somewhat more robust w.r.t. bad addressesFrank Ch. Eigler2010-03-161-18/+36
| | | | | * runtime/sym.c (_stp_module_check): Use a failure-tolerant get_user() loop instead of memcmp() for buildid binary strings.
* Fix the edge-case of MAXTRYLOCK=0Josh Stone2010-03-111-13/+17
| | | | | | | | | | | | | | | | | We didn't really have good semantics for what is meant by MAXTRYLOCK=0, so when skipped.exp tried it, we ended up locking the variable and then reporting a skip without ever unlocking it. This is now cleaning up the semantics such that MAXTRYLOCK defines how many times we should loop if the lock is busy. Thus MAXTRYLOCK=0 means we try only once and fail immediately. The testcase was accidentally creating contention due to the broken unlock behavior. We now have to try a bit harder to create real contention, so some lengthy delays are inserted to hoard the lock. * runtime/probe_lock.h (stp_probe_lock): Fix the skip behavior. * testsuite/systemtap.base/skipped.exp: Add a big udelay.
* Use exported print_context_stack for 2.6.33Wenji Huang2010-03-101-13/+2
| | | | | * runtime/stack.c(print_stack_ops): Use print_context_stack and adjust version code.
* Fixed PR 11336 by using a wait queue to wait on procfs file availability.David Smith2010-03-011-70/+53
| | | | | | | | | | | * runtime/procfs-probes.c: Removed old kernel 2.6.16 code. Simplified _spp_lock macros. (_stp_proc_open_file): If file is busy, use a wait queue to wait on it being available. (_stp_proc_release_file): Decrease open count. * tapset-procfs.cxx (emit_module_init): Updated procfs probe initialization/shutdown routine names. (emit_module_exit): Ditto.
* Fixed pr 10690 by adding '.maxsize(NNN)' procfs read probe parameter.David Smith2010-02-251-5/+4
| | | | | | | | | | | | | | | | | | | | | | * tapset-procfs.cxx (procfs_derived_probe::procfs_derived_probe): Added 'maxsize_val' initialization. (procfs_derived_probe::join_group): Updated '_stp_procfs_data' definition and added STP_PROCFS_BUFSIZE. (procfs_derived_probe_group::emit_module_decls): Emits structure to contain procfs file buffers. Initializes '.bufsize' structure member. (procfs_var_expanding_visitor::visit_target_symbol): Uses 'bufsize' for maximum buffer size instead of using MAXSTRINGLEN. (procfs_builder::build): Looks for '.maxsize(NNN)' parameter. (register_tapset_procfs): Added '.maxsize(NNN)' parameter binding. * runtime/procfs-probes.c (stap_procfs_probe): Converted 'buffer' to a pointer and added 'bufsize' member. * testsuite/semko/procfs13.stp: New testcase. * testsuite/semko/procfs14.stp: Ditto. * testsuite/semko/procfs15.stp: Ditto. * testsuite/systemtap.base/procfs_maxsize.exp: Ditto. * testsuite/systemtap.base/procfs.exp: Minor fix. * stapprobes.3stap.in: Added '.maxsize(NNN)' documentation. * stap.1.in: Added STP_PROCFS_BUFSIZE documentation.
* Use clamping to more easily normalize input valuesJosh Stone2010-02-163-8/+16
| | | | | | The kernel has min/max/clamp macros to make range comparisons easier. Clamp is a newer invention, but we can define it for older kernels in terms of min and max.
* PR11277: Use consistent octal in quoted stringsJosh Stone2010-02-161-10/+3
| | | | | | | | | | Previously, our octal escapes used variable lengths, which can lead to ambiguities. Also, 8-bit characters would only output the least digit. * runtime/string.c (_stp_text_str): Always output 3-digit octal escapes, and handle 8-bit chars more gracefully. * testsuite/systemtap.string/text_str.stp: Include an 8-bit character. * testsuite/systemtap.string/text_str.exp: Above + expect 3-digit octal.
* Fixed PR 11078. Changed code to avoided procfs race condition.David Smith2010-02-032-4/+215
| | | | | | | | | | | | | | | | | * runtime/procfs.c: Allow STP_MAX_PROCFS_FILES define to be overridden. (_stp_create_procfs): Calls proc_create() instead of create_proc_entry() to avoid a race condition. * runtime/procfs-probes.c: New file containing procfs probe support routines. * tapset-procfs.cxx (procfs_derived_probe::join_group): Update struct _stp_procfs_data definition. (procfs_derived_probe::emit_module_decls): Include procfs-probes.c, which is where the definition of struct stap_procfs_probe exists. Update generated routines to read/write procfs data. (procfs_derived_probe_group::emit_module_init): Pass file_operations argument to _stp_create_procfs(). Initialize mutex. (procfs_var_expanding_visitor::visit_target_symbol): Update generated code.
* Fixed PR 11220 by setting MAP_STRING_LENGTH to MAXSTRINGLEN.David Smith2010-01-251-3/+5
| | | | | | * runtime/map.h: Set MAP_STRING_LENGTH to MAXSTRINGLEN so that large strings can be stored in arrays. * testsuite/systemtap.base/array_string.exp: New testcase.
* use eh_frame_hdr table to speed up unwindingTim Moore2010-01-202-16/+43
| | | | | | | | | | | | * runtime/sym.h (_stp_module): add unwind_hdr_addr member. * runtime/unwind.c (read_ptr_sect): Modification of read_pointer that also handles offsets from text or "data" sections. (read_pointer): Use it. (_stp_search_unwind_hdr): Use read_ptr_sect to calculate values that are relative to the .eh_frame_hdr section. (unwind_frame): Search the frame header if this is an eh frame. * translate.cxx (get_unwind_data): Get the eh_frame_hdr too. (dump_unwindsyms): Write out eh_frame_hdr stuff.
* Relax sdt address check for attach to running process case.Stan Cox2010-01-151-2/+2
| | | | * uprobes-common.c (stap_uprobe_change_plus): Relax VM_EXEC check.
* runtime: better staprun diagnostics for failed signature testsFrank Ch. Eigler2010-01-151-2/+8
| | | | * modverify.c (verify_module): Print some messages for verbose > 1.
* Improve stack printing formatWenji Huang2010-01-151-1/+2
| | | | * runtime/stack.c (_stp_stack_print_tsk): Use _stp_symbol_print.
* PR11151: Recover stap_uprobes slots on process exitJosh Stone2010-01-142-0/+16
| | | | | | | | | | When a process exits, it won't necessarily bother to munmap all of its shared libraries. This patch makes sure that with uprobes in libraries, we still grab an exit notification and clear everything out. * runtime/uprobes-common.c (stap_uprobe_process_munmap): New. * tapsets.cxx (uprobe_derived_probe_group::emit_module_decls): Use above callback so that we can recover our resources on process exit.
* Use gnu indentation style.Stan Cox2010-01-141-59/+66
|
* Merge branch 'master' of ssh://sources.redhat.com/git/systemtapWilliam Cohen2010-01-131-3/+54
|\
| * Use __access_process_vm_noflush for static user semaphore decrement.Stan Cox2010-01-131-3/+54
| | | | | | | | | | | | * access_process_vm (__access_process_vm_noflush): New * tapsets.cxx (uprobe_derived_probe_group::emit_module_exit): Use it. * translate.cxx (translate_pass): Declare it.
* | Move userspace probing boiler plate code in translator to runtime library.William Cohen2010-01-132-0/+326
|/
* map through uretprobe trampoline in an arbitrary taskTim Moore2010-01-134-35/+114
| | | | | | | | | * runtime/uprobes2/uprobes.c (uprobe_get_pc_task): new function (lookup_uretprobe): new helper function (uprobe_get_pc): use it * runtime/uprobes2/uprobes.h (uprobe_get_pc_task): declare * runtime/uprobes/uprobes.c : ditto * runtime/uprobes/uprobes.h : ditto
* Removed bogus task_finder error message.David Smith2010-01-131-1/+1
| | | | | * runtime/task_finder.c (__stp_utrace_attach): No longer prints bogus error message when utrace_barrier succeeds.
* PR10493: autoconf for cpu_khzWenji Huang2010-01-131-7/+5
| | | | | | * buildrun.cxx (output_cpu_khz): New function to check cpu_khz. (compile_pass): Invoke function output_cpu_khz. * runtime/time.c : Use STAPCONF_CPU_KHZ.
* Add stack walking function for 2.6.33Wenji Huang2010-01-111-0/+14
| | | | | * runtime/stack.c (walk_context_stack): New function. (print_stack_ops): Add function pointer.
* Fixed PR 11148 by reworking transport directory locks.David Smith2010-01-081-14/+30
| | | | | | | | | | * runtime/transport/transport.c (_stp_get_root_dir): No longer locks/unlocks the transport directory. (_stp_remove_root_dir): Ditto. (_stp_transport_fs_init): Locks and unlocks the transport directory. Ensures that the root directory can't be deleted between calling _stp_get_root_dir() and creating the module dir. (_stp_transport_fs_close): Locks and unlocks the transport directory.
* Partial PR 10848 fix. Added testcase for STP_MAXMEMORY.David Smith2010-01-071-20/+21
| | | | | | | | | * runtime/alloc.c (_stp_kmalloc): Renamed 'MAXMEMORY' to 'STP_MAXMEMORY'. (_stp_kzalloc): Ditto. (_stp_vmalloc): Ditto. (_stp_alloc_percpu): Ditto. (_stp_kmalloc_node): Ditto. * testsuite/systemtap.base/maxmemory.exp: New test for STP_MAXMEMORY.
* Partial PR 10848 fix. Added '-DMAXMEMORY=NUM' processing.David Smith2010-01-051-8/+124
| | | | | | | | | | * runtime/alloc.c (_stp_mem_debug_validate): New debug function. (_stp_kmalloc): Added MAXMEMORY code to check size of memory used by module. (_stp_kzalloc): Ditto. (_stp_vmalloc): Ditto. (_stp_alloc_percpu): Ditto. (_stp_kmalloc_node): Ditto.
* bz6436 backtraces from uprobesTim Moore2010-01-055-69/+99
| | | | | | | | | | | | | | | | | | | | | This implements proper unwinding from uprobes in the presence of uretprobe trampolines. * runtime/stack.c (_stp_stack_print): Rework for uprobe context case and refactor a bit. * runtime/uprobes2/uprobes.h (GET_PC_URETPROBE_NONE): new constant * runtime/uprobes2/uprobes.c (uprobe_get_pc): Support translating the trampoline function from uprobe context in addition to uretprobe context. * runtime/uprobes/uprobes.h (GET_PC_URETPROBE_NONE): ditto * runtime/uprobes/uprobes.c (uprobe_get_pc): ditto * tapsets.cxx (uprobe_derived_probe_group::emit_module_decls): Initialize ri in context to GET_PC_URETPROBE_NONE in generated enter_uprobe_probe. * testsuite/systemtap.context/fib.stp: Add an option to do a backtrace on function entry. * testsuite/systemtap.context/fib.exp: Test backtrace in function entry (uprobe) probes.
* Remove all caching from _stp_module_relocate.Mark Wielaard2009-12-291-38/+13
| | | | | | | | | | | This function now also does user space address relocation. The connection with module loading/unloading was removed in commit 1b94bf which made all symbol tables emitted at compile time. _stp_module_relocate is called from the dwarf unwinder, and when doing some of the symbol lookup through dwflpp::emit_adress now. * runtime/sym.c (_stp_module_relocate): Remove last, last_sec and last_tsk caching and invalidation code.
* Set last_tsk in runtime/sym.c _stp_module_relocate.Mark Wielaard2009-12-291-0/+1
| | | | last_tsk was checked but never set. Noticed by Wenji Huang.
* ppc stack: transcribe portions of modern kernel ppc/.../asm/ptrace.hFrank Ch. Eigler2009-12-221-0/+18
| | | | | * runtime/stack-ppc.c (__stp_stack_print): Define STACK_FRAME_LR_SAVE, STACK_FRAME_REGS_MARKER,STACK_FRAME_MARKER, etc.
* Fixed ia64 compile problem with runtime/stack-ia64.c.David Smith2009-12-221-1/+2
| | | | * runtime/stack-ia64.c (__stp_stack_print): Added new 'ri' parameter.
* Fixed compilation on f11.David Smith2009-12-211-0/+1
| | | | * runtime/task_finder.c: Fixed last checkin.
* PR11113 fix. Support new utrace API.David Smith2009-12-213-4/+155
| | | | | | | | | | | | | | | | | | | | * tapset-utrace.cxx (utrace_derived_probe_group::emit_module_decls): Handles new utrace api. * runtime/itrace.c (usr_itrace_report_signal): Ditto. (usr_itrace_report_clone): Ditto. (usr_itrace_report_death): Ditto. * runtime/task_finder.c (__stp_utrace_task_finder_report_clone): Ditto. (__stp_utrace_task_finder_report_exec): Ditto. (__stap_utrace_task_finder_report_death): Ditto. (__stp_utrace_task_finder_target_death): Ditto. (__stp_utrace_task_finder_target_quiesce): Ditto. (__stp_utrace_task_finder_target_syscall_entry): Ditto. (__stp_utrace_task_finder_target_syscall_exit): Ditto. * runtime/uprobes2/uprobes.c (uprobe_report_signal): Ditto. (uprobe_report_quiesce): Ditto. (uprobe_report_exit): Ditto. (uprobe_report_clone): Ditto. (uprobe_report_exec): Ditto.
* PR10601: cleanup for i386, x86-64Frank Ch. Eigler2009-12-211-7/+16
| | | | | | * runtime/loc2c-runtime.h (usr_i386): Fix si/di ordering. Add ip. (usr_x86_64): Add rip. (u_*_register): Use kernel standard ARRAY_SIZE() instead of S().
* PR11015 Support shared library reloading (in different processes)Mark Wielaard2009-12-215-77/+201
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * runtime/task_finder_vma.c (stap_remove_vma_map_info): Return negative status on failure. (stap_find_vma_map_info): Likewise. (stap_find_vma_map_info_user): New function. (stap_drop_vma_maps): New function. * runtime/sym.h (addr): Renamed to static_addr, to store addresses for sections which are always mapped at the same address. (_stp_module_relocate): Add extra struct task_struct *tsk argument. * runtime/sym.c (_stp_tf_exec_cb): New callback, calls stap_drop_vma_maps. (_stp_tf_mmap_cb): Don't store address in module.section, but call stap_add_vma_map_info() per tsk->group_leader for matched module. Don't register empty/null modules. (_stp_module_relocate): Take extra struct task_struct *tsk argument, cache last tsk used. Only use section->static_addr for none dynamic modules. Use stap_find_vma_map_info_user() to locate dynamic modules. (_stp_mod_sec_lookup): Add extra argument unsigned long *rel_addr to optionally store relative address when module/section found. (_stp_kallsyms_lookup): Use _stp_mod_sec_lookup to find relative address. (_stp_sym_init): Register _stp_tf_exec_cb in stap_task_finder_target. Add error check to see if task finder could be initialized. * dwflpp.cxx (emit_address): Pass NULL for kernel/modules and current for user tasks to _stp_module_relocate. * runtime/transport/symbols.c (_stp_do_relocation): Set new static_addr _stp_section field. * runtime/unwind.c (adjustStartLoc): Take new struct task_struct *tsk argument and pass to stap_find_vma_map_info_user and _stp_module_relocate to find adjusted addr. (_stp_search_unwind_hdr): Pass through struct task_struct *tsk. (unwind_frame): Likewise. * tapset/context-symbols.stp (probemod): Add NULL to _stp_mod_sec_lookup call to indicate we aren't interested in relative address. * tapsets.cxx (dwarf_derived_probe_group::emit_module_init): Pass NULL to _stp_module_relocate to indicate kernel/module address.
* brown paper bag typo fixyFrank Ch. Eigler2009-12-201-1/+1
|
* runtime: more build fix for non-utrace kernelsFrank Ch. Eigler2009-12-202-1/+3
| | | | | | * runtime/stack-i386.c (_stp_stack_print): Make call to uprobe_get_pc() conditional on CONFIG_UTRACE. * runtime/stack-x86_64.c: Ditto.
* PR10601: unfork deref()Frank Ch. Eigler2009-12-201-22/+16
| | | | | * runtime/loc2c-runtime.h: Remove k_ vs u_[store_]deref; share instead. * tapsets.cxx: Remove k_ vs u_ redirection for *deref().
* runtime: rhel4 build fix for uretprobe-wannabe stack tracebacksFrank Ch. Eigler2009-12-201-1/+3
| | | | * runtime/stack.c (_stp_stack_print): Comment out *retprobe logic if !CONFIG_UTRACE.
* runtime backtracing: port commit #2e7f8442 to uprobes1Frank Ch. Eigler2009-12-203-2/+46
| | | | * runtime/uprobes/uprobes.c (uprobe_get_pc): new function
* PR10601 cont'd, RHEL5 backward compatibility with more runtime/autoconf*Frank Ch. Eigler2009-12-203-5/+35
|
* PR10601 part 1: i386 and x86-64 regset for dwarf fetch/store_register()sFrank Ch. Eigler2009-12-201-85/+300
| | | | | | | | | | * runtime/loc2c-runtime.h (fetch_register, store_register): forked into k_ (kernel) and u_ (user) varieties. Implement i386 and x86_64 in terms of regset.h; fall back to k_* for other architectures. * tapsets.cxx: (*::visit_target_symbol): Emit macros to map loc2c's fetch/store_register to loc2c-runtime's k_ or u_ as appopriate.
* Remove uprobes.h declaration from runtime.hTim Moore2009-12-184-12/+16
| | | | | | | | | | | Turns out that it breaks on kernels that don't have utrace. * runtime/runtime.h : Don't include uprobes.h * runtime/stack.c: Include uprobes.h * runtime/stack-i386.c: Check if uprobes is included at all. * runtime/stack-x86_64.c: ditto * tapsets.cxx (uprobe_derived_probe_group::emit_module_decls): put uprobes.h include back in.