From ba268aa1275afdd5c37452071dbafa58979ea277 Mon Sep 17 00:00:00 2001 From: mcermak Date: Fri, 16 May 2014 17:59:58 +0000 Subject: [PATCH] removed man pages --- SystemTap_Beginners_Guide.pdf | Bin 686819 -> 703092 bytes .../Common_Content/css/common.css | 657 ++-- .../Common_Content/css/default.css | 1 + .../Common_Content/images/title_logo.png | Bin 8178 -> 40059 bytes .../Common_Content/images/title_logo.svg | 118 +- .../SystemTap_Beginners_Guide-Preface.html | 41 +- .../appe-Publican-Revision_History.html | 7 +- SystemTap_Beginners_Guide/arrayoperators.html | 11 +- .../arrayops-aggregates.html | 35 +- .../arrayops-conditionals.html | 11 +- .../arrayops-deleting.html | 11 +- .../arrayops-foreach.html | 13 +- .../arrayops-increment.html | 9 +- .../arrayops-readvalues.html | 9 +- .../associativearrays.html | 17 +- .../commandlineargssect.html | 9 +- .../cross-compiling.html | 77 +- SystemTap_Beginners_Guide/errors.html | 78 +- .../futexcontentionsect.html | 15 +- .../handlerconditionalstatements.html | 29 +- SystemTap_Beginners_Guide/index.html | 11 +- .../inodewatch2sect.html | 9 +- SystemTap_Beginners_Guide/inodewatchsect.html | 19 +- .../intro-systemtap-vs-others.html | 13 +- SystemTap_Beginners_Guide/introduction.html | 21 +- SystemTap_Beginners_Guide/ioblktimesect.html | 11 +- SystemTap_Beginners_Guide/iotimesect.html | 19 +- SystemTap_Beginners_Guide/ix01.html | 3 +- SystemTap_Beginners_Guide/mainsect-disk.html | 19 +- .../mainsect-profiling.html | 15 +- SystemTap_Beginners_Guide/paracallgraph.html | 17 +- SystemTap_Beginners_Guide/pr01s02.html | 5 +- SystemTap_Beginners_Guide/references.html | 41 +- SystemTap_Beginners_Guide/runtimeerror.html | 37 +- .../scriptconstructions.html | 17 +- SystemTap_Beginners_Guide/scripts.html | 63 +- .../syscallsbyprocpidsect.html | 13 +- .../systemtapscript-handler.html | 55 +- .../targetavailable.html | 7 +- .../targetvariables.html | 31 +- .../threadtimessect.html | 11 +- SystemTap_Beginners_Guide/timeoutssect.html | 11 +- SystemTap_Beginners_Guide/topsyssect.html | 13 +- SystemTap_Beginners_Guide/traceio2sect.html | 17 +- SystemTap_Beginners_Guide/traceiosect.html | 23 +- SystemTap_Beginners_Guide/typecasting.html | 9 +- .../understanding-how-systemtap-works.html | 13 +- .../understanding-tapsets.html | 7 +- .../useful-systemtap-scripts.html | 63 +- .../userspace-probing.html | 66 +- .../using-systemtap.html | 97 +- SystemTap_Beginners_Guide/using-usage.html | 109 +- SystemTap_Beginners_Guide/ustack.html | 21 +- .../utargetvariable.html | 33 +- man/dtrace.1.html | 208 -- man/error::buildid.7stap.html | 117 - man/error::dwarf.7stap.html | 111 - man/error::fault.7stap.html | 70 - man/error::inode-uprobes.7stap.html | 65 - man/error::pass1.7stap.html | 93 - man/error::pass2.7stap.html | 128 - man/error::pass3.7stap.html | 62 - man/error::pass4.7stap.html | 85 - man/error::pass5.7stap.html | 129 - man/error::process-tracking.7stap.html | 128 - man/error::reporting.7stap.html | 77 - man/error::sdt.7stap.html | 120 - man/function::HZ.3stap.html | 68 - man/function::MAJOR.3stap.html | 65 - man/function::MINOR.3stap.html | 65 - man/function::MKDEV.3stap.html | 72 - man/function::addr.3stap.html | 71 - man/function::addr_to_node.3stap.html | 72 - man/function::ansi_clear_screen.3stap.html | 68 - man/function::ansi_cursor_hide.3stap.html | 68 - man/function::ansi_cursor_move.3stap.html | 79 - man/function::ansi_cursor_restore.3stap.html | 69 - man/function::ansi_cursor_save.3stap.html | 68 - man/function::ansi_cursor_show.3stap.html | 68 - man/function::ansi_new_line.3stap.html | 68 - man/function::ansi_reset_color.3stap.html | 68 - man/function::ansi_set_color.3stap.html | 72 - man/function::ansi_set_color2.3stap.html | 79 - man/function::ansi_set_color3.3stap.html | 86 - man/function::asmlinkage.3stap.html | 68 - man/function::atomic_long_read.3stap.html | 72 - man/function::atomic_read.3stap.html | 72 - man/function::backtrace.3stap.html | 70 - man/function::bytes_to_string.3stap.html | 72 - man/function::caller.3stap.html | 69 - man/function::caller_addr.3stap.html | 68 - man/function::callers.3stap.html | 72 - man/function::cmdline_arg.3stap.html | 72 - man/function::cmdline_args.3stap.html | 86 - man/function::cmdline_str.3stap.html | 68 - man/function::commit.3stap.html | 75 - man/function::cpu.3stap.html | 68 - man/function::cpu_clock_ms.3stap.html | 72 - man/function::cpu_clock_ns.3stap.html | 72 - man/function::cpu_clock_s.3stap.html | 72 - man/function::cpu_clock_us.3stap.html | 72 - man/function::cpuid.3stap.html | 68 - man/function::cputime_to_msecs.3stap.html | 65 - man/function::cputime_to_string.3stap.html | 72 - man/function::cputime_to_usecs.3stap.html | 65 - man/function::ctime.3stap.html | 99 - man/function::d_name.3stap.html | 74 - man/function::d_path.3stap.html | 74 - man/function::delete_stopwatch.3stap.html | 73 - man/function::discard.3stap.html | 65 - man/function::egid.3stap.html | 68 - man/function::env_var.3stap.html | 72 - man/function::errno_str.3stap.html | 72 - man/function::error.3stap.html | 74 - man/function::euid.3stap.html | 68 - man/function::execname.3stap.html | 68 - man/function::exit.3stap.html | 70 - man/function::fastcall.3stap.html | 68 - man/function::format_ipaddr.3stap.html | 72 - man/function::ftrace.3stap.html | 72 - man/function::get_cycles.3stap.html | 68 - man/function::get_loadavg_index.3stap.html | 72 - man/function::get_sa_flags.3stap.html | 65 - man/function::get_sa_handler.3stap.html | 65 - man/function::gettimeofday_ms.3stap.html | 68 - man/function::gettimeofday_ns.3stap.html | 68 - man/function::gettimeofday_s.3stap.html | 68 - man/function::gettimeofday_us.3stap.html | 68 - man/function::gid.3stap.html | 68 - man/function::htonl.3stap.html | 65 - man/function::htonll.3stap.html | 65 - man/function::htons.3stap.html | 65 - man/function::indent.3stap.html | 72 - man/function::indent_depth.3stap.html | 73 - man/function::inet_get_ip_source.3stap.html | 65 - man/function::inet_get_local_port.3stap.html | 65 - man/function::inode_name.3stap.html | 74 - man/function::inode_path.3stap.html | 74 - man/function::int_arg.3stap.html | 72 - man/function::ip_ntop.3stap.html | 65 - man/function::ipmib_filter_key.3stap.html | 91 - man/function::ipmib_get_proto.3stap.html | 73 - man/function::ipmib_local_addr.3stap.html | 80 - man/function::ipmib_remote_addr.3stap.html | 80 - man/function::ipmib_tcp_local_port.3stap.html | 80 - ...function::ipmib_tcp_remote_port.3stap.html | 80 - man/function::is_myproc.3stap.html | 68 - man/function::is_return.3stap.html | 68 - man/function::is_sig_blocked.3stap.html | 72 - man/function::isdigit.3stap.html | 72 - man/function::isinstr.3stap.html | 82 - man/function::jiffies.3stap.html | 69 - man/function::kernel_char.3stap.html | 72 - man/function::kernel_int.3stap.html | 72 - man/function::kernel_long.3stap.html | 72 - man/function::kernel_pointer.3stap.html | 72 - man/function::kernel_short.3stap.html | 72 - man/function::kernel_string.3stap.html | 72 - man/function::kernel_string2.3stap.html | 79 - man/function::kernel_string2_utf16.3stap.html | 79 - man/function::kernel_string2_utf32.3stap.html | 79 - man/function::kernel_string_n.3stap.html | 79 - man/function::kernel_string_utf16.3stap.html | 72 - man/function::kernel_string_utf32.3stap.html | 72 - man/function::linuxmib_filter_key.3stap.html | 84 - man/function::local_clock_ms.3stap.html | 68 - man/function::local_clock_ns.3stap.html | 68 - man/function::local_clock_s.3stap.html | 68 - man/function::local_clock_us.3stap.html | 68 - man/function::log.3stap.html | 72 - man/function::long_arg.3stap.html | 72 - man/function::longlong_arg.3stap.html | 72 - man/function::mdelay.3stap.html | 72 - man/function::mem_page_size.3stap.html | 61 - man/function::modname.3stap.html | 74 - man/function::module_name.3stap.html | 68 - man/function::msecs_to_string.3stap.html | 73 - man/function::nfsderror.3stap.html | 72 - man/function::nsecs_to_string.3stap.html | 73 - man/function::ntohl.3stap.html | 65 - man/function::ntohll.3stap.html | 65 - man/function::ntohs.3stap.html | 65 - man/function::pages_to_string.3stap.html | 75 - man/function::panic.3stap.html | 74 - man/function::pexecname.3stap.html | 68 - man/function::pgrp.3stap.html | 68 - man/function::pid.3stap.html | 68 - man/function::pid2execname.3stap.html | 72 - man/function::pid2task.3stap.html | 72 - man/function::pn.3stap.html | 68 - man/function::pnlabel.3stap.html | 75 - man/function::pointer_arg.3stap.html | 72 - man/function::pp.3stap.html | 68 - man/function::ppfunc.3stap.html | 71 - man/function::ppid.3stap.html | 68 - man/function::print_backtrace.3stap.html | 68 - man/function::print_regs.3stap.html | 68 - man/function::print_stack.3stap.html | 85 - man/function::print_syms.3stap.html | 78 - man/function::print_ubacktrace.3stap.html | 79 - ...unction::print_ubacktrace_brief.3stap.html | 78 - man/function::print_ustack.3stap.html | 86 - man/function::print_usyms.3stap.html | 78 - man/function::printk.3stap.html | 79 - man/function::probe_type.3stap.html | 68 - man/function::probefunc.3stap.html | 78 - man/function::probemod.3stap.html | 68 - man/function::proc_mem_data.3stap.html | 68 - man/function::proc_mem_data_pid.3stap.html | 72 - man/function::proc_mem_rss.3stap.html | 68 - man/function::proc_mem_rss_pid.3stap.html | 72 - man/function::proc_mem_shr.3stap.html | 68 - man/function::proc_mem_shr_pid.3stap.html | 72 - man/function::proc_mem_size.3stap.html | 68 - man/function::proc_mem_size_pid.3stap.html | 72 - man/function::proc_mem_string.3stap.html | 69 - man/function::proc_mem_string_pid.3stap.html | 73 - man/function::proc_mem_txt.3stap.html | 68 - man/function::proc_mem_txt_pid.3stap.html | 72 - man/function::pstrace.3stap.html | 74 - man/function::qs_done.3stap.html | 72 - man/function::qs_run.3stap.html | 72 - man/function::qs_wait.3stap.html | 72 - man/function::qsq_blocked.3stap.html | 79 - man/function::qsq_print.3stap.html | 79 - man/function::qsq_service_time.3stap.html | 79 - man/function::qsq_start.3stap.html | 72 - man/function::qsq_throughput.3stap.html | 79 - man/function::qsq_utilization.3stap.html | 79 - ...function::qsq_wait_queue_length.3stap.html | 79 - man/function::qsq_wait_time.3stap.html | 81 - man/function::raise.3stap.html | 74 - man/function::randint.3stap.html | 65 - man/function::read_stopwatch_ms.3stap.html | 75 - man/function::read_stopwatch_ns.3stap.html | 75 - man/function::read_stopwatch_s.3stap.html | 75 - man/function::read_stopwatch_us.3stap.html | 75 - man/function::real_mount.3stap.html | 74 - man/function::register.3stap.html | 87 - man/function::registers_valid.3stap.html | 74 - man/function::regparm.3stap.html | 75 - man/function::remote_id.3stap.html | 73 - man/function::remote_uri.3stap.html | 71 - man/function::return_str.3stap.html | 84 - man/function::returnstr.3stap.html | 76 - man/function::returnval.3stap.html | 70 - man/function::reverse_path_walk.3stap.html | 74 - man/function::s32_arg.3stap.html | 72 - man/function::s64_arg.3stap.html | 72 - man/function::sa_flags_str.3stap.html | 65 - man/function::sa_handler_str.3stap.html | 72 - man/function::set_kernel_char.3stap.html | 79 - man/function::set_kernel_int.3stap.html | 79 - man/function::set_kernel_long.3stap.html | 79 - man/function::set_kernel_pointer.3stap.html | 79 - man/function::set_kernel_short.3stap.html | 79 - man/function::set_kernel_string.3stap.html | 79 - man/function::set_kernel_string_n.3stap.html | 86 - man/function::sid.3stap.html | 68 - man/function::signal_str.3stap.html | 65 - man/function::sigset_mask_str.3stap.html | 65 - man/function::sock_fam_num2str.3stap.html | 65 - man/function::sock_fam_str2num.3stap.html | 65 - man/function::sock_prot_num2str.3stap.html | 65 - man/function::sock_prot_str2num.3stap.html | 65 - man/function::sock_state_num2str.3stap.html | 65 - man/function::sock_state_str2num.3stap.html | 65 - man/function::speculate.3stap.html | 79 - man/function::speculation.3stap.html | 72 - man/function::sprint_backtrace.3stap.html | 71 - man/function::sprint_loadavg.3stap.html | 68 - man/function::sprint_stack.3stap.html | 85 - man/function::sprint_syms.3stap.html | 79 - man/function::sprint_ubacktrace.3stap.html | 78 - man/function::sprint_ustack.3stap.html | 86 - man/function::sprint_usyms.3stap.html | 79 - man/function::stack.3stap.html | 74 - man/function::stack_size.3stap.html | 68 - man/function::stack_unused.3stap.html | 68 - man/function::stack_used.3stap.html | 68 - man/function::start_stopwatch.3stap.html | 75 - man/function::stop_stopwatch.3stap.html | 75 - man/function::stp_pid.3stap.html | 68 - man/function::str_replace.3stap.html | 89 - man/function::stringat.3stap.html | 79 - man/function::strlen.3stap.html | 72 - man/function::strtol.3stap.html | 81 - man/function::substr.3stap.html | 86 - man/function::symdata.3stap.html | 72 - man/function::symname.3stap.html | 72 - man/function::system.3stap.html | 72 - man/function::target.3stap.html | 78 - man/function::target_set_pid.3stap.html | 75 - man/function::target_set_report.3stap.html | 68 - man/function::task_ancestry.3stap.html | 80 - man/function::task_backtrace.3stap.html | 72 - man/function::task_cpu.3stap.html | 72 - man/function::task_current.3stap.html | 68 - man/function::task_dentry_path.3stap.html | 88 - man/function::task_egid.3stap.html | 72 - man/function::task_euid.3stap.html | 72 - man/function::task_execname.3stap.html | 72 - man/function::task_gid.3stap.html | 72 - ...function::task_max_file_handles.3stap.html | 72 - man/function::task_nice.3stap.html | 72 - ...unction::task_open_file_handles.3stap.html | 72 - man/function::task_parent.3stap.html | 72 - man/function::task_pid.3stap.html | 72 - man/function::task_prio.3stap.html | 72 - man/function::task_start_time.3stap.html | 72 - man/function::task_state.3stap.html | 72 - man/function::task_stime.3stap.html | 68 - man/function::task_stime_tid.3stap.html | 72 - man/function::task_tid.3stap.html | 72 - man/function::task_time_string.3stap.html | 69 - man/function::task_time_string_tid.3stap.html | 73 - man/function::task_uid.3stap.html | 72 - man/function::task_utime.3stap.html | 68 - man/function::task_utime_tid.3stap.html | 72 - man/function::tcpmib_filter_key.3stap.html | 84 - man/function::tcpmib_get_state.3stap.html | 72 - man/function::tcpmib_local_addr.3stap.html | 72 - man/function::tcpmib_local_port.3stap.html | 72 - man/function::tcpmib_remote_addr.3stap.html | 72 - man/function::tcpmib_remote_port.3stap.html | 72 - man/function::text_str.3stap.html | 72 - man/function::text_strn.3stap.html | 88 - man/function::thread_indent.3stap.html | 72 - man/function::thread_indent_depth.3stap.html | 73 - man/function::tid.3stap.html | 68 - man/function::tokenize.3stap.html | 80 - man/function::tz_ctime.3stap.html | 75 - man/function::tz_gmtoff.3stap.html | 68 - man/function::tz_name.3stap.html | 68 - man/function::u32_arg.3stap.html | 72 - man/function::u64_arg.3stap.html | 72 - man/function::u_register.3stap.html | 72 - man/function::uaddr.3stap.html | 71 - man/function::ubacktrace.3stap.html | 79 - man/function::ucallers.3stap.html | 79 - man/function::udelay.3stap.html | 72 - man/function::uid.3stap.html | 68 - man/function::uint_arg.3stap.html | 72 - man/function::ulong_arg.3stap.html | 72 - man/function::ulonglong_arg.3stap.html | 72 - man/function::umodname.3stap.html | 72 - man/function::usecs_to_string.3stap.html | 73 - man/function::user_char.3stap.html | 72 - man/function::user_char_warn.3stap.html | 72 - man/function::user_int.3stap.html | 72 - man/function::user_int16.3stap.html | 72 - man/function::user_int32.3stap.html | 72 - man/function::user_int64.3stap.html | 72 - man/function::user_int8.3stap.html | 72 - man/function::user_int_warn.3stap.html | 72 - man/function::user_long.3stap.html | 72 - man/function::user_long_warn.3stap.html | 72 - man/function::user_mode.3stap.html | 70 - man/function::user_short.3stap.html | 72 - man/function::user_short_warn.3stap.html | 72 - man/function::user_string.3stap.html | 72 - man/function::user_string2.3stap.html | 79 - man/function::user_string2_n_warn.3stap.html | 86 - man/function::user_string2_utf16.3stap.html | 79 - man/function::user_string2_utf32.3stap.html | 79 - man/function::user_string2_warn.3stap.html | 79 - man/function::user_string_n.3stap.html | 79 - man/function::user_string_n2.3stap.html | 86 - ...function::user_string_n2_quoted.3stap.html | 86 - man/function::user_string_n_quoted.3stap.html | 79 - man/function::user_string_n_warn.3stap.html | 81 - man/function::user_string_quoted.3stap.html | 72 - man/function::user_string_utf16.3stap.html | 72 - man/function::user_string_utf32.3stap.html | 72 - man/function::user_string_warn.3stap.html | 72 - man/function::user_uint16.3stap.html | 72 - man/function::user_uint32.3stap.html | 72 - man/function::user_uint64.3stap.html | 72 - man/function::user_uint8.3stap.html | 72 - man/function::user_ushort.3stap.html | 72 - man/function::user_ushort_warn.3stap.html | 72 - man/function::usrdev2kerndev.3stap.html | 65 - man/function::ustack.3stap.html | 74 - man/function::usymdata.3stap.html | 72 - man/function::usymname.3stap.html | 72 - man/function::vm_fault_contains.3stap.html | 72 - man/function::warn.3stap.html | 72 - man/index.html | 712 ---- man/probe::ioblock.end.3stap.html | 102 - man/probe::ioblock.request.3stap.html | 106 - man/probe::ioblock_trace.bounce.3stap.html | 106 - man/probe::ioblock_trace.end.3stap.html | 108 - man/probe::ioblock_trace.request.3stap.html | 108 - ...be::ioscheduler.elv_add_request.3stap.html | 100 - ...:ioscheduler.elv_add_request.kp.3stap.html | 107 - ...:ioscheduler.elv_add_request.tp.3stap.html | 107 - ...scheduler.elv_completed_request.3stap.html | 100 - ...e::ioscheduler.elv_next_request.3stap.html | 72 - ...heduler.elv_next_request.return.3stap.html | 93 - ...heduler_trace.elv_abort_request.3stap.html | 100 - ...ler_trace.elv_completed_request.3stap.html | 107 - ...heduler_trace.elv_issue_request.3stap.html | 107 - ...duler_trace.elv_requeue_request.3stap.html | 107 - man/probe::ioscheduler_trace.plug.3stap.html | 79 - ...be::ioscheduler_trace.unplug_io.3stap.html | 79 - ...:ioscheduler_trace.unplug_timer.3stap.html | 79 - man/probe::ipmib.ForwDatagrams.3stap.html | 84 - man/probe::ipmib.FragFails.3stap.html | 84 - man/probe::ipmib.FragOKs.3stap.html | 84 - man/probe::ipmib.InAddrErrors.3stap.html | 84 - man/probe::ipmib.InDiscards.3stap.html | 84 - man/probe::ipmib.InNoRoutes.3stap.html | 84 - man/probe::ipmib.InReceives.3stap.html | 84 - man/probe::ipmib.InUnknownProtos.3stap.html | 84 - man/probe::ipmib.OutRequests.3stap.html | 84 - man/probe::ipmib.ReasmReqds.3stap.html | 84 - man/probe::ipmib.ReasmTimeout.3stap.html | 84 - man/probe::irq_handler.entry.3stap.html | 142 - man/probe::irq_handler.exit.3stap.html | 149 - man/probe::kprocess.create.3stap.html | 86 - man/probe::kprocess.exec.3stap.html | 100 - man/probe::kprocess.exec_complete.3stap.html | 100 - man/probe::kprocess.exit.3stap.html | 79 - man/probe::kprocess.release.3stap.html | 102 - man/probe::kprocess.start.3stap.html | 75 - man/probe::linuxmib.DelayedACKs.3stap.html | 84 - man/probe::linuxmib.ListenDrops.3stap.html | 84 - ...probe::linuxmib.ListenOverflows.3stap.html | 84 - ...be::linuxmib.TCPMemoryPressures.3stap.html | 84 - man/probe::netdev.change_mac.3stap.html | 86 - man/probe::netdev.change_mtu.3stap.html | 79 - man/probe::netdev.change_rx_flag.3stap.html | 72 - man/probe::netdev.close.3stap.html | 65 - man/probe::netdev.get_stats.3stap.html | 65 - man/probe::netdev.hard_transmit.3stap.html | 86 - man/probe::netdev.ioctl.3stap.html | 72 - man/probe::netdev.open.3stap.html | 65 - man/probe::netdev.receive.3stap.html | 79 - man/probe::netdev.register.3stap.html | 65 - man/probe::netdev.rx.3stap.html | 72 - man/probe::netdev.set_promiscuity.3stap.html | 86 - man/probe::netdev.transmit.3stap.html | 86 - man/probe::netdev.unregister.3stap.html | 65 - man/probe::netfilter.arp.forward.3stap.html | 220 -- man/probe::netfilter.arp.in.3stap.html | 220 -- man/probe::netfilter.arp.out.3stap.html | 220 -- ...probe::netfilter.bridge.forward.3stap.html | 143 - ...robe::netfilter.bridge.local_in.3stap.html | 143 - ...obe::netfilter.bridge.local_out.3stap.html | 143 - ...::netfilter.bridge.post_routing.3stap.html | 143 - ...e::netfilter.bridge.pre_routing.3stap.html | 143 - man/probe::netfilter.ip.forward.3stap.html | 250 -- man/probe::netfilter.ip.local_in.3stap.html | 250 -- man/probe::netfilter.ip.local_out.3stap.html | 250 -- ...robe::netfilter.ip.post_routing.3stap.html | 250 -- ...probe::netfilter.ip.pre_routing.3stap.html | 247 -- man/probe::nfs.aop.readpage.3stap.html | 135 - man/probe::nfs.aop.readpages.3stap.html | 114 - man/probe::nfs.aop.release_page.3stap.html | 100 - man/probe::nfs.aop.set_page_dirty.3stap.html | 79 - man/probe::nfs.aop.write_begin.3stap.html | 114 - man/probe::nfs.aop.write_end.3stap.html | 138 - man/probe::nfs.aop.writepage.3stap.html | 152 - man/probe::nfs.aop.writepages.3stap.html | 124 - man/probe::nfs.fop.aio_read.3stap.html | 128 - man/probe::nfs.fop.aio_write.3stap.html | 107 - man/probe::nfs.fop.check_flags.3stap.html | 65 - man/probe::nfs.fop.flush.3stap.html | 86 - man/probe::nfs.fop.fsync.3stap.html | 79 - man/probe::nfs.fop.llseek.3stap.html | 93 - man/probe::nfs.fop.lock.3stap.html | 114 - man/probe::nfs.fop.mmap.3stap.html | 135 - man/probe::nfs.fop.open.3stap.html | 93 - man/probe::nfs.fop.read.3stap.html | 72 - man/probe::nfs.fop.release.3stap.html | 79 - man/probe::nfs.fop.sendfile.3stap.html | 107 - man/probe::nfs.fop.write.3stap.html | 72 - man/probe::nfs.proc.commit.3stap.html | 117 - man/probe::nfs.proc.commit_done.3stap.html | 114 - man/probe::nfs.proc.commit_setup.3stap.html | 121 - man/probe::nfs.proc.create.3stap.html | 107 - ...robe::nfs.proc.handle_exception.3stap.html | 72 - man/probe::nfs.proc.lookup.3stap.html | 107 - man/probe::nfs.proc.open.3stap.html | 107 - man/probe::nfs.proc.read.3stap.html | 107 - man/probe::nfs.proc.read_done.3stap.html | 107 - man/probe::nfs.proc.read_setup.3stap.html | 107 - man/probe::nfs.proc.release.3stap.html | 107 - man/probe::nfs.proc.remove.3stap.html | 100 - man/probe::nfs.proc.rename.3stap.html | 121 - man/probe::nfs.proc.write.3stap.html | 121 - man/probe::nfs.proc.write_done.3stap.html | 114 - man/probe::nfs.proc.write_setup.3stap.html | 128 - man/probe::nfsd.close.3stap.html | 65 - man/probe::nfsd.commit.3stap.html | 100 - man/probe::nfsd.create.3stap.html | 114 - man/probe::nfsd.createv3.3stap.html | 128 - man/probe::nfsd.dispatch.3stap.html | 100 - man/probe::nfsd.lookup.3stap.html | 86 - man/probe::nfsd.open.3stap.html | 86 - man/probe::nfsd.proc.commit.3stap.html | 121 - man/probe::nfsd.proc.create.3stap.html | 114 - man/probe::nfsd.proc.lookup.3stap.html | 114 - man/probe::nfsd.proc.read.3stap.html | 135 - man/probe::nfsd.proc.remove.3stap.html | 114 - man/probe::nfsd.proc.rename.3stap.html | 121 - man/probe::nfsd.proc.write.3stap.html | 142 - man/probe::nfsd.read.3stap.html | 114 - man/probe::nfsd.rename.3stap.html | 107 - man/probe::nfsd.unlink.3stap.html | 93 - man/probe::nfsd.write.3stap.html | 114 - man/probe::scheduler.balance.3stap.html | 72 - man/probe::scheduler.cpu_off.3stap.html | 93 - man/probe::scheduler.cpu_on.3stap.html | 86 - man/probe::scheduler.ctxswitch.3stap.html | 135 - man/probe::scheduler.kthread_stop.3stap.html | 72 - ...::scheduler.kthread_stop.return.3stap.html | 72 - man/probe::scheduler.migrate.3stap.html | 100 - man/probe::scheduler.process_exit.3stap.html | 79 - man/probe::scheduler.process_fork.3stap.html | 79 - man/probe::scheduler.process_free.3stap.html | 79 - man/probe::scheduler.process_wait.3stap.html | 72 - man/probe::scheduler.signal_send.3stap.html | 79 - man/probe::scheduler.tick.3stap.html | 79 - man/probe::scheduler.wait_task.3stap.html | 79 - man/probe::scheduler.wakeup.3stap.html | 100 - man/probe::scheduler.wakeup_new.3stap.html | 100 - man/probe::scsi.iocompleted.3stap.html | 128 - man/probe::scsi.iodispatching.3stap.html | 135 - man/probe::scsi.iodone.3stap.html | 128 - man/probe::scsi.ioentry.3stap.html | 93 - man/probe::scsi.ioexecute.3stap.html | 142 - man/probe::scsi.set_state.3stap.html | 114 - man/probe::signal.check_ignored.3stap.html | 86 - ...be::signal.check_ignored.return.3stap.html | 72 - man/probe::signal.checkperm.3stap.html | 114 - man/probe::signal.checkperm.return.3stap.html | 72 - man/probe::signal.do_action.3stap.html | 107 - man/probe::signal.do_action.return.3stap.html | 72 - man/probe::signal.flush.3stap.html | 86 - man/probe::signal.force_segv.3stap.html | 93 - ...probe::signal.force_segv.return.3stap.html | 72 - man/probe::signal.handle.3stap.html | 121 - man/probe::signal.handle.return.3stap.html | 79 - man/probe::signal.pending.3stap.html | 86 - man/probe::signal.pending.return.3stap.html | 72 - man/probe::signal.procmask.3stap.html | 93 - man/probe::signal.procmask.return.3stap.html | 72 - man/probe::signal.send.3stap.html | 135 - man/probe::signal.send.return.3stap.html | 119 - man/probe::signal.send_sig_queue.3stap.html | 100 - ...e::signal.send_sig_queue.return.3stap.html | 72 - man/probe::signal.sys_tgkill.3stap.html | 107 - ...probe::signal.sys_tgkill.return.3stap.html | 72 - man/probe::signal.sys_tkill.3stap.html | 100 - man/probe::signal.syskill.3stap.html | 93 - man/probe::signal.syskill.return.3stap.html | 61 - man/probe::signal.systkill.return.3stap.html | 72 - man/probe::signal.wakeup.3stap.html | 86 - man/probe::socket.aio_read.3stap.html | 123 - man/probe::socket.aio_read.return.3stap.html | 130 - man/probe::socket.aio_write.3stap.html | 123 - man/probe::socket.aio_write.return.3stap.html | 130 - man/probe::socket.close.3stap.html | 114 - man/probe::socket.close.return.3stap.html | 79 - man/probe::socket.create.3stap.html | 107 - man/probe::socket.create.return.3stap.html | 121 - man/probe::socket.readv.3stap.html | 123 - man/probe::socket.readv.return.3stap.html | 130 - man/probe::socket.receive.3stap.html | 121 - man/probe::socket.recvmsg.3stap.html | 123 - man/probe::socket.recvmsg.return.3stap.html | 130 - man/probe::socket.send.3stap.html | 121 - man/probe::socket.sendmsg.3stap.html | 123 - man/probe::socket.sendmsg.return.3stap.html | 130 - man/probe::socket.writev.3stap.html | 123 - man/probe::socket.writev.return.3stap.html | 130 - man/probe::softirq.entry.3stap.html | 86 - man/probe::softirq.exit.3stap.html | 86 - man/probe::stap.cache_add_mod.3stap.html | 79 - man/probe::stap.cache_add_nss.3stap.html | 79 - man/probe::stap.cache_add_src.3stap.html | 79 - man/probe::stap.cache_clean.3stap.html | 72 - man/probe::stap.cache_get.3stap.html | 79 - man/probe::stap.pass0.3stap.html | 72 - man/probe::stap.pass0.end.3stap.html | 5 - man/probe::stap.pass1.end.3stap.html | 5 - man/probe::stap.pass1a.3stap.html | 73 - man/probe::stap.pass1b.3stap.html | 72 - man/probe::stap.pass2.3stap.html | 73 - man/probe::stap.pass2.end.3stap.html | 5 - man/probe::stap.pass3.3stap.html | 73 - man/probe::stap.pass3.end.3stap.html | 5 - man/probe::stap.pass4.3stap.html | 73 - man/probe::stap.pass4.end.3stap.html | 5 - man/probe::stap.pass5.3stap.html | 73 - man/probe::stap.pass5.end.3stap.html | 5 - man/probe::stap.pass6.3stap.html | 72 - man/probe::stap.pass6.end.3stap.html | 5 - man/probe::stap.system.3stap.html | 72 - man/probe::stap.system.return.3stap.html | 72 - man/probe::stap.system.spawn.3stap.html | 79 - ...:stapio.receive_control_message.3stap.html | 86 - man/probe::staprun.insert_module.3stap.html | 72 - man/probe::staprun.remove_module.3stap.html | 72 - ...e::staprun.send_control_message.3stap.html | 86 - ...e::sunrpc.clnt.bind_new_program.3stap.html | 107 - man/probe::sunrpc.clnt.call_async.3stap.html | 135 - man/probe::sunrpc.clnt.call_sync.3stap.html | 135 - ...probe::sunrpc.clnt.clone_client.3stap.html | 107 - ...robe::sunrpc.clnt.create_client.3stap.html | 107 - ...probe::sunrpc.clnt.restart_call.3stap.html | 107 - ...be::sunrpc.clnt.shutdown_client.3stap.html | 184 - man/probe::sunrpc.sched.delay.3stap.html | 107 - man/probe::sunrpc.sched.execute.3stap.html | 100 - man/probe::sunrpc.sched.new_task.3stap.html | 93 - ...robe::sunrpc.sched.release_task.3stap.html | 101 - man/probe::sunrpc.svc.create.3stap.html | 5 - man/probe::sunrpc.svc.destroy.3stap.html | 5 - man/probe::sunrpc.svc.drop.3stap.html | 5 - man/probe::sunrpc.svc.process.3stap.html | 5 - man/probe::sunrpc.svc.recv.3stap.html | 5 - man/probe::sunrpc.svc.register.3stap.html | 5 - man/probe::sunrpc.svc.send.3stap.html | 5 - man/probe::tcp.disconnect.3stap.html | 121 - man/probe::tcp.disconnect.return.3stap.html | 79 - man/probe::tcp.receive.3stap.html | 156 - man/probe::tcp.recvmsg.3stap.html | 121 - man/probe::tcp.recvmsg.return.3stap.html | 114 - man/probe::tcp.sendmsg.3stap.html | 93 - man/probe::tcp.sendmsg.return.3stap.html | 79 - man/probe::tcp.setsockopt.3stap.html | 115 - man/probe::tcp.setsockopt.return.3stap.html | 79 - man/probe::tcpmib.ActiveOpens.3stap.html | 84 - man/probe::tcpmib.AttemptFails.3stap.html | 84 - man/probe::tcpmib.CurrEstab.3stap.html | 84 - man/probe::tcpmib.EstabResets.3stap.html | 84 - man/probe::tcpmib.InSegs.3stap.html | 87 - man/probe::tcpmib.OutRsts.3stap.html | 84 - man/probe::tcpmib.OutSegs.3stap.html | 84 - man/probe::tcpmib.PassiveOpens.3stap.html | 84 - man/probe::tcpmib.RetransSegs.3stap.html | 84 - man/probe::tty.init.3stap.html | 79 - man/probe::tty.ioctl.3stap.html | 79 - man/probe::tty.open.3stap.html | 100 - man/probe::tty.poll.3stap.html | 72 - man/probe::tty.read.3stap.html | 86 - man/probe::tty.receive.3stap.html | 107 - man/probe::tty.register.3stap.html | 86 - man/probe::tty.release.3stap.html | 100 - man/probe::tty.resize.3stap.html | 121 - man/probe::tty.unregister.3stap.html | 86 - man/probe::tty.write.3stap.html | 86 - man/probe::udp.disconnect.3stap.html | 121 - man/probe::udp.disconnect.return.3stap.html | 114 - man/probe::udp.recvmsg.3stap.html | 121 - man/probe::udp.recvmsg.return.3stap.html | 114 - man/probe::udp.sendmsg.3stap.html | 121 - man/probe::udp.sendmsg.return.3stap.html | 79 - man/probe::vm.brk.3stap.html | 86 - man/probe::vm.kfree.3stap.html | 86 - man/probe::vm.kmalloc.3stap.html | 114 - man/probe::vm.kmalloc_node.3stap.html | 114 - man/probe::vm.kmem_cache_alloc.3stap.html | 114 - ...probe::vm.kmem_cache_alloc_node.3stap.html | 114 - man/probe::vm.kmem_cache_free.3stap.html | 86 - man/probe::vm.mmap.3stap.html | 86 - man/probe::vm.munmap.3stap.html | 86 - man/probe::vm.oom_kill.3stap.html | 79 - man/probe::vm.pagefault.3stap.html | 86 - man/probe::vm.pagefault.return.3stap.html | 72 - man/probe::vm.write_shared.3stap.html | 86 - man/probe::vm.write_shared_copy.3stap.html | 93 - man/probe::workqueue.create.3stap.html | 72 - man/probe::workqueue.destroy.3stap.html | 65 - man/probe::workqueue.execute.3stap.html | 79 - man/probe::workqueue.insert.3stap.html | 79 - man/stap-merge.1.html | 185 - man/stap-prep.1.html | 99 - man/stap-report.1.html | 101 - man/stap-server.8.html | 786 ----- man/stap.1.html | 3084 ----------------- man/stapdyn.8.html | 250 -- man/stapex.3stap.html | 246 -- man/stapfuncs.3stap.html | 54 - man/stappaths.7.html | 182 - man/stapprobes.3stap.html | 2020 ----------- man/staprun.8.html | 448 --- man/stapsh.8.html | 64 - man/stapvars.3stap.html | 95 - man/stapvirt.1.html | 349 -- man/systemtap.8.html | 778 ----- man/tapset::ansi.3stap.html | 219 -- man/tapset::atomic.3stap.html | 75 - man/tapset::context-caller.3stap.html | 95 - man/tapset::context-envvar.3stap.html | 64 - man/tapset::context-symbols.3stap.html | 208 -- man/tapset::context-unwind.3stap.html | 112 - man/tapset::context.3stap.html | 592 ---- man/tapset::conversions-guru.3stap.html | 155 - man/tapset::conversions.3stap.html | 235 -- man/tapset::ctime.3stap.html | 59 - man/tapset::dentry.3stap.html | 42 - man/tapset::dev.3stap.html | 107 - man/tapset::errno.3stap.html | 107 - man/tapset::guru-delay.3stap.html | 81 - man/tapset::guru-signal.3stap.html | 64 - man/tapset::indent.3stap.html | 107 - man/tapset::inet.3stap.html | 139 - man/tapset::inet_sock.3stap.html | 75 - man/tapset::ioblock.3stap.html | 123 - man/tapset::ioscheduler.3stap.html | 254 -- man/tapset::ip.3stap.html | 75 - man/tapset::ipmib-filter-default.3stap.html | 59 - man/tapset::ipmib.3stap.html | 299 -- man/tapset::irq.3stap.html | 171 - man/tapset::kprocess.3stap.html | 142 - ...tapset::linuxmib-filter-default.3stap.html | 59 - man/tapset::linuxmib.3stap.html | 107 - man/tapset::loadavg.3stap.html | 79 - man/tapset::logging.3stap.html | 139 - man/tapset::memory.3stap.html | 302 -- man/tapset::netfilter.3stap.html | 186 - man/tapset::networking.3stap.html | 270 -- man/tapset::nfs.3stap.html | 379 -- man/tapset::nfs_proc.3stap.html | 299 -- man/tapset::nfsd.3stap.html | 318 -- man/tapset::nfsderrno.3stap.html | 59 - man/tapset::panic.3stap.html | 69 - man/tapset::pn.3stap.html | 75 - man/tapset::proc_mem.3stap.html | 291 -- man/tapset::pstrace.3stap.html | 59 - man/tapset::queue_stats.3stap.html | 219 -- man/tapset::random.3stap.html | 59 - man/tapset::registers.3stap.html | 299 -- man/tapset::rpc.3stap.html | 347 -- man/tapset::scheduler.3stap.html | 299 -- man/tapset::scsi.3stap.html | 142 - man/tapset::signal.3stap.html | 578 --- man/tapset::socket.3stap.html | 430 --- man/tapset::speculative.3stap.html | 107 - man/tapset::stap_staticmarkers.3stap.html | 475 --- man/tapset::stopwatch.3stap.html | 155 - man/tapset::string.3stap.html | 174 - man/tapset::system.3stap.html | 59 - man/tapset::target_set.3stap.html | 75 - man/tapset::task.3stap.html | 315 -- man/tapset::task_ancestry.3stap.html | 59 - man/tapset::task_time.3stap.html | 262 -- man/tapset::tcp.3stap.html | 190 - man/tapset::tcpmib-filter-default.3stap.html | 59 - man/tapset::tcpmib.3stap.html | 267 -- man/tapset::timestamp.3stap.html | 96 - man/tapset::timestamp_gtod.3stap.html | 107 - man/tapset::timestamp_monotonic.3stap.html | 171 - man/tapset::tokenize.3stap.html | 59 - man/tapset::tty.3stap.html | 219 -- man/tapset::tzinfo.3stap.html | 91 - man/tapset::ucontext-symbols.3stap.html | 161 - man/tapset::ucontext-unwind.3stap.html | 91 - man/tapset::ucontext.3stap.html | 75 - man/tapset::uconversions.3stap.html | 571 --- man/tapset::udp.3stap.html | 142 - man/warning::debuginfo.7stap.html | 177 - man/warning::process-tracking.7stap.html | 60 - tapsets/API-HZ.html | 10 - tapsets/API-MAJOR.html | 7 - tapsets/API-MINOR.html | 7 - tapsets/API-MKDEV.html | 9 - tapsets/API-addr-to-node.html | 10 - tapsets/API-addr.html | 12 - tapsets/API-ansi-clear-screen.html | 10 - tapsets/API-ansi-cursor-hide.html | 9 - tapsets/API-ansi-cursor-move.html | 12 - tapsets/API-ansi-cursor-restore.html | 10 - tapsets/API-ansi-cursor-save.html | 9 - tapsets/API-ansi-cursor-show.html | 9 - tapsets/API-ansi-new-line.html | 9 - tapsets/API-ansi-reset-color.html | 10 - tapsets/API-ansi-set-color.html | 11 - tapsets/API-ansi-set-color2.html | 15 - tapsets/API-ansi-set-color3.html | 19 - tapsets/API-asmlinkage.html | 11 - tapsets/API-atomic-long-read.html | 10 - tapsets/API-atomic-read.html | 9 - tapsets/API-backtrace.html | 12 - tapsets/API-bytes-to-string.html | 16 - tapsets/API-caller-addr.html | 9 - tapsets/API-caller.html | 11 - tapsets/API-callers.html | 12 - tapsets/API-cmdline-arg.html | 12 - tapsets/API-cmdline-args.html | 18 - tapsets/API-cmdline-str.html | 11 - tapsets/API-commit.html | 10 - tapsets/API-cpu-clock-ms.html | 11 - tapsets/API-cpu-clock-ns.html | 11 - tapsets/API-cpu-clock-s.html | 11 - tapsets/API-cpu-clock-us.html | 11 - tapsets/API-cpu.html | 9 - tapsets/API-cpuid.html | 10 - tapsets/API-cputime-to-msecs.html | 7 - tapsets/API-cputime-to-string.html | 10 - tapsets/API-ctime.html | 44 - tapsets/API-d-name.html | 11 - tapsets/API-d-path.html | 12 - tapsets/API-delete-stopwatch.html | 9 - tapsets/API-discard.html | 7 - tapsets/API-egid.html | 9 - tapsets/API-env-var.html | 11 - tapsets/API-errno-str.html | 11 - tapsets/API-error.html | 12 - tapsets/API-euid.html | 9 - tapsets/API-execname.html | 9 - tapsets/API-exit.html | 12 - tapsets/API-fastcall.html | 11 - tapsets/API-format-ipaddr.html | 9 - tapsets/API-ftrace.html | 11 - tapsets/API-get-cycles.html | 13 - tapsets/API-get-sa-flags.html | 7 - tapsets/API-get-sa-handler.html | 7 - tapsets/API-gettimeofday-ms.html | 10 - tapsets/API-gettimeofday-ns.html | 10 - tapsets/API-gettimeofday-s.html | 10 - tapsets/API-gettimeofday-us.html | 10 - tapsets/API-gid.html | 9 - tapsets/API-htonl.html | 7 - tapsets/API-htonll.html | 7 - tapsets/API-htons.html | 7 - tapsets/API-indent.html | 12 - tapsets/API-inet-get-ip-source.html | 7 - tapsets/API-inet-get-local-port.html | 7 - tapsets/API-inode-name.html | 11 - tapsets/API-int-arg.html | 10 - tapsets/API-ioblock-end.html | 31 - tapsets/API-ioblock-request.html | 34 - tapsets/API-ioblock-trace-bounce.html | 33 - tapsets/API-ioblock-trace-end.html | 35 - tapsets/API-ioblock-trace-request.html | 35 - .../API-ioscheduler-elv-add-request-kp.html | 17 - .../API-ioscheduler-elv-add-request-tp.html | 17 - tapsets/API-ioscheduler-elv-add-request.html | 15 - ...API-ioscheduler-elv-completed-request.html | 15 - ...I-ioscheduler-elv-next-request-return.html | 13 - tapsets/API-ioscheduler-elv-next-request.html | 7 - ...I-ioscheduler-trace-elv-abort-request.html | 15 - ...scheduler-trace-elv-completed-request.html | 17 - ...I-ioscheduler-trace-elv-issue-request.html | 17 - ...ioscheduler-trace-elv-requeue-request.html | 17 - tapsets/API-ioscheduler-trace-plug.html | 9 - tapsets/API-ioscheduler-trace-unplug-io.html | 10 - .../API-ioscheduler-trace-unplug-timer.html | 9 - tapsets/API-ip-ntop.html | 7 - tapsets/API-ipmib-ForwDatagrams.html | 12 - tapsets/API-ipmib-FragFails.html | 12 - tapsets/API-ipmib-FragOKs.html | 12 - tapsets/API-ipmib-InAddrErrors.html | 12 - tapsets/API-ipmib-InDiscards.html | 12 - tapsets/API-ipmib-InNoRoutes.html | 12 - tapsets/API-ipmib-InReceives.html | 12 - tapsets/API-ipmib-InUnknownProtos.html | 12 - tapsets/API-ipmib-OutRequests.html | 12 - tapsets/API-ipmib-ReasmReqds.html | 12 - tapsets/API-ipmib-ReasmTimeout.html | 12 - tapsets/API-ipmib-filter-key.html | 17 - tapsets/API-ipmib-get-proto.html | 9 - tapsets/API-ipmib-local-addr.html | 11 - tapsets/API-ipmib-remote-addr.html | 11 - tapsets/API-ipmib-tcp-local-port.html | 11 - tapsets/API-ipmib-tcp-remote-port.html | 11 - tapsets/API-irq-handler-entry.html | 27 - tapsets/API-irq-handler-exit.html | 29 - tapsets/API-is-myproc.html | 10 - tapsets/API-is-return.html | 10 - tapsets/API-is-sig-blocked.html | 9 - tapsets/API-isdigit.html | 11 - tapsets/API-isinstr.html | 12 - tapsets/API-jiffies.html | 11 - tapsets/API-kernel-char.html | 10 - tapsets/API-kernel-int.html | 10 - tapsets/API-kernel-long.html | 10 - tapsets/API-kernel-pointer.html | 11 - tapsets/API-kernel-short.html | 10 - tapsets/API-kernel-string-n.html | 12 - tapsets/API-kernel-string-utf16.html | 11 - tapsets/API-kernel-string-utf32.html | 11 - tapsets/API-kernel-string.html | 11 - tapsets/API-kernel-string2-utf16.html | 13 - tapsets/API-kernel-string2-utf32.html | 13 - tapsets/API-kernel-string2.html | 13 - tapsets/API-kprocess-create.html | 12 - tapsets/API-kprocess-exec-complete.html | 12 - tapsets/API-kprocess-exec.html | 9 - tapsets/API-kprocess-exit.html | 11 - tapsets/API-kprocess-release.html | 18 - tapsets/API-kprocess-start.html | 9 - tapsets/API-linuxmib-DelayedACKs.html | 12 - tapsets/API-linuxmib-ListenDrops.html | 12 - tapsets/API-linuxmib-ListenOverflows.html | 12 - tapsets/API-linuxmib-TCPMemoryPressures.html | 12 - tapsets/API-linuxmib-filter-key.html | 15 - tapsets/API-local-clock-ms.html | 11 - tapsets/API-local-clock-ns.html | 11 - tapsets/API-local-clock-s.html | 11 - tapsets/API-local-clock-us.html | 11 - tapsets/API-log.html | 14 - tapsets/API-long-arg.html | 11 - tapsets/API-longlong-arg.html | 9 - tapsets/API-mdelay.html | 10 - tapsets/API-mem-page-size.html | 7 - tapsets/API-modname.html | 12 - tapsets/API-module-name.html | 11 - tapsets/API-msecs-to-string.html | 12 - tapsets/API-netdev-change-mac.html | 11 - tapsets/API-netdev-change-mtu.html | 9 - tapsets/API-netdev-change-rx-flag.html | 7 - tapsets/API-netdev-close.html | 5 - tapsets/API-netdev-get-stats.html | 5 - tapsets/API-netdev-hard-transmit.html | 11 - tapsets/API-netdev-ioctl.html | 7 - tapsets/API-netdev-open.html | 5 - tapsets/API-netdev-receive.html | 9 - tapsets/API-netdev-register.html | 5 - tapsets/API-netdev-rx.html | 7 - tapsets/API-netdev-set-promiscuity.html | 11 - tapsets/API-netdev-transmit.html | 11 - tapsets/API-netdev-unregister.html | 5 - tapsets/API-netfilter-arp-forward.html | 49 - tapsets/API-netfilter-arp-in.html | 49 - tapsets/API-netfilter-arp-out.html | 49 - tapsets/API-netfilter-bridge-forward.html | 27 - tapsets/API-netfilter-bridge-local-in.html | 27 - tapsets/API-netfilter-bridge-local-out.html | 27 - .../API-netfilter-bridge-post-routing.html | 27 - tapsets/API-netfilter-bridge-pre-routing.html | 27 - tapsets/API-netfilter-ip-forward.html | 57 - tapsets/API-netfilter-ip-local-in.html | 57 - tapsets/API-netfilter-ip-local-out.html | 57 - tapsets/API-netfilter-ip-post-routing.html | 57 - tapsets/API-netfilter-ip-pre-routing.html | 57 - tapsets/API-nfs-aop-readpage.html | 27 - tapsets/API-nfs-aop-readpages.html | 19 - tapsets/API-nfs-aop-release-page.html | 16 - tapsets/API-nfs-aop-set-page-dirty.html | 11 - tapsets/API-nfs-aop-write-begin.html | 25 - tapsets/API-nfs-aop-write-end.html | 29 - tapsets/API-nfs-aop-writepage.html | 33 - tapsets/API-nfs-aop-writepages.html | 24 - tapsets/API-nfs-fop-aio-read.html | 25 - tapsets/API-nfs-fop-aio-write.html | 17 - tapsets/API-nfs-fop-check-flags.html | 5 - tapsets/API-nfs-fop-flush.html | 11 - tapsets/API-nfs-fop-fsync.html | 9 - tapsets/API-nfs-fop-llseek.html | 13 - tapsets/API-nfs-fop-lock.html | 19 - tapsets/API-nfs-fop-mmap.html | 27 - tapsets/API-nfs-fop-open.html | 13 - tapsets/API-nfs-fop-read.html | 9 - tapsets/API-nfs-fop-release.html | 9 - tapsets/API-nfs-fop-sendfile.html | 19 - tapsets/API-nfs-fop-write.html | 9 - tapsets/API-nfs-proc-commit-done.html | 20 - tapsets/API-nfs-proc-commit-setup.html | 25 - tapsets/API-nfs-proc-commit.html | 29 - tapsets/API-nfs-proc-create.html | 17 - tapsets/API-nfs-proc-handle-exception.html | 7 - tapsets/API-nfs-proc-lookup.html | 19 - tapsets/API-nfs-proc-open.html | 17 - tapsets/API-nfs-proc-read-done.html | 18 - tapsets/API-nfs-proc-read-setup.html | 18 - tapsets/API-nfs-proc-read.html | 19 - tapsets/API-nfs-proc-release.html | 17 - tapsets/API-nfs-proc-remove.html | 15 - tapsets/API-nfs-proc-rename.html | 21 - tapsets/API-nfs-proc-write-done.html | 20 - tapsets/API-nfs-proc-write-setup.html | 28 - tapsets/API-nfs-proc-write.html | 25 - tapsets/API-nfsd-close.html | 5 - tapsets/API-nfsd-commit.html | 15 - tapsets/API-nfsd-create.html | 19 - tapsets/API-nfsd-createv3.html | 24 - tapsets/API-nfsd-dispatch.html | 15 - tapsets/API-nfsd-lookup.html | 11 - tapsets/API-nfsd-open.html | 11 - tapsets/API-nfsd-proc-commit.html | 17 - tapsets/API-nfsd-proc-create.html | 15 - tapsets/API-nfsd-proc-lookup.html | 15 - tapsets/API-nfsd-proc-read.html | 21 - tapsets/API-nfsd-proc-remove.html | 15 - tapsets/API-nfsd-proc-rename.html | 17 - tapsets/API-nfsd-proc-write.html | 23 - tapsets/API-nfsd-read.html | 19 - tapsets/API-nfsd-rename.html | 17 - tapsets/API-nfsd-unlink.html | 13 - tapsets/API-nfsd-write.html | 19 - tapsets/API-nfsderror.html | 10 - tapsets/API-ntohl.html | 7 - tapsets/API-ntohll.html | 7 - tapsets/API-ntohs.html | 7 - tapsets/API-pages-to-string.html | 10 - tapsets/API-panic.html | 11 - tapsets/API-pexecname.html | 10 - tapsets/API-pgrp.html | 10 - tapsets/API-pid.html | 9 - tapsets/API-pid2execname.html | 9 - tapsets/API-pid2task.html | 9 - tapsets/API-pn.html | 11 - tapsets/API-pointer-arg.html | 10 - tapsets/API-pp.html | 11 - tapsets/API-ppfunc.html | 10 - tapsets/API-ppid.html | 9 - tapsets/API-print-backtrace.html | 12 - tapsets/API-print-regs.html | 9 - tapsets/API-print-stack.html | 19 - tapsets/API-print-syms.html | 18 - tapsets/API-print-ubacktrace-brief.html | 17 - tapsets/API-print-ubacktrace.html | 17 - tapsets/API-print-ustack.html | 18 - tapsets/API-print-usyms.html | 18 - tapsets/API-printk.html | 14 - tapsets/API-probe-type.html | 15 - tapsets/API-probefunc.html | 17 - tapsets/API-probemod.html | 10 - tapsets/API-proc-mem-data-pid.html | 11 - tapsets/API-proc-mem-data.html | 11 - tapsets/API-proc-mem-rss-pid.html | 11 - tapsets/API-proc-mem-rss.html | 11 - tapsets/API-proc-mem-shr-pid.html | 11 - tapsets/API-proc-mem-shr.html | 11 - tapsets/API-proc-mem-size-pid.html | 11 - tapsets/API-proc-mem-size.html | 11 - tapsets/API-proc-mem-string-pid.html | 11 - tapsets/API-proc-mem-string.html | 11 - tapsets/API-proc-mem-txt-pid.html | 11 - tapsets/API-proc-mem-txt.html | 11 - tapsets/API-pstrace.html | 11 - tapsets/API-qs-done.html | 11 - tapsets/API-qs-run.html | 11 - tapsets/API-qs-wait.html | 10 - tapsets/API-qsq-blocked.html | 12 - tapsets/API-qsq-print.html | 17 - tapsets/API-qsq-service-time.html | 12 - tapsets/API-qsq-start.html | 11 - tapsets/API-qsq-throughput.html | 12 - tapsets/API-qsq-utilization.html | 12 - tapsets/API-qsq-wait-queue-length.html | 11 - tapsets/API-qsq-wait-time.html | 12 - tapsets/API-randint.html | 7 - tapsets/API-read-stopwatch-ms.html | 10 - tapsets/API-read-stopwatch-ns.html | 10 - tapsets/API-read-stopwatch-s.html | 10 - tapsets/API-read-stopwatch-us.html | 10 - tapsets/API-real-mount.html | 12 - tapsets/API-register.html | 38 - tapsets/API-registers-valid.html | 12 - tapsets/API-regparm.html | 17 - tapsets/API-remote-id.html | 14 - tapsets/API-remote-uri.html | 13 - tapsets/API-return-str.html | 16 - tapsets/API-returnstr.html | 16 - tapsets/API-returnval.html | 12 - tapsets/API-reverse-path-walk.html | 11 - tapsets/API-s32-arg.html | 10 - tapsets/API-s64-arg.html | 10 - tapsets/API-sa-flags-str.html | 7 - tapsets/API-sa-handler-str.html | 11 - tapsets/API-scheduler-balance.html | 7 - tapsets/API-scheduler-cpu-off.html | 13 - tapsets/API-scheduler-cpu-on.html | 11 - tapsets/API-scheduler-ctxswitch.html | 25 - .../API-scheduler-kthread-stop-return.html | 7 - tapsets/API-scheduler-kthread-stop.html | 7 - tapsets/API-scheduler-migrate.html | 15 - tapsets/API-scheduler-process-exit.html | 9 - tapsets/API-scheduler-process-fork.html | 9 - tapsets/API-scheduler-process-free.html | 9 - tapsets/API-scheduler-process-wait.html | 7 - tapsets/API-scheduler-signal-send.html | 9 - tapsets/API-scheduler-tick.html | 9 - tapsets/API-scheduler-wait-task.html | 9 - tapsets/API-scheduler-wakeup-new.html | 15 - tapsets/API-scheduler-wakeup.html | 15 - tapsets/API-scsi-iocompleted.html | 24 - tapsets/API-scsi-iodispatching.html | 27 - tapsets/API-scsi-iodone.html | 24 - tapsets/API-scsi-ioentry.html | 13 - tapsets/API-scsi-ioexecute.html | 28 - tapsets/API-scsi-set-state.html | 19 - tapsets/API-set-kernel-char.html | 13 - tapsets/API-set-kernel-int.html | 13 - tapsets/API-set-kernel-long.html | 13 - tapsets/API-set-kernel-pointer.html | 13 - tapsets/API-set-kernel-short.html | 13 - tapsets/API-set-kernel-string-n.html | 15 - tapsets/API-set-kernel-string.html | 13 - tapsets/API-sid.html | 11 - tapsets/API-signal-check-ignored-return.html | 7 - tapsets/API-signal-check-ignored.html | 11 - tapsets/API-signal-checkperm-return.html | 7 - tapsets/API-signal-checkperm.html | 19 - tapsets/API-signal-do-action-return.html | 7 - tapsets/API-signal-do-action.html | 19 - tapsets/API-signal-flush.html | 13 - tapsets/API-signal-force-segv-return.html | 7 - tapsets/API-signal-force-segv.html | 13 - tapsets/API-signal-handle-return.html | 9 - tapsets/API-signal-handle.html | 24 - tapsets/API-signal-pending-return.html | 7 - tapsets/API-signal-pending.html | 14 - tapsets/API-signal-procmask-return.html | 7 - tapsets/API-signal-procmask.html | 19 - tapsets/API-signal-send-return.html | 44 - tapsets/API-signal-send-sig-queue-return.html | 7 - tapsets/API-signal-send-sig-queue.html | 15 - tapsets/API-signal-send.html | 26 - tapsets/API-signal-str.html | 7 - tapsets/API-signal-sys-tgkill-return.html | 7 - tapsets/API-signal-sys-tgkill.html | 19 - tapsets/API-signal-sys-tkill.html | 18 - tapsets/API-signal-syskill-return.html | 5 - tapsets/API-signal-syskill.html | 13 - tapsets/API-signal-systkill-return.html | 7 - tapsets/API-signal-wakeup.html | 15 - tapsets/API-sigset-mask-str.html | 7 - tapsets/API-sock-fam-num2str.html | 7 - tapsets/API-sock-fam-str2num.html | 7 - tapsets/API-sock-prot-num2str.html | 7 - tapsets/API-sock-prot-str2num.html | 7 - tapsets/API-sock-state-num2str.html | 7 - tapsets/API-sock-state-str2num.html | 7 - tapsets/API-socket-aio-read-return.html | 24 - tapsets/API-socket-aio-read.html | 22 - tapsets/API-socket-aio-write-return.html | 24 - tapsets/API-socket-aio-write.html | 22 - tapsets/API-socket-close-return.html | 9 - tapsets/API-socket-close.html | 19 - tapsets/API-socket-create-return.html | 21 - tapsets/API-socket-create.html | 17 - tapsets/API-socket-readv-return.html | 24 - tapsets/API-socket-readv.html | 22 - tapsets/API-socket-receive.html | 21 - tapsets/API-socket-recvmsg-return.html | 24 - tapsets/API-socket-recvmsg.html | 22 - tapsets/API-socket-send.html | 21 - tapsets/API-socket-sendmsg-return.html | 24 - tapsets/API-socket-sendmsg.html | 22 - tapsets/API-socket-writev-return.html | 24 - tapsets/API-socket-writev.html | 22 - tapsets/API-softirq-entry.html | 11 - tapsets/API-softirq-exit.html | 11 - tapsets/API-speculate.html | 11 - tapsets/API-speculation.html | 15 - tapsets/API-sprint-backtrace.html | 21 - tapsets/API-sprint-stack.html | 23 - tapsets/API-sprint-syms.html | 22 - tapsets/API-sprint-ubacktrace.html | 25 - tapsets/API-sprint-ustack.html | 24 - tapsets/API-sprint-usyms.html | 22 - tapsets/API-stack-size.html | 9 - tapsets/API-stack-unused.html | 10 - tapsets/API-stack-used.html | 10 - tapsets/API-stack.html | 12 - tapsets/API-stap-cache-add-mod.html | 10 - tapsets/API-stap-cache-add-nss.html | 11 - tapsets/API-stap-cache-add-src.html | 10 - tapsets/API-stap-cache-clean.html | 7 - tapsets/API-stap-cache-get.html | 10 - tapsets/API-stap-pass0-end.html | 7 - tapsets/API-stap-pass0.html | 7 - tapsets/API-stap-pass1-end.html | 7 - tapsets/API-stap-pass1a.html | 8 - tapsets/API-stap-pass1b.html | 7 - tapsets/API-stap-pass2-end.html | 7 - tapsets/API-stap-pass2.html | 8 - tapsets/API-stap-pass3-end.html | 7 - tapsets/API-stap-pass3.html | 8 - tapsets/API-stap-pass4-end.html | 7 - tapsets/API-stap-pass4.html | 8 - tapsets/API-stap-pass5-end.html | 7 - tapsets/API-stap-pass5.html | 8 - tapsets/API-stap-pass6-end.html | 7 - tapsets/API-stap-pass6.html | 8 - tapsets/API-stap-system-return.html | 8 - tapsets/API-stap-system-spawn.html | 9 - tapsets/API-stap-system.html | 7 - .../API-stapio-receive-control-message.html | 11 - tapsets/API-staprun-insert-module.html | 7 - tapsets/API-staprun-remove-module.html | 7 - tapsets/API-staprun-send-control-message.html | 11 - tapsets/API-start-stopwatch.html | 10 - tapsets/API-stop-stopwatch.html | 10 - tapsets/API-stp-pid.html | 12 - tapsets/API-str-replace.html | 14 - tapsets/API-stringat.html | 12 - tapsets/API-strlen.html | 10 - tapsets/API-strtol.html | 12 - tapsets/API-substr.html | 16 - tapsets/API-sunrpc-clnt-bind-new-program.html | 17 - tapsets/API-sunrpc-clnt-call-async.html | 25 - tapsets/API-sunrpc-clnt-call-sync.html | 25 - tapsets/API-sunrpc-clnt-clone-client.html | 17 - tapsets/API-sunrpc-clnt-create-client.html | 17 - tapsets/API-sunrpc-clnt-restart-call.html | 17 - tapsets/API-sunrpc-clnt-shutdown-client.html | 39 - tapsets/API-sunrpc-sched-delay.html | 17 - tapsets/API-sunrpc-sched-execute.html | 15 - tapsets/API-sunrpc-sched-new-task.html | 13 - tapsets/API-sunrpc-sched-release-task.html | 16 - tapsets/API-sunrpc-svc-create.html | 11 - tapsets/API-sunrpc-svc-destroy.html | 21 - tapsets/API-sunrpc-svc-drop.html | 17 - tapsets/API-sunrpc-svc-process.html | 21 - tapsets/API-sunrpc-svc-recv.html | 11 - tapsets/API-sunrpc-svc-register.html | 15 - tapsets/API-sunrpc-svc-send.html | 17 - tapsets/API-symdata.html | 15 - tapsets/API-symname.html | 11 - tapsets/API-system.html | 12 - tapsets/API-target-set-pid.html | 11 - tapsets/API-target-set-report.html | 10 - tapsets/API-target.html | 20 - tapsets/API-task-backtrace.html | 12 - tapsets/API-task-cpu.html | 9 - tapsets/API-task-current.html | 11 - tapsets/API-task-dentry-path.html | 16 - tapsets/API-task-egid.html | 9 - tapsets/API-task-euid.html | 9 - tapsets/API-task-execname.html | 9 - tapsets/API-task-gid.html | 9 - tapsets/API-task-max-file-handles.html | 9 - tapsets/API-task-nice.html | 9 - tapsets/API-task-open-file-handles.html | 9 - tapsets/API-task-parent.html | 11 - tapsets/API-task-pid.html | 9 - tapsets/API-task-prio.html | 9 - tapsets/API-task-state.html | 11 - tapsets/API-task-stime-tid.html | 12 - tapsets/API-task-stime.html | 11 - tapsets/API-task-tid.html | 9 - tapsets/API-task-time-string-tid.html | 11 - tapsets/API-task-time-string.html | 11 - tapsets/API-task-uid.html | 9 - tapsets/API-task-utime-tid.html | 12 - tapsets/API-task-utime.html | 11 - tapsets/API-tcp-disconnect-return.html | 9 - tapsets/API-tcp-disconnect.html | 21 - tapsets/API-tcp-receive.html | 31 - tapsets/API-tcp-recvmsg-return.html | 19 - tapsets/API-tcp-recvmsg.html | 21 - tapsets/API-tcp-sendmsg-return.html | 9 - tapsets/API-tcp-sendmsg.html | 13 - tapsets/API-tcp-setsockopt-return.html | 9 - tapsets/API-tcp-setsockopt.html | 19 - tapsets/API-tcpmib-ActiveOpens.html | 12 - tapsets/API-tcpmib-AttemptFails.html | 12 - tapsets/API-tcpmib-CurrEstab.html | 12 - tapsets/API-tcpmib-EstabResets.html | 12 - tapsets/API-tcpmib-InSegs.html | 13 - tapsets/API-tcpmib-OutRsts.html | 12 - tapsets/API-tcpmib-OutSegs.html | 12 - tapsets/API-tcpmib-PassiveOpens.html | 12 - tapsets/API-tcpmib-RetransSegs.html | 12 - tapsets/API-tcpmib-filter-key.html | 15 - tapsets/API-tcpmib-get-state.html | 9 - tapsets/API-tcpmib-local-addr.html | 9 - tapsets/API-tcpmib-local-port.html | 9 - tapsets/API-tcpmib-remote-addr.html | 9 - tapsets/API-tcpmib-remote-port.html | 9 - tapsets/API-text-str.html | 12 - tapsets/API-text-strn.html | 17 - tapsets/API-thread-indent.html | 14 - tapsets/API-tid.html | 9 - tapsets/API-tokenize.html | 18 - tapsets/API-tty-init.html | 9 - tapsets/API-tty-ioctl.html | 9 - tapsets/API-tty-open.html | 15 - tapsets/API-tty-poll.html | 7 - tapsets/API-tty-read.html | 11 - tapsets/API-tty-receive.html | 17 - tapsets/API-tty-register.html | 11 - tapsets/API-tty-release.html | 15 - tapsets/API-tty-resize.html | 21 - tapsets/API-tty-unregister.html | 11 - tapsets/API-tty-write.html | 11 - tapsets/API-tz-ctime.html | 13 - tapsets/API-tz-gmtoff.html | 10 - tapsets/API-tz-name.html | 10 - tapsets/API-u-register.html | 10 - tapsets/API-u32-arg.html | 10 - tapsets/API-u64-arg.html | 10 - tapsets/API-uaddr.html | 14 - tapsets/API-ubacktrace.html | 18 - tapsets/API-ucallers.html | 16 - tapsets/API-udelay.html | 10 - tapsets/API-udp-disconnect-return.html | 9 - tapsets/API-udp-disconnect.html | 11 - tapsets/API-udp-recvmsg-return.html | 9 - tapsets/API-udp-recvmsg.html | 11 - tapsets/API-udp-sendmsg-return.html | 9 - tapsets/API-udp-sendmsg.html | 11 - tapsets/API-uid.html | 9 - tapsets/API-uint-arg.html | 10 - tapsets/API-ulong-arg.html | 11 - tapsets/API-ulonglong-arg.html | 10 - tapsets/API-umodname.html | 11 - tapsets/API-user-char-warn.html | 11 - tapsets/API-user-char.html | 10 - tapsets/API-user-int-warn.html | 11 - tapsets/API-user-int.html | 10 - tapsets/API-user-int16.html | 10 - tapsets/API-user-int32.html | 10 - tapsets/API-user-int64.html | 10 - tapsets/API-user-int8.html | 10 - tapsets/API-user-long-warn.html | 13 - tapsets/API-user-long.html | 12 - tapsets/API-user-mode.html | 11 - tapsets/API-user-short-warn.html | 11 - tapsets/API-user-short.html | 10 - tapsets/API-user-string-n-quoted.html | 16 - tapsets/API-user-string-n-warn.html | 14 - tapsets/API-user-string-n.html | 13 - tapsets/API-user-string-n2.html | 16 - tapsets/API-user-string-quoted.html | 13 - tapsets/API-user-string-utf16.html | 11 - tapsets/API-user-string-utf32.html | 11 - tapsets/API-user-string-warn.html | 11 - tapsets/API-user-string.html | 11 - tapsets/API-user-string2-utf16.html | 13 - tapsets/API-user-string2-utf32.html | 13 - tapsets/API-user-string2.html | 13 - tapsets/API-user-uint16.html | 10 - tapsets/API-user-uint32.html | 10 - tapsets/API-user-uint64.html | 10 - tapsets/API-user-uint8.html | 10 - tapsets/API-user-ushort-warn.html | 11 - tapsets/API-user-ushort.html | 10 - tapsets/API-usrdev2kerndev.html | 7 - tapsets/API-ustack.html | 12 - tapsets/API-usymdata.html | 15 - tapsets/API-usymname.html | 11 - tapsets/API-vm-brk.html | 11 - tapsets/API-vm-fault-contains.html | 9 - tapsets/API-vm-kfree.html | 11 - tapsets/API-vm-kmalloc-node.html | 19 - tapsets/API-vm-kmalloc.html | 19 - tapsets/API-vm-kmem-cache-alloc-node.html | 19 - tapsets/API-vm-kmem-cache-alloc.html | 19 - tapsets/API-vm-kmem-cache-free.html | 11 - tapsets/API-vm-mmap.html | 11 - tapsets/API-vm-munmap.html | 11 - tapsets/API-vm-oom-kill.html | 10 - tapsets/API-vm-pagefault-return.html | 11 - tapsets/API-vm-pagefault.html | 12 - tapsets/API-vm-write-shared-copy.html | 15 - tapsets/API-vm-write-shared.html | 13 - tapsets/API-warn.html | 11 - tapsets/API-workqueue-create.html | 7 - tapsets/API-workqueue-destroy.html | 5 - tapsets/API-workqueue-execute.html | 9 - tapsets/API-workqueue-insert.html | 9 - tapsets/ansi.stp.html | 31 - tapsets/context_stp.html | 207 -- tapsets/conversions-guru.stp.html | 22 - tapsets/conversions.stp.html | 93 - tapsets/ctime.stp.html | 13 - tapsets/dentry.stp.html | 16 - tapsets/dev.stp.html | 12 - tapsets/errno.stp.html | 12 - tapsets/guru-delay.stp.html | 12 - tapsets/index.html | 1206 ------- tapsets/introduction.html | 14 - tapsets/iosched.stp.html | 40 - tapsets/irq.stp.html | 21 - tapsets/kprocess.stp.html | 20 - tapsets/logging.stp.html | 16 - tapsets/memory_stp.html | 67 - tapsets/networking.stp.html | 140 - tapsets/nfsd.stp.html | 116 - tapsets/queue_stats.stp.html | 25 - tapsets/random.stp.html | 5 - tapsets/sched.stp.html | 36 - tapsets/scsi.stp.html | 16 - tapsets/signal.stp.html | 70 - tapsets/snmp.stp.html | 79 - tapsets/socket.stp.html | 56 - tapsets/speculation.stp.html | 13 - tapsets/stap_staticmarkers.stp.html | 62 - tapsets/string.stp.html | 25 - tapsets/system.stp.html | 5 - tapsets/task_time_stp.html | 23 - tapsets/timestamp_stp.html | 51 - tapsets/tty.stp.html | 26 - tutorial.pdf | Bin 151396 -> 147621 bytes tutorial/A_Glossary.html | 4 +- tutorial/About_this_document.html | 10 +- tutorial/Analysis.html | 8 +- tutorial/B_Errors.html | 4 +- tutorial/C_Acknowledgments.html | 4 +- tutorial/Contents.html | 4 +- tutorial/Further_information.html | 4 +- tutorial/Introduction.html | 4 +- tutorial/Tapsets.html | 4 +- tutorial/Tracing.html | 6 +- tutorial/footnode.html | 4 +- tutorial/images.pl | 76 +- tutorial/index.html | 6 +- tutorial/labels.pl | 42 +- tutorial/tutorial.html | 6 +- 1407 files changed, 1217 insertions(+), 86848 deletions(-) delete mode 100644 man/dtrace.1.html delete mode 100644 man/error::buildid.7stap.html delete mode 100644 man/error::dwarf.7stap.html delete mode 100644 man/error::fault.7stap.html delete mode 100644 man/error::inode-uprobes.7stap.html delete mode 100644 man/error::pass1.7stap.html delete mode 100644 man/error::pass2.7stap.html delete mode 100644 man/error::pass3.7stap.html delete mode 100644 man/error::pass4.7stap.html delete mode 100644 man/error::pass5.7stap.html delete mode 100644 man/error::process-tracking.7stap.html delete mode 100644 man/error::reporting.7stap.html delete mode 100644 man/error::sdt.7stap.html delete mode 100644 man/function::HZ.3stap.html delete mode 100644 man/function::MAJOR.3stap.html delete mode 100644 man/function::MINOR.3stap.html delete mode 100644 man/function::MKDEV.3stap.html delete mode 100644 man/function::addr.3stap.html delete mode 100644 man/function::addr_to_node.3stap.html delete mode 100644 man/function::ansi_clear_screen.3stap.html delete mode 100644 man/function::ansi_cursor_hide.3stap.html delete mode 100644 man/function::ansi_cursor_move.3stap.html delete mode 100644 man/function::ansi_cursor_restore.3stap.html delete mode 100644 man/function::ansi_cursor_save.3stap.html delete mode 100644 man/function::ansi_cursor_show.3stap.html delete mode 100644 man/function::ansi_new_line.3stap.html delete mode 100644 man/function::ansi_reset_color.3stap.html delete mode 100644 man/function::ansi_set_color.3stap.html delete mode 100644 man/function::ansi_set_color2.3stap.html delete mode 100644 man/function::ansi_set_color3.3stap.html delete mode 100644 man/function::asmlinkage.3stap.html delete mode 100644 man/function::atomic_long_read.3stap.html delete mode 100644 man/function::atomic_read.3stap.html delete mode 100644 man/function::backtrace.3stap.html delete mode 100644 man/function::bytes_to_string.3stap.html delete mode 100644 man/function::caller.3stap.html delete mode 100644 man/function::caller_addr.3stap.html delete mode 100644 man/function::callers.3stap.html delete mode 100644 man/function::cmdline_arg.3stap.html delete mode 100644 man/function::cmdline_args.3stap.html delete mode 100644 man/function::cmdline_str.3stap.html delete mode 100644 man/function::commit.3stap.html delete mode 100644 man/function::cpu.3stap.html delete mode 100644 man/function::cpu_clock_ms.3stap.html delete mode 100644 man/function::cpu_clock_ns.3stap.html delete mode 100644 man/function::cpu_clock_s.3stap.html delete mode 100644 man/function::cpu_clock_us.3stap.html delete mode 100644 man/function::cpuid.3stap.html delete mode 100644 man/function::cputime_to_msecs.3stap.html delete mode 100644 man/function::cputime_to_string.3stap.html delete mode 100644 man/function::cputime_to_usecs.3stap.html delete mode 100644 man/function::ctime.3stap.html delete mode 100644 man/function::d_name.3stap.html delete mode 100644 man/function::d_path.3stap.html delete mode 100644 man/function::delete_stopwatch.3stap.html delete mode 100644 man/function::discard.3stap.html delete mode 100644 man/function::egid.3stap.html delete mode 100644 man/function::env_var.3stap.html delete mode 100644 man/function::errno_str.3stap.html delete mode 100644 man/function::error.3stap.html delete mode 100644 man/function::euid.3stap.html delete mode 100644 man/function::execname.3stap.html delete mode 100644 man/function::exit.3stap.html delete mode 100644 man/function::fastcall.3stap.html delete mode 100644 man/function::format_ipaddr.3stap.html delete mode 100644 man/function::ftrace.3stap.html delete mode 100644 man/function::get_cycles.3stap.html delete mode 100644 man/function::get_loadavg_index.3stap.html delete mode 100644 man/function::get_sa_flags.3stap.html delete mode 100644 man/function::get_sa_handler.3stap.html delete mode 100644 man/function::gettimeofday_ms.3stap.html delete mode 100644 man/function::gettimeofday_ns.3stap.html delete mode 100644 man/function::gettimeofday_s.3stap.html delete mode 100644 man/function::gettimeofday_us.3stap.html delete mode 100644 man/function::gid.3stap.html delete mode 100644 man/function::htonl.3stap.html delete mode 100644 man/function::htonll.3stap.html delete mode 100644 man/function::htons.3stap.html delete mode 100644 man/function::indent.3stap.html delete mode 100644 man/function::indent_depth.3stap.html delete mode 100644 man/function::inet_get_ip_source.3stap.html delete mode 100644 man/function::inet_get_local_port.3stap.html delete mode 100644 man/function::inode_name.3stap.html delete mode 100644 man/function::inode_path.3stap.html delete mode 100644 man/function::int_arg.3stap.html delete mode 100644 man/function::ip_ntop.3stap.html delete mode 100644 man/function::ipmib_filter_key.3stap.html delete mode 100644 man/function::ipmib_get_proto.3stap.html delete mode 100644 man/function::ipmib_local_addr.3stap.html delete mode 100644 man/function::ipmib_remote_addr.3stap.html delete mode 100644 man/function::ipmib_tcp_local_port.3stap.html delete mode 100644 man/function::ipmib_tcp_remote_port.3stap.html delete mode 100644 man/function::is_myproc.3stap.html delete mode 100644 man/function::is_return.3stap.html delete mode 100644 man/function::is_sig_blocked.3stap.html delete mode 100644 man/function::isdigit.3stap.html delete mode 100644 man/function::isinstr.3stap.html delete mode 100644 man/function::jiffies.3stap.html delete mode 100644 man/function::kernel_char.3stap.html delete mode 100644 man/function::kernel_int.3stap.html delete mode 100644 man/function::kernel_long.3stap.html delete mode 100644 man/function::kernel_pointer.3stap.html delete mode 100644 man/function::kernel_short.3stap.html delete mode 100644 man/function::kernel_string.3stap.html delete mode 100644 man/function::kernel_string2.3stap.html delete mode 100644 man/function::kernel_string2_utf16.3stap.html delete mode 100644 man/function::kernel_string2_utf32.3stap.html delete mode 100644 man/function::kernel_string_n.3stap.html delete mode 100644 man/function::kernel_string_utf16.3stap.html delete mode 100644 man/function::kernel_string_utf32.3stap.html delete mode 100644 man/function::linuxmib_filter_key.3stap.html delete mode 100644 man/function::local_clock_ms.3stap.html delete mode 100644 man/function::local_clock_ns.3stap.html delete mode 100644 man/function::local_clock_s.3stap.html delete mode 100644 man/function::local_clock_us.3stap.html delete mode 100644 man/function::log.3stap.html delete mode 100644 man/function::long_arg.3stap.html delete mode 100644 man/function::longlong_arg.3stap.html delete mode 100644 man/function::mdelay.3stap.html delete mode 100644 man/function::mem_page_size.3stap.html delete mode 100644 man/function::modname.3stap.html delete mode 100644 man/function::module_name.3stap.html delete mode 100644 man/function::msecs_to_string.3stap.html delete mode 100644 man/function::nfsderror.3stap.html delete mode 100644 man/function::nsecs_to_string.3stap.html delete mode 100644 man/function::ntohl.3stap.html delete mode 100644 man/function::ntohll.3stap.html delete mode 100644 man/function::ntohs.3stap.html delete mode 100644 man/function::pages_to_string.3stap.html delete mode 100644 man/function::panic.3stap.html delete mode 100644 man/function::pexecname.3stap.html delete mode 100644 man/function::pgrp.3stap.html delete mode 100644 man/function::pid.3stap.html delete mode 100644 man/function::pid2execname.3stap.html delete mode 100644 man/function::pid2task.3stap.html delete mode 100644 man/function::pn.3stap.html delete mode 100644 man/function::pnlabel.3stap.html delete mode 100644 man/function::pointer_arg.3stap.html delete mode 100644 man/function::pp.3stap.html delete mode 100644 man/function::ppfunc.3stap.html delete mode 100644 man/function::ppid.3stap.html delete mode 100644 man/function::print_backtrace.3stap.html delete mode 100644 man/function::print_regs.3stap.html delete mode 100644 man/function::print_stack.3stap.html delete mode 100644 man/function::print_syms.3stap.html delete mode 100644 man/function::print_ubacktrace.3stap.html delete mode 100644 man/function::print_ubacktrace_brief.3stap.html delete mode 100644 man/function::print_ustack.3stap.html delete mode 100644 man/function::print_usyms.3stap.html delete mode 100644 man/function::printk.3stap.html delete mode 100644 man/function::probe_type.3stap.html delete mode 100644 man/function::probefunc.3stap.html delete mode 100644 man/function::probemod.3stap.html delete mode 100644 man/function::proc_mem_data.3stap.html delete mode 100644 man/function::proc_mem_data_pid.3stap.html delete mode 100644 man/function::proc_mem_rss.3stap.html delete mode 100644 man/function::proc_mem_rss_pid.3stap.html delete mode 100644 man/function::proc_mem_shr.3stap.html delete mode 100644 man/function::proc_mem_shr_pid.3stap.html delete mode 100644 man/function::proc_mem_size.3stap.html delete mode 100644 man/function::proc_mem_size_pid.3stap.html delete mode 100644 man/function::proc_mem_string.3stap.html delete mode 100644 man/function::proc_mem_string_pid.3stap.html delete mode 100644 man/function::proc_mem_txt.3stap.html delete mode 100644 man/function::proc_mem_txt_pid.3stap.html delete mode 100644 man/function::pstrace.3stap.html delete mode 100644 man/function::qs_done.3stap.html delete mode 100644 man/function::qs_run.3stap.html delete mode 100644 man/function::qs_wait.3stap.html delete mode 100644 man/function::qsq_blocked.3stap.html delete mode 100644 man/function::qsq_print.3stap.html delete mode 100644 man/function::qsq_service_time.3stap.html delete mode 100644 man/function::qsq_start.3stap.html delete mode 100644 man/function::qsq_throughput.3stap.html delete mode 100644 man/function::qsq_utilization.3stap.html delete mode 100644 man/function::qsq_wait_queue_length.3stap.html delete mode 100644 man/function::qsq_wait_time.3stap.html delete mode 100644 man/function::raise.3stap.html delete mode 100644 man/function::randint.3stap.html delete mode 100644 man/function::read_stopwatch_ms.3stap.html delete mode 100644 man/function::read_stopwatch_ns.3stap.html delete mode 100644 man/function::read_stopwatch_s.3stap.html delete mode 100644 man/function::read_stopwatch_us.3stap.html delete mode 100644 man/function::real_mount.3stap.html delete mode 100644 man/function::register.3stap.html delete mode 100644 man/function::registers_valid.3stap.html delete mode 100644 man/function::regparm.3stap.html delete mode 100644 man/function::remote_id.3stap.html delete mode 100644 man/function::remote_uri.3stap.html delete mode 100644 man/function::return_str.3stap.html delete mode 100644 man/function::returnstr.3stap.html delete mode 100644 man/function::returnval.3stap.html delete mode 100644 man/function::reverse_path_walk.3stap.html delete mode 100644 man/function::s32_arg.3stap.html delete mode 100644 man/function::s64_arg.3stap.html delete mode 100644 man/function::sa_flags_str.3stap.html delete mode 100644 man/function::sa_handler_str.3stap.html delete mode 100644 man/function::set_kernel_char.3stap.html delete mode 100644 man/function::set_kernel_int.3stap.html delete mode 100644 man/function::set_kernel_long.3stap.html delete mode 100644 man/function::set_kernel_pointer.3stap.html delete mode 100644 man/function::set_kernel_short.3stap.html delete mode 100644 man/function::set_kernel_string.3stap.html delete mode 100644 man/function::set_kernel_string_n.3stap.html delete mode 100644 man/function::sid.3stap.html delete mode 100644 man/function::signal_str.3stap.html delete mode 100644 man/function::sigset_mask_str.3stap.html delete mode 100644 man/function::sock_fam_num2str.3stap.html delete mode 100644 man/function::sock_fam_str2num.3stap.html delete mode 100644 man/function::sock_prot_num2str.3stap.html delete mode 100644 man/function::sock_prot_str2num.3stap.html delete mode 100644 man/function::sock_state_num2str.3stap.html delete mode 100644 man/function::sock_state_str2num.3stap.html delete mode 100644 man/function::speculate.3stap.html delete mode 100644 man/function::speculation.3stap.html delete mode 100644 man/function::sprint_backtrace.3stap.html delete mode 100644 man/function::sprint_loadavg.3stap.html delete mode 100644 man/function::sprint_stack.3stap.html delete mode 100644 man/function::sprint_syms.3stap.html delete mode 100644 man/function::sprint_ubacktrace.3stap.html delete mode 100644 man/function::sprint_ustack.3stap.html delete mode 100644 man/function::sprint_usyms.3stap.html delete mode 100644 man/function::stack.3stap.html delete mode 100644 man/function::stack_size.3stap.html delete mode 100644 man/function::stack_unused.3stap.html delete mode 100644 man/function::stack_used.3stap.html delete mode 100644 man/function::start_stopwatch.3stap.html delete mode 100644 man/function::stop_stopwatch.3stap.html delete mode 100644 man/function::stp_pid.3stap.html delete mode 100644 man/function::str_replace.3stap.html delete mode 100644 man/function::stringat.3stap.html delete mode 100644 man/function::strlen.3stap.html delete mode 100644 man/function::strtol.3stap.html delete mode 100644 man/function::substr.3stap.html delete mode 100644 man/function::symdata.3stap.html delete mode 100644 man/function::symname.3stap.html delete mode 100644 man/function::system.3stap.html delete mode 100644 man/function::target.3stap.html delete mode 100644 man/function::target_set_pid.3stap.html delete mode 100644 man/function::target_set_report.3stap.html delete mode 100644 man/function::task_ancestry.3stap.html delete mode 100644 man/function::task_backtrace.3stap.html delete mode 100644 man/function::task_cpu.3stap.html delete mode 100644 man/function::task_current.3stap.html delete mode 100644 man/function::task_dentry_path.3stap.html delete mode 100644 man/function::task_egid.3stap.html delete mode 100644 man/function::task_euid.3stap.html delete mode 100644 man/function::task_execname.3stap.html delete mode 100644 man/function::task_gid.3stap.html delete mode 100644 man/function::task_max_file_handles.3stap.html delete mode 100644 man/function::task_nice.3stap.html delete mode 100644 man/function::task_open_file_handles.3stap.html delete mode 100644 man/function::task_parent.3stap.html delete mode 100644 man/function::task_pid.3stap.html delete mode 100644 man/function::task_prio.3stap.html delete mode 100644 man/function::task_start_time.3stap.html delete mode 100644 man/function::task_state.3stap.html delete mode 100644 man/function::task_stime.3stap.html delete mode 100644 man/function::task_stime_tid.3stap.html delete mode 100644 man/function::task_tid.3stap.html delete mode 100644 man/function::task_time_string.3stap.html delete mode 100644 man/function::task_time_string_tid.3stap.html delete mode 100644 man/function::task_uid.3stap.html delete mode 100644 man/function::task_utime.3stap.html delete mode 100644 man/function::task_utime_tid.3stap.html delete mode 100644 man/function::tcpmib_filter_key.3stap.html delete mode 100644 man/function::tcpmib_get_state.3stap.html delete mode 100644 man/function::tcpmib_local_addr.3stap.html delete mode 100644 man/function::tcpmib_local_port.3stap.html delete mode 100644 man/function::tcpmib_remote_addr.3stap.html delete mode 100644 man/function::tcpmib_remote_port.3stap.html delete mode 100644 man/function::text_str.3stap.html delete mode 100644 man/function::text_strn.3stap.html delete mode 100644 man/function::thread_indent.3stap.html delete mode 100644 man/function::thread_indent_depth.3stap.html delete mode 100644 man/function::tid.3stap.html delete mode 100644 man/function::tokenize.3stap.html delete mode 100644 man/function::tz_ctime.3stap.html delete mode 100644 man/function::tz_gmtoff.3stap.html delete mode 100644 man/function::tz_name.3stap.html delete mode 100644 man/function::u32_arg.3stap.html delete mode 100644 man/function::u64_arg.3stap.html delete mode 100644 man/function::u_register.3stap.html delete mode 100644 man/function::uaddr.3stap.html delete mode 100644 man/function::ubacktrace.3stap.html delete mode 100644 man/function::ucallers.3stap.html delete mode 100644 man/function::udelay.3stap.html delete mode 100644 man/function::uid.3stap.html delete mode 100644 man/function::uint_arg.3stap.html delete mode 100644 man/function::ulong_arg.3stap.html delete mode 100644 man/function::ulonglong_arg.3stap.html delete mode 100644 man/function::umodname.3stap.html delete mode 100644 man/function::usecs_to_string.3stap.html delete mode 100644 man/function::user_char.3stap.html delete mode 100644 man/function::user_char_warn.3stap.html delete mode 100644 man/function::user_int.3stap.html delete mode 100644 man/function::user_int16.3stap.html delete mode 100644 man/function::user_int32.3stap.html delete mode 100644 man/function::user_int64.3stap.html delete mode 100644 man/function::user_int8.3stap.html delete mode 100644 man/function::user_int_warn.3stap.html delete mode 100644 man/function::user_long.3stap.html delete mode 100644 man/function::user_long_warn.3stap.html delete mode 100644 man/function::user_mode.3stap.html delete mode 100644 man/function::user_short.3stap.html delete mode 100644 man/function::user_short_warn.3stap.html delete mode 100644 man/function::user_string.3stap.html delete mode 100644 man/function::user_string2.3stap.html delete mode 100644 man/function::user_string2_n_warn.3stap.html delete mode 100644 man/function::user_string2_utf16.3stap.html delete mode 100644 man/function::user_string2_utf32.3stap.html delete mode 100644 man/function::user_string2_warn.3stap.html delete mode 100644 man/function::user_string_n.3stap.html delete mode 100644 man/function::user_string_n2.3stap.html delete mode 100644 man/function::user_string_n2_quoted.3stap.html delete mode 100644 man/function::user_string_n_quoted.3stap.html delete mode 100644 man/function::user_string_n_warn.3stap.html delete mode 100644 man/function::user_string_quoted.3stap.html delete mode 100644 man/function::user_string_utf16.3stap.html delete mode 100644 man/function::user_string_utf32.3stap.html delete mode 100644 man/function::user_string_warn.3stap.html delete mode 100644 man/function::user_uint16.3stap.html delete mode 100644 man/function::user_uint32.3stap.html delete mode 100644 man/function::user_uint64.3stap.html delete mode 100644 man/function::user_uint8.3stap.html delete mode 100644 man/function::user_ushort.3stap.html delete mode 100644 man/function::user_ushort_warn.3stap.html delete mode 100644 man/function::usrdev2kerndev.3stap.html delete mode 100644 man/function::ustack.3stap.html delete mode 100644 man/function::usymdata.3stap.html delete mode 100644 man/function::usymname.3stap.html delete mode 100644 man/function::vm_fault_contains.3stap.html delete mode 100644 man/function::warn.3stap.html delete mode 100644 man/index.html delete mode 100644 man/probe::ioblock.end.3stap.html delete mode 100644 man/probe::ioblock.request.3stap.html delete mode 100644 man/probe::ioblock_trace.bounce.3stap.html delete mode 100644 man/probe::ioblock_trace.end.3stap.html delete mode 100644 man/probe::ioblock_trace.request.3stap.html delete mode 100644 man/probe::ioscheduler.elv_add_request.3stap.html delete mode 100644 man/probe::ioscheduler.elv_add_request.kp.3stap.html delete mode 100644 man/probe::ioscheduler.elv_add_request.tp.3stap.html delete mode 100644 man/probe::ioscheduler.elv_completed_request.3stap.html delete mode 100644 man/probe::ioscheduler.elv_next_request.3stap.html delete mode 100644 man/probe::ioscheduler.elv_next_request.return.3stap.html delete mode 100644 man/probe::ioscheduler_trace.elv_abort_request.3stap.html delete mode 100644 man/probe::ioscheduler_trace.elv_completed_request.3stap.html delete mode 100644 man/probe::ioscheduler_trace.elv_issue_request.3stap.html delete mode 100644 man/probe::ioscheduler_trace.elv_requeue_request.3stap.html delete mode 100644 man/probe::ioscheduler_trace.plug.3stap.html delete mode 100644 man/probe::ioscheduler_trace.unplug_io.3stap.html delete mode 100644 man/probe::ioscheduler_trace.unplug_timer.3stap.html delete mode 100644 man/probe::ipmib.ForwDatagrams.3stap.html delete mode 100644 man/probe::ipmib.FragFails.3stap.html delete mode 100644 man/probe::ipmib.FragOKs.3stap.html delete mode 100644 man/probe::ipmib.InAddrErrors.3stap.html delete mode 100644 man/probe::ipmib.InDiscards.3stap.html delete mode 100644 man/probe::ipmib.InNoRoutes.3stap.html delete mode 100644 man/probe::ipmib.InReceives.3stap.html delete mode 100644 man/probe::ipmib.InUnknownProtos.3stap.html delete mode 100644 man/probe::ipmib.OutRequests.3stap.html delete mode 100644 man/probe::ipmib.ReasmReqds.3stap.html delete mode 100644 man/probe::ipmib.ReasmTimeout.3stap.html delete mode 100644 man/probe::irq_handler.entry.3stap.html delete mode 100644 man/probe::irq_handler.exit.3stap.html delete mode 100644 man/probe::kprocess.create.3stap.html delete mode 100644 man/probe::kprocess.exec.3stap.html delete mode 100644 man/probe::kprocess.exec_complete.3stap.html delete mode 100644 man/probe::kprocess.exit.3stap.html delete mode 100644 man/probe::kprocess.release.3stap.html delete mode 100644 man/probe::kprocess.start.3stap.html delete mode 100644 man/probe::linuxmib.DelayedACKs.3stap.html delete mode 100644 man/probe::linuxmib.ListenDrops.3stap.html delete mode 100644 man/probe::linuxmib.ListenOverflows.3stap.html delete mode 100644 man/probe::linuxmib.TCPMemoryPressures.3stap.html delete mode 100644 man/probe::netdev.change_mac.3stap.html delete mode 100644 man/probe::netdev.change_mtu.3stap.html delete mode 100644 man/probe::netdev.change_rx_flag.3stap.html delete mode 100644 man/probe::netdev.close.3stap.html delete mode 100644 man/probe::netdev.get_stats.3stap.html delete mode 100644 man/probe::netdev.hard_transmit.3stap.html delete mode 100644 man/probe::netdev.ioctl.3stap.html delete mode 100644 man/probe::netdev.open.3stap.html delete mode 100644 man/probe::netdev.receive.3stap.html delete mode 100644 man/probe::netdev.register.3stap.html delete mode 100644 man/probe::netdev.rx.3stap.html delete mode 100644 man/probe::netdev.set_promiscuity.3stap.html delete mode 100644 man/probe::netdev.transmit.3stap.html delete mode 100644 man/probe::netdev.unregister.3stap.html delete mode 100644 man/probe::netfilter.arp.forward.3stap.html delete mode 100644 man/probe::netfilter.arp.in.3stap.html delete mode 100644 man/probe::netfilter.arp.out.3stap.html delete mode 100644 man/probe::netfilter.bridge.forward.3stap.html delete mode 100644 man/probe::netfilter.bridge.local_in.3stap.html delete mode 100644 man/probe::netfilter.bridge.local_out.3stap.html delete mode 100644 man/probe::netfilter.bridge.post_routing.3stap.html delete mode 100644 man/probe::netfilter.bridge.pre_routing.3stap.html delete mode 100644 man/probe::netfilter.ip.forward.3stap.html delete mode 100644 man/probe::netfilter.ip.local_in.3stap.html delete mode 100644 man/probe::netfilter.ip.local_out.3stap.html delete mode 100644 man/probe::netfilter.ip.post_routing.3stap.html delete mode 100644 man/probe::netfilter.ip.pre_routing.3stap.html delete mode 100644 man/probe::nfs.aop.readpage.3stap.html delete mode 100644 man/probe::nfs.aop.readpages.3stap.html delete mode 100644 man/probe::nfs.aop.release_page.3stap.html delete mode 100644 man/probe::nfs.aop.set_page_dirty.3stap.html delete mode 100644 man/probe::nfs.aop.write_begin.3stap.html delete mode 100644 man/probe::nfs.aop.write_end.3stap.html delete mode 100644 man/probe::nfs.aop.writepage.3stap.html delete mode 100644 man/probe::nfs.aop.writepages.3stap.html delete mode 100644 man/probe::nfs.fop.aio_read.3stap.html delete mode 100644 man/probe::nfs.fop.aio_write.3stap.html delete mode 100644 man/probe::nfs.fop.check_flags.3stap.html delete mode 100644 man/probe::nfs.fop.flush.3stap.html delete mode 100644 man/probe::nfs.fop.fsync.3stap.html delete mode 100644 man/probe::nfs.fop.llseek.3stap.html delete mode 100644 man/probe::nfs.fop.lock.3stap.html delete mode 100644 man/probe::nfs.fop.mmap.3stap.html delete mode 100644 man/probe::nfs.fop.open.3stap.html delete mode 100644 man/probe::nfs.fop.read.3stap.html delete mode 100644 man/probe::nfs.fop.release.3stap.html delete mode 100644 man/probe::nfs.fop.sendfile.3stap.html delete mode 100644 man/probe::nfs.fop.write.3stap.html delete mode 100644 man/probe::nfs.proc.commit.3stap.html delete mode 100644 man/probe::nfs.proc.commit_done.3stap.html delete mode 100644 man/probe::nfs.proc.commit_setup.3stap.html delete mode 100644 man/probe::nfs.proc.create.3stap.html delete mode 100644 man/probe::nfs.proc.handle_exception.3stap.html delete mode 100644 man/probe::nfs.proc.lookup.3stap.html delete mode 100644 man/probe::nfs.proc.open.3stap.html delete mode 100644 man/probe::nfs.proc.read.3stap.html delete mode 100644 man/probe::nfs.proc.read_done.3stap.html delete mode 100644 man/probe::nfs.proc.read_setup.3stap.html delete mode 100644 man/probe::nfs.proc.release.3stap.html delete mode 100644 man/probe::nfs.proc.remove.3stap.html delete mode 100644 man/probe::nfs.proc.rename.3stap.html delete mode 100644 man/probe::nfs.proc.write.3stap.html delete mode 100644 man/probe::nfs.proc.write_done.3stap.html delete mode 100644 man/probe::nfs.proc.write_setup.3stap.html delete mode 100644 man/probe::nfsd.close.3stap.html delete mode 100644 man/probe::nfsd.commit.3stap.html delete mode 100644 man/probe::nfsd.create.3stap.html delete mode 100644 man/probe::nfsd.createv3.3stap.html delete mode 100644 man/probe::nfsd.dispatch.3stap.html delete mode 100644 man/probe::nfsd.lookup.3stap.html delete mode 100644 man/probe::nfsd.open.3stap.html delete mode 100644 man/probe::nfsd.proc.commit.3stap.html delete mode 100644 man/probe::nfsd.proc.create.3stap.html delete mode 100644 man/probe::nfsd.proc.lookup.3stap.html delete mode 100644 man/probe::nfsd.proc.read.3stap.html delete mode 100644 man/probe::nfsd.proc.remove.3stap.html delete mode 100644 man/probe::nfsd.proc.rename.3stap.html delete mode 100644 man/probe::nfsd.proc.write.3stap.html delete mode 100644 man/probe::nfsd.read.3stap.html delete mode 100644 man/probe::nfsd.rename.3stap.html delete mode 100644 man/probe::nfsd.unlink.3stap.html delete mode 100644 man/probe::nfsd.write.3stap.html delete mode 100644 man/probe::scheduler.balance.3stap.html delete mode 100644 man/probe::scheduler.cpu_off.3stap.html delete mode 100644 man/probe::scheduler.cpu_on.3stap.html delete mode 100644 man/probe::scheduler.ctxswitch.3stap.html delete mode 100644 man/probe::scheduler.kthread_stop.3stap.html delete mode 100644 man/probe::scheduler.kthread_stop.return.3stap.html delete mode 100644 man/probe::scheduler.migrate.3stap.html delete mode 100644 man/probe::scheduler.process_exit.3stap.html delete mode 100644 man/probe::scheduler.process_fork.3stap.html delete mode 100644 man/probe::scheduler.process_free.3stap.html delete mode 100644 man/probe::scheduler.process_wait.3stap.html delete mode 100644 man/probe::scheduler.signal_send.3stap.html delete mode 100644 man/probe::scheduler.tick.3stap.html delete mode 100644 man/probe::scheduler.wait_task.3stap.html delete mode 100644 man/probe::scheduler.wakeup.3stap.html delete mode 100644 man/probe::scheduler.wakeup_new.3stap.html delete mode 100644 man/probe::scsi.iocompleted.3stap.html delete mode 100644 man/probe::scsi.iodispatching.3stap.html delete mode 100644 man/probe::scsi.iodone.3stap.html delete mode 100644 man/probe::scsi.ioentry.3stap.html delete mode 100644 man/probe::scsi.ioexecute.3stap.html delete mode 100644 man/probe::scsi.set_state.3stap.html delete mode 100644 man/probe::signal.check_ignored.3stap.html delete mode 100644 man/probe::signal.check_ignored.return.3stap.html delete mode 100644 man/probe::signal.checkperm.3stap.html delete mode 100644 man/probe::signal.checkperm.return.3stap.html delete mode 100644 man/probe::signal.do_action.3stap.html delete mode 100644 man/probe::signal.do_action.return.3stap.html delete mode 100644 man/probe::signal.flush.3stap.html delete mode 100644 man/probe::signal.force_segv.3stap.html delete mode 100644 man/probe::signal.force_segv.return.3stap.html delete mode 100644 man/probe::signal.handle.3stap.html delete mode 100644 man/probe::signal.handle.return.3stap.html delete mode 100644 man/probe::signal.pending.3stap.html delete mode 100644 man/probe::signal.pending.return.3stap.html delete mode 100644 man/probe::signal.procmask.3stap.html delete mode 100644 man/probe::signal.procmask.return.3stap.html delete mode 100644 man/probe::signal.send.3stap.html delete mode 100644 man/probe::signal.send.return.3stap.html delete mode 100644 man/probe::signal.send_sig_queue.3stap.html delete mode 100644 man/probe::signal.send_sig_queue.return.3stap.html delete mode 100644 man/probe::signal.sys_tgkill.3stap.html delete mode 100644 man/probe::signal.sys_tgkill.return.3stap.html delete mode 100644 man/probe::signal.sys_tkill.3stap.html delete mode 100644 man/probe::signal.syskill.3stap.html delete mode 100644 man/probe::signal.syskill.return.3stap.html delete mode 100644 man/probe::signal.systkill.return.3stap.html delete mode 100644 man/probe::signal.wakeup.3stap.html delete mode 100644 man/probe::socket.aio_read.3stap.html delete mode 100644 man/probe::socket.aio_read.return.3stap.html delete mode 100644 man/probe::socket.aio_write.3stap.html delete mode 100644 man/probe::socket.aio_write.return.3stap.html delete mode 100644 man/probe::socket.close.3stap.html delete mode 100644 man/probe::socket.close.return.3stap.html delete mode 100644 man/probe::socket.create.3stap.html delete mode 100644 man/probe::socket.create.return.3stap.html delete mode 100644 man/probe::socket.readv.3stap.html delete mode 100644 man/probe::socket.readv.return.3stap.html delete mode 100644 man/probe::socket.receive.3stap.html delete mode 100644 man/probe::socket.recvmsg.3stap.html delete mode 100644 man/probe::socket.recvmsg.return.3stap.html delete mode 100644 man/probe::socket.send.3stap.html delete mode 100644 man/probe::socket.sendmsg.3stap.html delete mode 100644 man/probe::socket.sendmsg.return.3stap.html delete mode 100644 man/probe::socket.writev.3stap.html delete mode 100644 man/probe::socket.writev.return.3stap.html delete mode 100644 man/probe::softirq.entry.3stap.html delete mode 100644 man/probe::softirq.exit.3stap.html delete mode 100644 man/probe::stap.cache_add_mod.3stap.html delete mode 100644 man/probe::stap.cache_add_nss.3stap.html delete mode 100644 man/probe::stap.cache_add_src.3stap.html delete mode 100644 man/probe::stap.cache_clean.3stap.html delete mode 100644 man/probe::stap.cache_get.3stap.html delete mode 100644 man/probe::stap.pass0.3stap.html delete mode 100644 man/probe::stap.pass0.end.3stap.html delete mode 100644 man/probe::stap.pass1.end.3stap.html delete mode 100644 man/probe::stap.pass1a.3stap.html delete mode 100644 man/probe::stap.pass1b.3stap.html delete mode 100644 man/probe::stap.pass2.3stap.html delete mode 100644 man/probe::stap.pass2.end.3stap.html delete mode 100644 man/probe::stap.pass3.3stap.html delete mode 100644 man/probe::stap.pass3.end.3stap.html delete mode 100644 man/probe::stap.pass4.3stap.html delete mode 100644 man/probe::stap.pass4.end.3stap.html delete mode 100644 man/probe::stap.pass5.3stap.html delete mode 100644 man/probe::stap.pass5.end.3stap.html delete mode 100644 man/probe::stap.pass6.3stap.html delete mode 100644 man/probe::stap.pass6.end.3stap.html delete mode 100644 man/probe::stap.system.3stap.html delete mode 100644 man/probe::stap.system.return.3stap.html delete mode 100644 man/probe::stap.system.spawn.3stap.html delete mode 100644 man/probe::stapio.receive_control_message.3stap.html delete mode 100644 man/probe::staprun.insert_module.3stap.html delete mode 100644 man/probe::staprun.remove_module.3stap.html delete mode 100644 man/probe::staprun.send_control_message.3stap.html delete mode 100644 man/probe::sunrpc.clnt.bind_new_program.3stap.html delete mode 100644 man/probe::sunrpc.clnt.call_async.3stap.html delete mode 100644 man/probe::sunrpc.clnt.call_sync.3stap.html delete mode 100644 man/probe::sunrpc.clnt.clone_client.3stap.html delete mode 100644 man/probe::sunrpc.clnt.create_client.3stap.html delete mode 100644 man/probe::sunrpc.clnt.restart_call.3stap.html delete mode 100644 man/probe::sunrpc.clnt.shutdown_client.3stap.html delete mode 100644 man/probe::sunrpc.sched.delay.3stap.html delete mode 100644 man/probe::sunrpc.sched.execute.3stap.html delete mode 100644 man/probe::sunrpc.sched.new_task.3stap.html delete mode 100644 man/probe::sunrpc.sched.release_task.3stap.html delete mode 100644 man/probe::sunrpc.svc.create.3stap.html delete mode 100644 man/probe::sunrpc.svc.destroy.3stap.html delete mode 100644 man/probe::sunrpc.svc.drop.3stap.html delete mode 100644 man/probe::sunrpc.svc.process.3stap.html delete mode 100644 man/probe::sunrpc.svc.recv.3stap.html delete mode 100644 man/probe::sunrpc.svc.register.3stap.html delete mode 100644 man/probe::sunrpc.svc.send.3stap.html delete mode 100644 man/probe::tcp.disconnect.3stap.html delete mode 100644 man/probe::tcp.disconnect.return.3stap.html delete mode 100644 man/probe::tcp.receive.3stap.html delete mode 100644 man/probe::tcp.recvmsg.3stap.html delete mode 100644 man/probe::tcp.recvmsg.return.3stap.html delete mode 100644 man/probe::tcp.sendmsg.3stap.html delete mode 100644 man/probe::tcp.sendmsg.return.3stap.html delete mode 100644 man/probe::tcp.setsockopt.3stap.html delete mode 100644 man/probe::tcp.setsockopt.return.3stap.html delete mode 100644 man/probe::tcpmib.ActiveOpens.3stap.html delete mode 100644 man/probe::tcpmib.AttemptFails.3stap.html delete mode 100644 man/probe::tcpmib.CurrEstab.3stap.html delete mode 100644 man/probe::tcpmib.EstabResets.3stap.html delete mode 100644 man/probe::tcpmib.InSegs.3stap.html delete mode 100644 man/probe::tcpmib.OutRsts.3stap.html delete mode 100644 man/probe::tcpmib.OutSegs.3stap.html delete mode 100644 man/probe::tcpmib.PassiveOpens.3stap.html delete mode 100644 man/probe::tcpmib.RetransSegs.3stap.html delete mode 100644 man/probe::tty.init.3stap.html delete mode 100644 man/probe::tty.ioctl.3stap.html delete mode 100644 man/probe::tty.open.3stap.html delete mode 100644 man/probe::tty.poll.3stap.html delete mode 100644 man/probe::tty.read.3stap.html delete mode 100644 man/probe::tty.receive.3stap.html delete mode 100644 man/probe::tty.register.3stap.html delete mode 100644 man/probe::tty.release.3stap.html delete mode 100644 man/probe::tty.resize.3stap.html delete mode 100644 man/probe::tty.unregister.3stap.html delete mode 100644 man/probe::tty.write.3stap.html delete mode 100644 man/probe::udp.disconnect.3stap.html delete mode 100644 man/probe::udp.disconnect.return.3stap.html delete mode 100644 man/probe::udp.recvmsg.3stap.html delete mode 100644 man/probe::udp.recvmsg.return.3stap.html delete mode 100644 man/probe::udp.sendmsg.3stap.html delete mode 100644 man/probe::udp.sendmsg.return.3stap.html delete mode 100644 man/probe::vm.brk.3stap.html delete mode 100644 man/probe::vm.kfree.3stap.html delete mode 100644 man/probe::vm.kmalloc.3stap.html delete mode 100644 man/probe::vm.kmalloc_node.3stap.html delete mode 100644 man/probe::vm.kmem_cache_alloc.3stap.html delete mode 100644 man/probe::vm.kmem_cache_alloc_node.3stap.html delete mode 100644 man/probe::vm.kmem_cache_free.3stap.html delete mode 100644 man/probe::vm.mmap.3stap.html delete mode 100644 man/probe::vm.munmap.3stap.html delete mode 100644 man/probe::vm.oom_kill.3stap.html delete mode 100644 man/probe::vm.pagefault.3stap.html delete mode 100644 man/probe::vm.pagefault.return.3stap.html delete mode 100644 man/probe::vm.write_shared.3stap.html delete mode 100644 man/probe::vm.write_shared_copy.3stap.html delete mode 100644 man/probe::workqueue.create.3stap.html delete mode 100644 man/probe::workqueue.destroy.3stap.html delete mode 100644 man/probe::workqueue.execute.3stap.html delete mode 100644 man/probe::workqueue.insert.3stap.html delete mode 100644 man/stap-merge.1.html delete mode 100644 man/stap-prep.1.html delete mode 100644 man/stap-report.1.html delete mode 100644 man/stap-server.8.html delete mode 100644 man/stap.1.html delete mode 100644 man/stapdyn.8.html delete mode 100644 man/stapex.3stap.html delete mode 100644 man/stapfuncs.3stap.html delete mode 100644 man/stappaths.7.html delete mode 100644 man/stapprobes.3stap.html delete mode 100644 man/staprun.8.html delete mode 100644 man/stapsh.8.html delete mode 100644 man/stapvars.3stap.html delete mode 100644 man/stapvirt.1.html delete mode 100644 man/systemtap.8.html delete mode 100644 man/tapset::ansi.3stap.html delete mode 100644 man/tapset::atomic.3stap.html delete mode 100644 man/tapset::context-caller.3stap.html delete mode 100644 man/tapset::context-envvar.3stap.html delete mode 100644 man/tapset::context-symbols.3stap.html delete mode 100644 man/tapset::context-unwind.3stap.html delete mode 100644 man/tapset::context.3stap.html delete mode 100644 man/tapset::conversions-guru.3stap.html delete mode 100644 man/tapset::conversions.3stap.html delete mode 100644 man/tapset::ctime.3stap.html delete mode 100644 man/tapset::dentry.3stap.html delete mode 100644 man/tapset::dev.3stap.html delete mode 100644 man/tapset::errno.3stap.html delete mode 100644 man/tapset::guru-delay.3stap.html delete mode 100644 man/tapset::guru-signal.3stap.html delete mode 100644 man/tapset::indent.3stap.html delete mode 100644 man/tapset::inet.3stap.html delete mode 100644 man/tapset::inet_sock.3stap.html delete mode 100644 man/tapset::ioblock.3stap.html delete mode 100644 man/tapset::ioscheduler.3stap.html delete mode 100644 man/tapset::ip.3stap.html delete mode 100644 man/tapset::ipmib-filter-default.3stap.html delete mode 100644 man/tapset::ipmib.3stap.html delete mode 100644 man/tapset::irq.3stap.html delete mode 100644 man/tapset::kprocess.3stap.html delete mode 100644 man/tapset::linuxmib-filter-default.3stap.html delete mode 100644 man/tapset::linuxmib.3stap.html delete mode 100644 man/tapset::loadavg.3stap.html delete mode 100644 man/tapset::logging.3stap.html delete mode 100644 man/tapset::memory.3stap.html delete mode 100644 man/tapset::netfilter.3stap.html delete mode 100644 man/tapset::networking.3stap.html delete mode 100644 man/tapset::nfs.3stap.html delete mode 100644 man/tapset::nfs_proc.3stap.html delete mode 100644 man/tapset::nfsd.3stap.html delete mode 100644 man/tapset::nfsderrno.3stap.html delete mode 100644 man/tapset::panic.3stap.html delete mode 100644 man/tapset::pn.3stap.html delete mode 100644 man/tapset::proc_mem.3stap.html delete mode 100644 man/tapset::pstrace.3stap.html delete mode 100644 man/tapset::queue_stats.3stap.html delete mode 100644 man/tapset::random.3stap.html delete mode 100644 man/tapset::registers.3stap.html delete mode 100644 man/tapset::rpc.3stap.html delete mode 100644 man/tapset::scheduler.3stap.html delete mode 100644 man/tapset::scsi.3stap.html delete mode 100644 man/tapset::signal.3stap.html delete mode 100644 man/tapset::socket.3stap.html delete mode 100644 man/tapset::speculative.3stap.html delete mode 100644 man/tapset::stap_staticmarkers.3stap.html delete mode 100644 man/tapset::stopwatch.3stap.html delete mode 100644 man/tapset::string.3stap.html delete mode 100644 man/tapset::system.3stap.html delete mode 100644 man/tapset::target_set.3stap.html delete mode 100644 man/tapset::task.3stap.html delete mode 100644 man/tapset::task_ancestry.3stap.html delete mode 100644 man/tapset::task_time.3stap.html delete mode 100644 man/tapset::tcp.3stap.html delete mode 100644 man/tapset::tcpmib-filter-default.3stap.html delete mode 100644 man/tapset::tcpmib.3stap.html delete mode 100644 man/tapset::timestamp.3stap.html delete mode 100644 man/tapset::timestamp_gtod.3stap.html delete mode 100644 man/tapset::timestamp_monotonic.3stap.html delete mode 100644 man/tapset::tokenize.3stap.html delete mode 100644 man/tapset::tty.3stap.html delete mode 100644 man/tapset::tzinfo.3stap.html delete mode 100644 man/tapset::ucontext-symbols.3stap.html delete mode 100644 man/tapset::ucontext-unwind.3stap.html delete mode 100644 man/tapset::ucontext.3stap.html delete mode 100644 man/tapset::uconversions.3stap.html delete mode 100644 man/tapset::udp.3stap.html delete mode 100644 man/warning::debuginfo.7stap.html delete mode 100644 man/warning::process-tracking.7stap.html delete mode 100644 tapsets/API-HZ.html delete mode 100644 tapsets/API-MAJOR.html delete mode 100644 tapsets/API-MINOR.html delete mode 100644 tapsets/API-MKDEV.html delete mode 100644 tapsets/API-addr-to-node.html delete mode 100644 tapsets/API-addr.html delete mode 100644 tapsets/API-ansi-clear-screen.html delete mode 100644 tapsets/API-ansi-cursor-hide.html delete mode 100644 tapsets/API-ansi-cursor-move.html delete mode 100644 tapsets/API-ansi-cursor-restore.html delete mode 100644 tapsets/API-ansi-cursor-save.html delete mode 100644 tapsets/API-ansi-cursor-show.html delete mode 100644 tapsets/API-ansi-new-line.html delete mode 100644 tapsets/API-ansi-reset-color.html delete mode 100644 tapsets/API-ansi-set-color.html delete mode 100644 tapsets/API-ansi-set-color2.html delete mode 100644 tapsets/API-ansi-set-color3.html delete mode 100644 tapsets/API-asmlinkage.html delete mode 100644 tapsets/API-atomic-long-read.html delete mode 100644 tapsets/API-atomic-read.html delete mode 100644 tapsets/API-backtrace.html delete mode 100644 tapsets/API-bytes-to-string.html delete mode 100644 tapsets/API-caller-addr.html delete mode 100644 tapsets/API-caller.html delete mode 100644 tapsets/API-callers.html delete mode 100644 tapsets/API-cmdline-arg.html delete mode 100644 tapsets/API-cmdline-args.html delete mode 100644 tapsets/API-cmdline-str.html delete mode 100644 tapsets/API-commit.html delete mode 100644 tapsets/API-cpu-clock-ms.html delete mode 100644 tapsets/API-cpu-clock-ns.html delete mode 100644 tapsets/API-cpu-clock-s.html delete mode 100644 tapsets/API-cpu-clock-us.html delete mode 100644 tapsets/API-cpu.html delete mode 100644 tapsets/API-cpuid.html delete mode 100644 tapsets/API-cputime-to-msecs.html delete mode 100644 tapsets/API-cputime-to-string.html delete mode 100644 tapsets/API-ctime.html delete mode 100644 tapsets/API-d-name.html delete mode 100644 tapsets/API-d-path.html delete mode 100644 tapsets/API-delete-stopwatch.html delete mode 100644 tapsets/API-discard.html delete mode 100644 tapsets/API-egid.html delete mode 100644 tapsets/API-env-var.html delete mode 100644 tapsets/API-errno-str.html delete mode 100644 tapsets/API-error.html delete mode 100644 tapsets/API-euid.html delete mode 100644 tapsets/API-execname.html delete mode 100644 tapsets/API-exit.html delete mode 100644 tapsets/API-fastcall.html delete mode 100644 tapsets/API-format-ipaddr.html delete mode 100644 tapsets/API-ftrace.html delete mode 100644 tapsets/API-get-cycles.html delete mode 100644 tapsets/API-get-sa-flags.html delete mode 100644 tapsets/API-get-sa-handler.html delete mode 100644 tapsets/API-gettimeofday-ms.html delete mode 100644 tapsets/API-gettimeofday-ns.html delete mode 100644 tapsets/API-gettimeofday-s.html delete mode 100644 tapsets/API-gettimeofday-us.html delete mode 100644 tapsets/API-gid.html delete mode 100644 tapsets/API-htonl.html delete mode 100644 tapsets/API-htonll.html delete mode 100644 tapsets/API-htons.html delete mode 100644 tapsets/API-indent.html delete mode 100644 tapsets/API-inet-get-ip-source.html delete mode 100644 tapsets/API-inet-get-local-port.html delete mode 100644 tapsets/API-inode-name.html delete mode 100644 tapsets/API-int-arg.html delete mode 100644 tapsets/API-ioblock-end.html delete mode 100644 tapsets/API-ioblock-request.html delete mode 100644 tapsets/API-ioblock-trace-bounce.html delete mode 100644 tapsets/API-ioblock-trace-end.html delete mode 100644 tapsets/API-ioblock-trace-request.html delete mode 100644 tapsets/API-ioscheduler-elv-add-request-kp.html delete mode 100644 tapsets/API-ioscheduler-elv-add-request-tp.html delete mode 100644 tapsets/API-ioscheduler-elv-add-request.html delete mode 100644 tapsets/API-ioscheduler-elv-completed-request.html delete mode 100644 tapsets/API-ioscheduler-elv-next-request-return.html delete mode 100644 tapsets/API-ioscheduler-elv-next-request.html delete mode 100644 tapsets/API-ioscheduler-trace-elv-abort-request.html delete mode 100644 tapsets/API-ioscheduler-trace-elv-completed-request.html delete mode 100644 tapsets/API-ioscheduler-trace-elv-issue-request.html delete mode 100644 tapsets/API-ioscheduler-trace-elv-requeue-request.html delete mode 100644 tapsets/API-ioscheduler-trace-plug.html delete mode 100644 tapsets/API-ioscheduler-trace-unplug-io.html delete mode 100644 tapsets/API-ioscheduler-trace-unplug-timer.html delete mode 100644 tapsets/API-ip-ntop.html delete mode 100644 tapsets/API-ipmib-ForwDatagrams.html delete mode 100644 tapsets/API-ipmib-FragFails.html delete mode 100644 tapsets/API-ipmib-FragOKs.html delete mode 100644 tapsets/API-ipmib-InAddrErrors.html delete mode 100644 tapsets/API-ipmib-InDiscards.html delete mode 100644 tapsets/API-ipmib-InNoRoutes.html delete mode 100644 tapsets/API-ipmib-InReceives.html delete mode 100644 tapsets/API-ipmib-InUnknownProtos.html delete mode 100644 tapsets/API-ipmib-OutRequests.html delete mode 100644 tapsets/API-ipmib-ReasmReqds.html delete mode 100644 tapsets/API-ipmib-ReasmTimeout.html delete mode 100644 tapsets/API-ipmib-filter-key.html delete mode 100644 tapsets/API-ipmib-get-proto.html delete mode 100644 tapsets/API-ipmib-local-addr.html delete mode 100644 tapsets/API-ipmib-remote-addr.html delete mode 100644 tapsets/API-ipmib-tcp-local-port.html delete mode 100644 tapsets/API-ipmib-tcp-remote-port.html delete mode 100644 tapsets/API-irq-handler-entry.html delete mode 100644 tapsets/API-irq-handler-exit.html delete mode 100644 tapsets/API-is-myproc.html delete mode 100644 tapsets/API-is-return.html delete mode 100644 tapsets/API-is-sig-blocked.html delete mode 100644 tapsets/API-isdigit.html delete mode 100644 tapsets/API-isinstr.html delete mode 100644 tapsets/API-jiffies.html delete mode 100644 tapsets/API-kernel-char.html delete mode 100644 tapsets/API-kernel-int.html delete mode 100644 tapsets/API-kernel-long.html delete mode 100644 tapsets/API-kernel-pointer.html delete mode 100644 tapsets/API-kernel-short.html delete mode 100644 tapsets/API-kernel-string-n.html delete mode 100644 tapsets/API-kernel-string-utf16.html delete mode 100644 tapsets/API-kernel-string-utf32.html delete mode 100644 tapsets/API-kernel-string.html delete mode 100644 tapsets/API-kernel-string2-utf16.html delete mode 100644 tapsets/API-kernel-string2-utf32.html delete mode 100644 tapsets/API-kernel-string2.html delete mode 100644 tapsets/API-kprocess-create.html delete mode 100644 tapsets/API-kprocess-exec-complete.html delete mode 100644 tapsets/API-kprocess-exec.html delete mode 100644 tapsets/API-kprocess-exit.html delete mode 100644 tapsets/API-kprocess-release.html delete mode 100644 tapsets/API-kprocess-start.html delete mode 100644 tapsets/API-linuxmib-DelayedACKs.html delete mode 100644 tapsets/API-linuxmib-ListenDrops.html delete mode 100644 tapsets/API-linuxmib-ListenOverflows.html delete mode 100644 tapsets/API-linuxmib-TCPMemoryPressures.html delete mode 100644 tapsets/API-linuxmib-filter-key.html delete mode 100644 tapsets/API-local-clock-ms.html delete mode 100644 tapsets/API-local-clock-ns.html delete mode 100644 tapsets/API-local-clock-s.html delete mode 100644 tapsets/API-local-clock-us.html delete mode 100644 tapsets/API-log.html delete mode 100644 tapsets/API-long-arg.html delete mode 100644 tapsets/API-longlong-arg.html delete mode 100644 tapsets/API-mdelay.html delete mode 100644 tapsets/API-mem-page-size.html delete mode 100644 tapsets/API-modname.html delete mode 100644 tapsets/API-module-name.html delete mode 100644 tapsets/API-msecs-to-string.html delete mode 100644 tapsets/API-netdev-change-mac.html delete mode 100644 tapsets/API-netdev-change-mtu.html delete mode 100644 tapsets/API-netdev-change-rx-flag.html delete mode 100644 tapsets/API-netdev-close.html delete mode 100644 tapsets/API-netdev-get-stats.html delete mode 100644 tapsets/API-netdev-hard-transmit.html delete mode 100644 tapsets/API-netdev-ioctl.html delete mode 100644 tapsets/API-netdev-open.html delete mode 100644 tapsets/API-netdev-receive.html delete mode 100644 tapsets/API-netdev-register.html delete mode 100644 tapsets/API-netdev-rx.html delete mode 100644 tapsets/API-netdev-set-promiscuity.html delete mode 100644 tapsets/API-netdev-transmit.html delete mode 100644 tapsets/API-netdev-unregister.html delete mode 100644 tapsets/API-netfilter-arp-forward.html delete mode 100644 tapsets/API-netfilter-arp-in.html delete mode 100644 tapsets/API-netfilter-arp-out.html delete mode 100644 tapsets/API-netfilter-bridge-forward.html delete mode 100644 tapsets/API-netfilter-bridge-local-in.html delete mode 100644 tapsets/API-netfilter-bridge-local-out.html delete mode 100644 tapsets/API-netfilter-bridge-post-routing.html delete mode 100644 tapsets/API-netfilter-bridge-pre-routing.html delete mode 100644 tapsets/API-netfilter-ip-forward.html delete mode 100644 tapsets/API-netfilter-ip-local-in.html delete mode 100644 tapsets/API-netfilter-ip-local-out.html delete mode 100644 tapsets/API-netfilter-ip-post-routing.html delete mode 100644 tapsets/API-netfilter-ip-pre-routing.html delete mode 100644 tapsets/API-nfs-aop-readpage.html delete mode 100644 tapsets/API-nfs-aop-readpages.html delete mode 100644 tapsets/API-nfs-aop-release-page.html delete mode 100644 tapsets/API-nfs-aop-set-page-dirty.html delete mode 100644 tapsets/API-nfs-aop-write-begin.html delete mode 100644 tapsets/API-nfs-aop-write-end.html delete mode 100644 tapsets/API-nfs-aop-writepage.html delete mode 100644 tapsets/API-nfs-aop-writepages.html delete mode 100644 tapsets/API-nfs-fop-aio-read.html delete mode 100644 tapsets/API-nfs-fop-aio-write.html delete mode 100644 tapsets/API-nfs-fop-check-flags.html delete mode 100644 tapsets/API-nfs-fop-flush.html delete mode 100644 tapsets/API-nfs-fop-fsync.html delete mode 100644 tapsets/API-nfs-fop-llseek.html delete mode 100644 tapsets/API-nfs-fop-lock.html delete mode 100644 tapsets/API-nfs-fop-mmap.html delete mode 100644 tapsets/API-nfs-fop-open.html delete mode 100644 tapsets/API-nfs-fop-read.html delete mode 100644 tapsets/API-nfs-fop-release.html delete mode 100644 tapsets/API-nfs-fop-sendfile.html delete mode 100644 tapsets/API-nfs-fop-write.html delete mode 100644 tapsets/API-nfs-proc-commit-done.html delete mode 100644 tapsets/API-nfs-proc-commit-setup.html delete mode 100644 tapsets/API-nfs-proc-commit.html delete mode 100644 tapsets/API-nfs-proc-create.html delete mode 100644 tapsets/API-nfs-proc-handle-exception.html delete mode 100644 tapsets/API-nfs-proc-lookup.html delete mode 100644 tapsets/API-nfs-proc-open.html delete mode 100644 tapsets/API-nfs-proc-read-done.html delete mode 100644 tapsets/API-nfs-proc-read-setup.html delete mode 100644 tapsets/API-nfs-proc-read.html delete mode 100644 tapsets/API-nfs-proc-release.html delete mode 100644 tapsets/API-nfs-proc-remove.html delete mode 100644 tapsets/API-nfs-proc-rename.html delete mode 100644 tapsets/API-nfs-proc-write-done.html delete mode 100644 tapsets/API-nfs-proc-write-setup.html delete mode 100644 tapsets/API-nfs-proc-write.html delete mode 100644 tapsets/API-nfsd-close.html delete mode 100644 tapsets/API-nfsd-commit.html delete mode 100644 tapsets/API-nfsd-create.html delete mode 100644 tapsets/API-nfsd-createv3.html delete mode 100644 tapsets/API-nfsd-dispatch.html delete mode 100644 tapsets/API-nfsd-lookup.html delete mode 100644 tapsets/API-nfsd-open.html delete mode 100644 tapsets/API-nfsd-proc-commit.html delete mode 100644 tapsets/API-nfsd-proc-create.html delete mode 100644 tapsets/API-nfsd-proc-lookup.html delete mode 100644 tapsets/API-nfsd-proc-read.html delete mode 100644 tapsets/API-nfsd-proc-remove.html delete mode 100644 tapsets/API-nfsd-proc-rename.html delete mode 100644 tapsets/API-nfsd-proc-write.html delete mode 100644 tapsets/API-nfsd-read.html delete mode 100644 tapsets/API-nfsd-rename.html delete mode 100644 tapsets/API-nfsd-unlink.html delete mode 100644 tapsets/API-nfsd-write.html delete mode 100644 tapsets/API-nfsderror.html delete mode 100644 tapsets/API-ntohl.html delete mode 100644 tapsets/API-ntohll.html delete mode 100644 tapsets/API-ntohs.html delete mode 100644 tapsets/API-pages-to-string.html delete mode 100644 tapsets/API-panic.html delete mode 100644 tapsets/API-pexecname.html delete mode 100644 tapsets/API-pgrp.html delete mode 100644 tapsets/API-pid.html delete mode 100644 tapsets/API-pid2execname.html delete mode 100644 tapsets/API-pid2task.html delete mode 100644 tapsets/API-pn.html delete mode 100644 tapsets/API-pointer-arg.html delete mode 100644 tapsets/API-pp.html delete mode 100644 tapsets/API-ppfunc.html delete mode 100644 tapsets/API-ppid.html delete mode 100644 tapsets/API-print-backtrace.html delete mode 100644 tapsets/API-print-regs.html delete mode 100644 tapsets/API-print-stack.html delete mode 100644 tapsets/API-print-syms.html delete mode 100644 tapsets/API-print-ubacktrace-brief.html delete mode 100644 tapsets/API-print-ubacktrace.html delete mode 100644 tapsets/API-print-ustack.html delete mode 100644 tapsets/API-print-usyms.html delete mode 100644 tapsets/API-printk.html delete mode 100644 tapsets/API-probe-type.html delete mode 100644 tapsets/API-probefunc.html delete mode 100644 tapsets/API-probemod.html delete mode 100644 tapsets/API-proc-mem-data-pid.html delete mode 100644 tapsets/API-proc-mem-data.html delete mode 100644 tapsets/API-proc-mem-rss-pid.html delete mode 100644 tapsets/API-proc-mem-rss.html delete mode 100644 tapsets/API-proc-mem-shr-pid.html delete mode 100644 tapsets/API-proc-mem-shr.html delete mode 100644 tapsets/API-proc-mem-size-pid.html delete mode 100644 tapsets/API-proc-mem-size.html delete mode 100644 tapsets/API-proc-mem-string-pid.html delete mode 100644 tapsets/API-proc-mem-string.html delete mode 100644 tapsets/API-proc-mem-txt-pid.html delete mode 100644 tapsets/API-proc-mem-txt.html delete mode 100644 tapsets/API-pstrace.html delete mode 100644 tapsets/API-qs-done.html delete mode 100644 tapsets/API-qs-run.html delete mode 100644 tapsets/API-qs-wait.html delete mode 100644 tapsets/API-qsq-blocked.html delete mode 100644 tapsets/API-qsq-print.html delete mode 100644 tapsets/API-qsq-service-time.html delete mode 100644 tapsets/API-qsq-start.html delete mode 100644 tapsets/API-qsq-throughput.html delete mode 100644 tapsets/API-qsq-utilization.html delete mode 100644 tapsets/API-qsq-wait-queue-length.html delete mode 100644 tapsets/API-qsq-wait-time.html delete mode 100644 tapsets/API-randint.html delete mode 100644 tapsets/API-read-stopwatch-ms.html delete mode 100644 tapsets/API-read-stopwatch-ns.html delete mode 100644 tapsets/API-read-stopwatch-s.html delete mode 100644 tapsets/API-read-stopwatch-us.html delete mode 100644 tapsets/API-real-mount.html delete mode 100644 tapsets/API-register.html delete mode 100644 tapsets/API-registers-valid.html delete mode 100644 tapsets/API-regparm.html delete mode 100644 tapsets/API-remote-id.html delete mode 100644 tapsets/API-remote-uri.html delete mode 100644 tapsets/API-return-str.html delete mode 100644 tapsets/API-returnstr.html delete mode 100644 tapsets/API-returnval.html delete mode 100644 tapsets/API-reverse-path-walk.html delete mode 100644 tapsets/API-s32-arg.html delete mode 100644 tapsets/API-s64-arg.html delete mode 100644 tapsets/API-sa-flags-str.html delete mode 100644 tapsets/API-sa-handler-str.html delete mode 100644 tapsets/API-scheduler-balance.html delete mode 100644 tapsets/API-scheduler-cpu-off.html delete mode 100644 tapsets/API-scheduler-cpu-on.html delete mode 100644 tapsets/API-scheduler-ctxswitch.html delete mode 100644 tapsets/API-scheduler-kthread-stop-return.html delete mode 100644 tapsets/API-scheduler-kthread-stop.html delete mode 100644 tapsets/API-scheduler-migrate.html delete mode 100644 tapsets/API-scheduler-process-exit.html delete mode 100644 tapsets/API-scheduler-process-fork.html delete mode 100644 tapsets/API-scheduler-process-free.html delete mode 100644 tapsets/API-scheduler-process-wait.html delete mode 100644 tapsets/API-scheduler-signal-send.html delete mode 100644 tapsets/API-scheduler-tick.html delete mode 100644 tapsets/API-scheduler-wait-task.html delete mode 100644 tapsets/API-scheduler-wakeup-new.html delete mode 100644 tapsets/API-scheduler-wakeup.html delete mode 100644 tapsets/API-scsi-iocompleted.html delete mode 100644 tapsets/API-scsi-iodispatching.html delete mode 100644 tapsets/API-scsi-iodone.html delete mode 100644 tapsets/API-scsi-ioentry.html delete mode 100644 tapsets/API-scsi-ioexecute.html delete mode 100644 tapsets/API-scsi-set-state.html delete mode 100644 tapsets/API-set-kernel-char.html delete mode 100644 tapsets/API-set-kernel-int.html delete mode 100644 tapsets/API-set-kernel-long.html delete mode 100644 tapsets/API-set-kernel-pointer.html delete mode 100644 tapsets/API-set-kernel-short.html delete mode 100644 tapsets/API-set-kernel-string-n.html delete mode 100644 tapsets/API-set-kernel-string.html delete mode 100644 tapsets/API-sid.html delete mode 100644 tapsets/API-signal-check-ignored-return.html delete mode 100644 tapsets/API-signal-check-ignored.html delete mode 100644 tapsets/API-signal-checkperm-return.html delete mode 100644 tapsets/API-signal-checkperm.html delete mode 100644 tapsets/API-signal-do-action-return.html delete mode 100644 tapsets/API-signal-do-action.html delete mode 100644 tapsets/API-signal-flush.html delete mode 100644 tapsets/API-signal-force-segv-return.html delete mode 100644 tapsets/API-signal-force-segv.html delete mode 100644 tapsets/API-signal-handle-return.html delete mode 100644 tapsets/API-signal-handle.html delete mode 100644 tapsets/API-signal-pending-return.html delete mode 100644 tapsets/API-signal-pending.html delete mode 100644 tapsets/API-signal-procmask-return.html delete mode 100644 tapsets/API-signal-procmask.html delete mode 100644 tapsets/API-signal-send-return.html delete mode 100644 tapsets/API-signal-send-sig-queue-return.html delete mode 100644 tapsets/API-signal-send-sig-queue.html delete mode 100644 tapsets/API-signal-send.html delete mode 100644 tapsets/API-signal-str.html delete mode 100644 tapsets/API-signal-sys-tgkill-return.html delete mode 100644 tapsets/API-signal-sys-tgkill.html delete mode 100644 tapsets/API-signal-sys-tkill.html delete mode 100644 tapsets/API-signal-syskill-return.html delete mode 100644 tapsets/API-signal-syskill.html delete mode 100644 tapsets/API-signal-systkill-return.html delete mode 100644 tapsets/API-signal-wakeup.html delete mode 100644 tapsets/API-sigset-mask-str.html delete mode 100644 tapsets/API-sock-fam-num2str.html delete mode 100644 tapsets/API-sock-fam-str2num.html delete mode 100644 tapsets/API-sock-prot-num2str.html delete mode 100644 tapsets/API-sock-prot-str2num.html delete mode 100644 tapsets/API-sock-state-num2str.html delete mode 100644 tapsets/API-sock-state-str2num.html delete mode 100644 tapsets/API-socket-aio-read-return.html delete mode 100644 tapsets/API-socket-aio-read.html delete mode 100644 tapsets/API-socket-aio-write-return.html delete mode 100644 tapsets/API-socket-aio-write.html delete mode 100644 tapsets/API-socket-close-return.html delete mode 100644 tapsets/API-socket-close.html delete mode 100644 tapsets/API-socket-create-return.html delete mode 100644 tapsets/API-socket-create.html delete mode 100644 tapsets/API-socket-readv-return.html delete mode 100644 tapsets/API-socket-readv.html delete mode 100644 tapsets/API-socket-receive.html delete mode 100644 tapsets/API-socket-recvmsg-return.html delete mode 100644 tapsets/API-socket-recvmsg.html delete mode 100644 tapsets/API-socket-send.html delete mode 100644 tapsets/API-socket-sendmsg-return.html delete mode 100644 tapsets/API-socket-sendmsg.html delete mode 100644 tapsets/API-socket-writev-return.html delete mode 100644 tapsets/API-socket-writev.html delete mode 100644 tapsets/API-softirq-entry.html delete mode 100644 tapsets/API-softirq-exit.html delete mode 100644 tapsets/API-speculate.html delete mode 100644 tapsets/API-speculation.html delete mode 100644 tapsets/API-sprint-backtrace.html delete mode 100644 tapsets/API-sprint-stack.html delete mode 100644 tapsets/API-sprint-syms.html delete mode 100644 tapsets/API-sprint-ubacktrace.html delete mode 100644 tapsets/API-sprint-ustack.html delete mode 100644 tapsets/API-sprint-usyms.html delete mode 100644 tapsets/API-stack-size.html delete mode 100644 tapsets/API-stack-unused.html delete mode 100644 tapsets/API-stack-used.html delete mode 100644 tapsets/API-stack.html delete mode 100644 tapsets/API-stap-cache-add-mod.html delete mode 100644 tapsets/API-stap-cache-add-nss.html delete mode 100644 tapsets/API-stap-cache-add-src.html delete mode 100644 tapsets/API-stap-cache-clean.html delete mode 100644 tapsets/API-stap-cache-get.html delete mode 100644 tapsets/API-stap-pass0-end.html delete mode 100644 tapsets/API-stap-pass0.html delete mode 100644 tapsets/API-stap-pass1-end.html delete mode 100644 tapsets/API-stap-pass1a.html delete mode 100644 tapsets/API-stap-pass1b.html delete mode 100644 tapsets/API-stap-pass2-end.html delete mode 100644 tapsets/API-stap-pass2.html delete mode 100644 tapsets/API-stap-pass3-end.html delete mode 100644 tapsets/API-stap-pass3.html delete mode 100644 tapsets/API-stap-pass4-end.html delete mode 100644 tapsets/API-stap-pass4.html delete mode 100644 tapsets/API-stap-pass5-end.html delete mode 100644 tapsets/API-stap-pass5.html delete mode 100644 tapsets/API-stap-pass6-end.html delete mode 100644 tapsets/API-stap-pass6.html delete mode 100644 tapsets/API-stap-system-return.html delete mode 100644 tapsets/API-stap-system-spawn.html delete mode 100644 tapsets/API-stap-system.html delete mode 100644 tapsets/API-stapio-receive-control-message.html delete mode 100644 tapsets/API-staprun-insert-module.html delete mode 100644 tapsets/API-staprun-remove-module.html delete mode 100644 tapsets/API-staprun-send-control-message.html delete mode 100644 tapsets/API-start-stopwatch.html delete mode 100644 tapsets/API-stop-stopwatch.html delete mode 100644 tapsets/API-stp-pid.html delete mode 100644 tapsets/API-str-replace.html delete mode 100644 tapsets/API-stringat.html delete mode 100644 tapsets/API-strlen.html delete mode 100644 tapsets/API-strtol.html delete mode 100644 tapsets/API-substr.html delete mode 100644 tapsets/API-sunrpc-clnt-bind-new-program.html delete mode 100644 tapsets/API-sunrpc-clnt-call-async.html delete mode 100644 tapsets/API-sunrpc-clnt-call-sync.html delete mode 100644 tapsets/API-sunrpc-clnt-clone-client.html delete mode 100644 tapsets/API-sunrpc-clnt-create-client.html delete mode 100644 tapsets/API-sunrpc-clnt-restart-call.html delete mode 100644 tapsets/API-sunrpc-clnt-shutdown-client.html delete mode 100644 tapsets/API-sunrpc-sched-delay.html delete mode 100644 tapsets/API-sunrpc-sched-execute.html delete mode 100644 tapsets/API-sunrpc-sched-new-task.html delete mode 100644 tapsets/API-sunrpc-sched-release-task.html delete mode 100644 tapsets/API-sunrpc-svc-create.html delete mode 100644 tapsets/API-sunrpc-svc-destroy.html delete mode 100644 tapsets/API-sunrpc-svc-drop.html delete mode 100644 tapsets/API-sunrpc-svc-process.html delete mode 100644 tapsets/API-sunrpc-svc-recv.html delete mode 100644 tapsets/API-sunrpc-svc-register.html delete mode 100644 tapsets/API-sunrpc-svc-send.html delete mode 100644 tapsets/API-symdata.html delete mode 100644 tapsets/API-symname.html delete mode 100644 tapsets/API-system.html delete mode 100644 tapsets/API-target-set-pid.html delete mode 100644 tapsets/API-target-set-report.html delete mode 100644 tapsets/API-target.html delete mode 100644 tapsets/API-task-backtrace.html delete mode 100644 tapsets/API-task-cpu.html delete mode 100644 tapsets/API-task-current.html delete mode 100644 tapsets/API-task-dentry-path.html delete mode 100644 tapsets/API-task-egid.html delete mode 100644 tapsets/API-task-euid.html delete mode 100644 tapsets/API-task-execname.html delete mode 100644 tapsets/API-task-gid.html delete mode 100644 tapsets/API-task-max-file-handles.html delete mode 100644 tapsets/API-task-nice.html delete mode 100644 tapsets/API-task-open-file-handles.html delete mode 100644 tapsets/API-task-parent.html delete mode 100644 tapsets/API-task-pid.html delete mode 100644 tapsets/API-task-prio.html delete mode 100644 tapsets/API-task-state.html delete mode 100644 tapsets/API-task-stime-tid.html delete mode 100644 tapsets/API-task-stime.html delete mode 100644 tapsets/API-task-tid.html delete mode 100644 tapsets/API-task-time-string-tid.html delete mode 100644 tapsets/API-task-time-string.html delete mode 100644 tapsets/API-task-uid.html delete mode 100644 tapsets/API-task-utime-tid.html delete mode 100644 tapsets/API-task-utime.html delete mode 100644 tapsets/API-tcp-disconnect-return.html delete mode 100644 tapsets/API-tcp-disconnect.html delete mode 100644 tapsets/API-tcp-receive.html delete mode 100644 tapsets/API-tcp-recvmsg-return.html delete mode 100644 tapsets/API-tcp-recvmsg.html delete mode 100644 tapsets/API-tcp-sendmsg-return.html delete mode 100644 tapsets/API-tcp-sendmsg.html delete mode 100644 tapsets/API-tcp-setsockopt-return.html delete mode 100644 tapsets/API-tcp-setsockopt.html delete mode 100644 tapsets/API-tcpmib-ActiveOpens.html delete mode 100644 tapsets/API-tcpmib-AttemptFails.html delete mode 100644 tapsets/API-tcpmib-CurrEstab.html delete mode 100644 tapsets/API-tcpmib-EstabResets.html delete mode 100644 tapsets/API-tcpmib-InSegs.html delete mode 100644 tapsets/API-tcpmib-OutRsts.html delete mode 100644 tapsets/API-tcpmib-OutSegs.html delete mode 100644 tapsets/API-tcpmib-PassiveOpens.html delete mode 100644 tapsets/API-tcpmib-RetransSegs.html delete mode 100644 tapsets/API-tcpmib-filter-key.html delete mode 100644 tapsets/API-tcpmib-get-state.html delete mode 100644 tapsets/API-tcpmib-local-addr.html delete mode 100644 tapsets/API-tcpmib-local-port.html delete mode 100644 tapsets/API-tcpmib-remote-addr.html delete mode 100644 tapsets/API-tcpmib-remote-port.html delete mode 100644 tapsets/API-text-str.html delete mode 100644 tapsets/API-text-strn.html delete mode 100644 tapsets/API-thread-indent.html delete mode 100644 tapsets/API-tid.html delete mode 100644 tapsets/API-tokenize.html delete mode 100644 tapsets/API-tty-init.html delete mode 100644 tapsets/API-tty-ioctl.html delete mode 100644 tapsets/API-tty-open.html delete mode 100644 tapsets/API-tty-poll.html delete mode 100644 tapsets/API-tty-read.html delete mode 100644 tapsets/API-tty-receive.html delete mode 100644 tapsets/API-tty-register.html delete mode 100644 tapsets/API-tty-release.html delete mode 100644 tapsets/API-tty-resize.html delete mode 100644 tapsets/API-tty-unregister.html delete mode 100644 tapsets/API-tty-write.html delete mode 100644 tapsets/API-tz-ctime.html delete mode 100644 tapsets/API-tz-gmtoff.html delete mode 100644 tapsets/API-tz-name.html delete mode 100644 tapsets/API-u-register.html delete mode 100644 tapsets/API-u32-arg.html delete mode 100644 tapsets/API-u64-arg.html delete mode 100644 tapsets/API-uaddr.html delete mode 100644 tapsets/API-ubacktrace.html delete mode 100644 tapsets/API-ucallers.html delete mode 100644 tapsets/API-udelay.html delete mode 100644 tapsets/API-udp-disconnect-return.html delete mode 100644 tapsets/API-udp-disconnect.html delete mode 100644 tapsets/API-udp-recvmsg-return.html delete mode 100644 tapsets/API-udp-recvmsg.html delete mode 100644 tapsets/API-udp-sendmsg-return.html delete mode 100644 tapsets/API-udp-sendmsg.html delete mode 100644 tapsets/API-uid.html delete mode 100644 tapsets/API-uint-arg.html delete mode 100644 tapsets/API-ulong-arg.html delete mode 100644 tapsets/API-ulonglong-arg.html delete mode 100644 tapsets/API-umodname.html delete mode 100644 tapsets/API-user-char-warn.html delete mode 100644 tapsets/API-user-char.html delete mode 100644 tapsets/API-user-int-warn.html delete mode 100644 tapsets/API-user-int.html delete mode 100644 tapsets/API-user-int16.html delete mode 100644 tapsets/API-user-int32.html delete mode 100644 tapsets/API-user-int64.html delete mode 100644 tapsets/API-user-int8.html delete mode 100644 tapsets/API-user-long-warn.html delete mode 100644 tapsets/API-user-long.html delete mode 100644 tapsets/API-user-mode.html delete mode 100644 tapsets/API-user-short-warn.html delete mode 100644 tapsets/API-user-short.html delete mode 100644 tapsets/API-user-string-n-quoted.html delete mode 100644 tapsets/API-user-string-n-warn.html delete mode 100644 tapsets/API-user-string-n.html delete mode 100644 tapsets/API-user-string-n2.html delete mode 100644 tapsets/API-user-string-quoted.html delete mode 100644 tapsets/API-user-string-utf16.html delete mode 100644 tapsets/API-user-string-utf32.html delete mode 100644 tapsets/API-user-string-warn.html delete mode 100644 tapsets/API-user-string.html delete mode 100644 tapsets/API-user-string2-utf16.html delete mode 100644 tapsets/API-user-string2-utf32.html delete mode 100644 tapsets/API-user-string2.html delete mode 100644 tapsets/API-user-uint16.html delete mode 100644 tapsets/API-user-uint32.html delete mode 100644 tapsets/API-user-uint64.html delete mode 100644 tapsets/API-user-uint8.html delete mode 100644 tapsets/API-user-ushort-warn.html delete mode 100644 tapsets/API-user-ushort.html delete mode 100644 tapsets/API-usrdev2kerndev.html delete mode 100644 tapsets/API-ustack.html delete mode 100644 tapsets/API-usymdata.html delete mode 100644 tapsets/API-usymname.html delete mode 100644 tapsets/API-vm-brk.html delete mode 100644 tapsets/API-vm-fault-contains.html delete mode 100644 tapsets/API-vm-kfree.html delete mode 100644 tapsets/API-vm-kmalloc-node.html delete mode 100644 tapsets/API-vm-kmalloc.html delete mode 100644 tapsets/API-vm-kmem-cache-alloc-node.html delete mode 100644 tapsets/API-vm-kmem-cache-alloc.html delete mode 100644 tapsets/API-vm-kmem-cache-free.html delete mode 100644 tapsets/API-vm-mmap.html delete mode 100644 tapsets/API-vm-munmap.html delete mode 100644 tapsets/API-vm-oom-kill.html delete mode 100644 tapsets/API-vm-pagefault-return.html delete mode 100644 tapsets/API-vm-pagefault.html delete mode 100644 tapsets/API-vm-write-shared-copy.html delete mode 100644 tapsets/API-vm-write-shared.html delete mode 100644 tapsets/API-warn.html delete mode 100644 tapsets/API-workqueue-create.html delete mode 100644 tapsets/API-workqueue-destroy.html delete mode 100644 tapsets/API-workqueue-execute.html delete mode 100644 tapsets/API-workqueue-insert.html delete mode 100644 tapsets/ansi.stp.html delete mode 100644 tapsets/context_stp.html delete mode 100644 tapsets/conversions-guru.stp.html delete mode 100644 tapsets/conversions.stp.html delete mode 100644 tapsets/ctime.stp.html delete mode 100644 tapsets/dentry.stp.html delete mode 100644 tapsets/dev.stp.html delete mode 100644 tapsets/errno.stp.html delete mode 100644 tapsets/guru-delay.stp.html delete mode 100644 tapsets/index.html delete mode 100644 tapsets/introduction.html delete mode 100644 tapsets/iosched.stp.html delete mode 100644 tapsets/irq.stp.html delete mode 100644 tapsets/kprocess.stp.html delete mode 100644 tapsets/logging.stp.html delete mode 100644 tapsets/memory_stp.html delete mode 100644 tapsets/networking.stp.html delete mode 100644 tapsets/nfsd.stp.html delete mode 100644 tapsets/queue_stats.stp.html delete mode 100644 tapsets/random.stp.html delete mode 100644 tapsets/sched.stp.html delete mode 100644 tapsets/scsi.stp.html delete mode 100644 tapsets/signal.stp.html delete mode 100644 tapsets/snmp.stp.html delete mode 100644 tapsets/socket.stp.html delete mode 100644 tapsets/speculation.stp.html delete mode 100644 tapsets/stap_staticmarkers.stp.html delete mode 100644 tapsets/string.stp.html delete mode 100644 tapsets/system.stp.html delete mode 100644 tapsets/task_time_stp.html delete mode 100644 tapsets/timestamp_stp.html delete mode 100644 tapsets/tty.stp.html diff --git a/SystemTap_Beginners_Guide.pdf b/SystemTap_Beginners_Guide.pdf index 2f4c578fde7449970f99df08b04808ea29a42461..a079ecaf3cf5b8041ebe3094f3a2a0c125eae11f 100644 GIT binary patch literal 703092 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%0D1l?LI51u{{cN&{~HzJpL)nx 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

tPBOgS@qbSS$%3A6~+$gBlj1^?-mfl_2a@ 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

_Q7m93f`U{YQL+A!qE6DT&b8D%Ds z`spgi7Mo$Cc1veu7&4-GacU<{;wKteDH04qhH9@R?~7f9g5uMzN77CNQy#c%hM=Xr zjWZ!#q=b^MAztYr5mYt^RMYaOXqHI;p6;^-CQeY1ls;J{8xCO8&a{LsQueT&K>X*? zDLhxMX#F!S4{kk=6I^`YdcKxeT`#2H42*TQLNhPrvp~~1;)%LiDp7t$YMiC;wlo||8 zRQ2catnZni+~AM2wJVV&nKq-F!6vXN%`e0+M^B14xRX^AcJ8Tx@Hcl-i)RR7Ldb?5 z9I@#9sIRBT3mhmk$pPBZyVb@TVIZ04iAEH2g5#(Vh%h>yJoQdCi|i2LJDfN)-5h(C zYuv1ZnH%|OH3{5`R4>>9br&I|u~0an$y5B9!hWM6 z@B;1iTVQwrxajE0ri?51t_;M9>(DJ_5aGujzpGAqH(Z-KY#PTV^K?RJMub%8DBcPz z00Hl#(v2(6h@h|oUDAUdl7zoYT^Pf;QKj>7TRr$5x=I#uI&c;*SM(Je1+klm>qO3b z&L>o`lFM{6>Qux=mF#Qz{Sx!=<-@drOPGBU=|>J7cJOwr9#ed8maQiQ(-o=;oA%~y z=FnqJ_dO=Qki1X9h|zth^9PK2nq+=IS9_aMxKYZcm21fmNRZX#BV>BHm+8#qzB>AA z1X1?_Q{dcw8-V>5M<%~|os1^CU9+eq!h_sdGJHJcY~!!+(c9oTt=JN+Os*tIrDc(1 ziDWne|FqxftJnx``?FuX5fq;M$lRe2E%zROJC1!cTeoQQeOkSQBuEXA<>bpMs}(tK zj}rB&W-g@Mm8J-S!`MvS0(NM)6hh>iS`IO9N0yL>{r5zS{L9FFGg||G*p}UOmi1X< z2^B(hqo_dJ_b6h_k1ZUPNO>xRvmhyEG=6Gn>QL2;b&-hf_t3CYPf9`3JEojcoDwl0 zJ^G5oZIuDxS9m_X6qC zM}3|^xjz`}V>S5fcCL z7mkQQ#UNMf+*^<$wTcJ;65&=0}hL@{FHHRS5;TVTVKYEE0 zlfgqcf)VgLxTX4IzAXFtMELvvke|F08`{P60J^~9d{uC20YvaE#P?6x*zQd7A7&>o zB~KXd)_nOCS2@4k_#p>>fai*%Th04s7|U+!L8ENRY7IMHT}v!2AIYW6hkmL7kvtYA zHEd56Lk52-z3}e4Yubk^Z_f`|B0)KoiT#;_h2B${&^;&G?#ANvEgu{lWqmtLjKo-_ zwJP`uX-N)9&!!w7je*TRy_0v#9dL5c?Y^x|8W4*jbrNQZp|Fp~pbb-k)lAY;l7*O| z?8bn6(&Z1mV=uJ%>Lx~zgHuQNGZ86x&}phM#2=3nl0^)7?2e!e5UM79DE`z>o(xt` zM25d>A&2ULCUH|p2I37afVK(>N&+jsMGBdT5?fftZ^#;J$dRW5Mh0yVX4e&RNYUt# zjv0b>qGVqGZ8HgTcJMk%D%#D$h2R||prUX0+4f!1zpXdEy4F$^XqU&Q^h?RT5X?Y- z{LBEI(RSugn1f=;t$r!{?M(inEe$u_8-3FH^@+@PlG=0s89HrhMx=(>2Zo7ww?Tu& zJDp?|lS{;a#70@daT%HG0MvT48c_!h?n2T&1RdD6bDU+W?ICYS_PmQ>=8u*4>ByRV z{JXsMz=Lv<=9!u$wNXZx5|g3XUOKLk)>U(97UU_M(Y#!RVmvgI%*wng{S=k5jWKga zd=@S9kBXzm->zzT$(Qjh`kv)uYDb|J*IxzC+et~fK_D8WH=7NQ&aLW}?p9LkwE9FZ z?MVF10t2PPRZFZdxcgH#@y$w^P z3aIUTw-*(3+j*qC_ZTf3Nr0%Q^4%}ZUfyPjNIiX4dE8sywiA(@p=RngjzM%C&S$WZ z88X#cQ0+UJqm#lSKlUDHvH^`|>#UyJQw&=pDipn5-ILw?DPzf?B; zojoT-InZC`U7cA>Vk7Gg2!f@M)fibp<|Zl{o65gXDk=uCUxcq}!mQp*o>H+%fcM6P zDHXJ~%2FASt>Cvq#>k$co~Gy-la)%0>c()Z_l%=vbu)8n9M05+Z5MN(u`iU-%j_D< zW0zdYcp<~|D(%K?;v?mI>!IXt=S$UISAHm@U1WSG$iTpb15sgWMz|-?x6Da9ERQ~V z?TuNBczqnRM`CO}ow7C}dj+Aaj^tZB3=NV6(nS}a;QHfCr3YpiV!F8c$6B+#!KZS* zZ#>_`+o8jafjX@4Vue7)<_t6MVfc+_oeV9+7RS87<7*Sa1CCN5ZFDUh!7)*sN^X=u zizI~PGh}Kquqs_pKcw*!f?1RaCSgNzF&D4|FV7X*E+oaZ(KUY?hVT#*VEvjaIAeoIOEae0LF z_VqR01Y#=jL-I3gmb|Rn1!VrmR9$5jk==dVkRP(m!+FMN;8J3iJU!i7FOxL87%f9< z+&QDEPbHn4HU{Tn`zIxfL(n2xDmI~ChmhYL+kS%G9D;QrpO?3X1$-k=CpX~_a;OEbtc|34^nF0BZsZX+-@)vCj=07IEfVRbN*!-(q@e5o6 zj=v$;zqTy^qsTu{(Er2Z@;}-Zzf1owZHwPH??1OKextm9P=FZ!oS*}Svwv*GpC%71 zf7{MeH)5wA{(FY(CcT_$_8X{(_i9@k5b#svp4TTZm*zVhG&k_*1kcyEkDr;0M$#8s zz^4hm(xWa%OUaXoD3BR@wjD@pt`k0>l%*R=%?wN==zeZVPff}RjmcX)oEF*HM^cjX zoOYyO_eg)DU~ju<*$Ozqr(0Fyd1rb(y*dv~Zf|+HVeWtNP;fry!*l@R@qN0y0)=?F zzIxca8n|D|l_)vv`OuWeQj&X7uzIt3eKV6`eUFe~%)+~I9TYL}A#?14A#ZT=seDCK z3yP4lKhB9@?o-)F8`ZguW-lwvM96y0mbRtX_x`f2E(U^xduM_z&wD^DDdM_rIvt%VElxy%llBf)hUJvvL&+%Ab( zfHZ82_Pje`Sptu7!q(|ke%p0`bDY70nih{Nh0AxyT`WxGCx%De{&vIWQ`;zuvrP)d zIDUYLFy~o)5$GZQ3CS?0=OmV0z?*=h?h$MXSgHPD&80dX2s%J#ITK`pXeq0z5@mV{ zJmBZOUT9t~ji4Kl*h9xqXI4PP3EJ+R_>e)~q(>vWcPrgTbv;WjOeZocBCxp&l1|70 zS4^^j4Irr|^ov-?!tz(ccvMVc&gOHMrj4OReu^9XOf2W4uB6UX773BHBW*W&WNk#@ z!H<#3fF~x1UuUk2Fe2GKso&eo7DVe~`r~nR3Z@uv!}|7h1#GS=^YWr;@|*3t{5}5d z>1iS1x`7z@2sfoGjQf)Op{3uM=HBuula-!deB*!*P zSIf~0Bt1x05HB}#M^LXQdJNhp3l6#WXj{Y{NuXSb#L5|07?xVxlZ4%nT{uu6QWu{1 zhZIzZwKBHo26@eiiBRUHFhO*(m(&Gn_`b8eTVu_FA%~fmkNuDel&M$4aomucMqs}+ z2ow~`IcN%A?*S8_iXgaHv(X@Jx=P>+Cf zIwq7JZeV$vSS;z?+EdW1Y%ZrLKL^wuF*iVqvtI^^!9Fg|a%iKc_ps}s4T1<_ARLcRG$B{UmK z+VKN{)SfY0Ppf@9>TXndVg8$Bks<~Oi!JR4a2Lc40-KRj-eGLA6;p8?A47AzFZr9yr1O&`4cHSyusf ztYbKEIF348p_qz`vQjD>j&>~W!c!E_G8vcVFQUz$QkhIe7cpR$R+ckhIFY{Nbh3DO z1e}BmYo@grLMf8oh31iFxafe*YPHq>B`SAtTJ`3Ifxx3LTnXIpq{<@NVA}t6m#bk* zUW5b#Pm#|mM<{D-j7_#&`mEH6doD`SZElqTJeYAdmvwH|UOBE?EnXgdAqZTv2)(o! zU8lcJvOz9d0WRX3E_#~KvS{%z6*2U#rwD6lJkW=QvT$ z7bXY-?cQ2DB=xnQyjjOz$e+RF`f6FA$`sZ6hwy#gWW^`gDRT z`cejD@g`51N0|_o{#09^x&ciM261AYHvF=caE!4WBy&mED7U)^eFBZW?=7*T_A@pz zc6!+c`^*vnWnEvMVd2`1pwfBlfvGq@P}&el#m?E^KOY8j%X7j_6OO5fKg&zMNTr{|sS=?Uin%mTvb+vi2plk8n!8?HJZgqK7 zdA0ZKL`?{X$-a^kiB{~%d!mx_n-TlfYj9Fc$X=djcMGxcXb&`VS;)Q>GxV|x=d(O_ z!lZSg?e$Vh%&iKh%}$6#wkW`pIfS)CJ-0-eHvVoY$@ySWx2ST+PANg5ls;YSDq&WkT(1ywkF+KRb1SEY4Dt|IlJN*Huw#Gkhu3xVYr)E&r>)#vNB<3>Qgw zxe>;8Epsnd$$IYG(&bkFzEAeRv+cQntFCXnrK*?Z{bI28{rSvicxAwPN+jO9v~ zg0qz!*-t)eJ)|AKCU2y3%s3i&3dvcR?+3Khgp7m@pV+T;xwbSOmTY&q#q+;7y>y_w zmF2tV_L`wdh-!&1C4`v46GIuzi9D9rtJ|9l(8i$`9*Mn&L=mcq$GAxpgm->#S@&m>?%Xxd58+nmwMO&&~MH>bbi zf(uFTJ#CZ5dxmm6`N`pTpMSo0J{;j+Ol}#SmrkbYy}(k538QM zrOvC#8zR4&NcVijn4dce*KyFu`TlDy(w}9n~tCo8b+go zjoMx1#7SkZnL0A6k6yA&e@psxi{VKp8`+{24%o_!Ld+pPFv`77HuXn!2PaM@##3!% zd16Q0PPjsRPVpWS{V8>{{-9&&QTApEk*GOpS4_NNi3Ak#Mj`fS`J6)ap$7bmz-Woc zgt><8g|;6(o#cCRhGwBb74ob_=MWAtf<|X-cEbqL`QrX;x(8%jPr-D@=lG0VA<&m8 zjowd!Uf;Dp&yVgu8yy?ljCK?{L^t`uw}PlE&0EM5sup!=^t6Bve)L_I`~F#dT%#Cb zz7^r5I78S?RfQaA-=yB12R;c@hbQra3Q)^*1?fqvkEZusBW3Qj)+nP%2ePz$bbX3C z{MWTjYFEy)b@;i!1&32(;T`XGpYwc+Q}Z`{-_HYbZM)lLAFV|N6@J|yIBAvb9>sz; znsC)qVi2_NXM}G^qcWb=ehc zlBJ5sO~rDP_6RHRqP;TQ2I?5y;YZH>x)KMxF%MJNigmT(rr*HIj&bc|MbubiIT1!V zhL-EYy*okpoN(~W5p!9^%y|12&`94Av~dD4k?v0^n)yHy;@kVE#?zDgI>98OjSZ&M zOgmN?tsh@7W{3SvN%{BbL@&z;VN=p8^vbkTN$HcebplPSK66?Y4P(b0S>UgDlP;16 zoT4jWtCcEhFsc@*aP1h>*64~G&Idsf3=h`T5xSRL*~6KY$K}h!wZfWn$ z{}*itmj4l*g+F6vezynyOCRA6QUWsv%fIvy{w6tqwV zHfQ-a$pMTkoOG$efdrjsuVz!@>bzp#w+)e~WI;^1mVnu>PBad=@5V zI#x!&yR)$WUJVNeU^Rf26bmcc|BcoB>mdJcF!2FGhu;xA%m4;HU~3pz0n!5in}CG{ za1Q>@x8~2Q{_pWr07*3L0B!>d6XQQl6d*o_32?Sqm;thkzq=aN->e0g|IXq7l=t6T zT7Vd%zoiQp!<7ifW53d=7(`6mYX|ZLHZupcL(K;!gv6@KANRy_GB(VM8bV(%xl- z-|^*T(irZ9v%yWU(+c5vIyqv!TEi{4j>wyK}mH3fu_2#^0EkQtB4zgysbjo1|oX9V_ zZX}XXThWx%@3tXdmon8<{NsT9G9FUC>@R*d+4^v{%k_+@U0(AHyevy6l&&w^oZvpe z>WO#K6zf2Vu#rtT1s;xs-@c=Jw(DZSt<~zDqq_|x)a^mp)j%B1y|_Llu=zy;uC%0@ z@3|NAA~1Y%e5C!yXQXyH4NP}s3~Tew3{PKVIa3MFAnF=e;Yf+}s#_m(@GlAwQ`Ek7 zQo%^?-x4>6vVa7Gl#np&p`oMwFq7*21B{ipc9SG!ImrtkyBF+^?RTVhf?Ib7T(5L^ z2f0pCWaRM&n>{EqRy}7A+*R0*T<9z5pzxvYB@YH&S&jmj43E5)U*}UkB)jplwblFY zP!UXtkGZX`<)$zZ8o<{QmkE<$@5L>^2RRq0 z6#8IxbEBQN6&ZE0hDbikAG@F`q7T(M6M<1GLxxz%Fr3AVQH4eBwdWpSKh?ouCzfaP z&9vi`R=0KGppa5LT=9+~>V_B&{@`P8)8Y2R5*Au2B{_ozIYmv43MKwgJL(RhEU7!* zc7rV}5!8eCNYZGeBL>pysA#Y@hSifaqTYzW40gcT3oGA6heBWmiWHTbvEt;DSH7zW zQ3y7<6I>vIwI~c!-tT7e73C(uS7*KD`6Ie^`r&GCmb%K&k6|J|yvLf0w?gn5xUFN- zJ3u^qP-X9Y(>&>E-c-TYkL9OgOJ?@MP7ub0`-eQJq<6Id`Yd2Hs3Xz9_Tt_G;@7aFAzi zMyrc5B?JPifPa-9Zf#2f4LFMsejd@z^xsMQqOmXKiBKu5WPOLI@H6lyY?0dFjvZfL zyr9I_NAN8@Ag5?tiIInWb#dG>)KEJqv{BjY%g=Vn>XIyhEUj~L%8U#Z+Ii5h?aB*j z*Q=Bp-u-d~C14*82bT`b1eUF;v}!}JjY-yiasCvt$ceXB+up_4-mPWPpj4VLw~q(3!`7Kry;0_dYB2>hqr0&BM;V zbjmPH^&4e*Nj<^R6TwUrzc5-54figZqBec?qiym`)w&3|!^=!Zlx z*CLpav%}sB(x-!`K~W4$8K8tAPc^G!gI zGf7$eb-;Ha6Aw0VM(Qz$CmD^wL+ZQRvQu1J9t(FBH3xe^sbjRtP_rl4E-mLkx&Ks# zll-I!cABCJi(BWeoi9a&xrOQq96(BO)$r}9T?p1>rr}JT#dDn&d3s^Y*dMQ8+P=49 zxeMEQ-jd^ESKLL;xAfWQ!izecB;fAks&KH%Y1WeDK2eULF->mp=Hpv~%l**afGtEx zOYdpF{?72{qb^FtTjCkUI^=7^@{ng-VQ|n-GHfTNw3tsNTf88~*aBCOiYHe1xOib# zCKNm@?df5Z!vS>@u2ExVzN_EEb+UM zl~7RPw-K_A5ZtnU4Ld8{hp_)TyVJiWz5ZjzPF?oZRk*vBUzK&!#}6h;L#dep9deke z1!K7}rE;i?QB=3FmqH6RmL+7T2EumYYAHhlLSbyz_d3hp;J87?MOC}KkTE^tC+wOI zlF+;xCCU)J-zM*%D#6{0dnw3_Ce+*!rC@o=(cpL*ujB<;>m>!$kE7%dX7Q^~>m>`4 zr^i}>`9z6O2Hdi|4DefL`Nmi}hd^9Uy~r`@EV|1xwW;Rcs0!t6ILLTil?N9db?m=9 zs}Qwfoc++&0o)Hv0i9#J${y`yK0Hl6E@-5P!Lm&I0!T3 znjh4f);Fjh!L3L;fkTP;0lQ!(Xrsw6D7v@t(>dUvOtJgZ#T<$sm#7)KDoQ3YMjBnV z%Cz63o-H@EOXW$So3TvG_jC%82LgBv9bKF|MS`F1>*|b@%l%-ci3cVFVoCH=L)s#) zmS0YV{k6?kz6%p{Z}k$7UDdAYS=e@rY!l21^k7qD)7At$}@%) ziPB~o#VE~wleyz#tjK8l?v;aV3q}eDD+qRucFTxu%Wq=1^`-WxfmWAWpvh(}U<4nv z+BMK+JWfBR%YMv%B8F(j3A}l}-&K2Y_o0|sB3Z~u;DEMP60H!@|KOkq7~lSTwt4?j z`ZjB>bpCgW12GV@<@Yb%KLV?|;RBNrZ>!29AnRS_cJR_p7!#EdkBTrUY_vKG8J;_9 zN~9Qh1$bH+UFO$&lwcFNTEqFN{Hz!m9S*f?kqBXo3~*-T_DGp1hg)kqC?@z)GosrV zL|0EK03NGwSjB|h~j&3~{PBzVJZVf8wgYqVfL)j%5VU_?g-Mg5(asxc}{c{%>jg46MIZ z>VO1MIu3yRnTZLYP6x=Q*%<(`Yeu|w!gr!e^nvtzaaI02EsD4asc!N ze}UB5{!KIrD2($Lr=5k7j`f!ep9vt#2j~s}-!14k|E>)GcO8FO;Gbp)e^MIQeqZx{ zBez0pq#UndYHb3LP}`%>ja<5L>DAV36e&F1pz-bc~0xSE*$d3tGotx@WRZazN2o{abQI^G^#z?sM6@nHYlR6i4IFLU%^!Y*^E56@UR!7g=h z0xw^7rkzrX(8BV*^AuXQrONqzu?JkhdU^Igw(B-|ci90kQ&$IFMJLEP~ z=NgRrveZ2m&b=hjisgCe>bqFwc7BGX?73BktJs?CPX0ZgWiG`QC%5hRF3aws5f3NK z%(Ltap{GUJxJ~Ciyar>4&V_t!N8dg35^wtH^;egIAU4g-qHqzyjv9!U51$DG*I#U0 z-x{JIW}!DnrTvYlJtn=W+v)s`er0$0;;Mf<} zA0#&rv&_GOT-c7Qk2|2?v9}+t)|8Tf0byFmkySuiPKcL)H{HS&yUVFUU@rMVi5!()FMlHt7fPEUn>g@wpVXLP zpTPD9pRRxER5CoLi+Tsqc4!py!UnNztLG|8E0}^2=n-+BG2!P1}|6}fkE>3 zk3ra@O@Uab=CT$1qk7V3-`uK(-2H)Y=&z7~)jtse`*J$<1r%SpYVxt>yA9Ir^81E0 z4x{)#*;sUm*)pr0AUh^*J?4(Bx*lqIjZ0b^3uu0~T5;#*FFhS&5@&B$M_NJ?Jv=X! ztsx>+HK_9XxK<+4y`xO%hohxI!{Y3tKH!Nc@)iu@HQZm?S+p?MY8S zAXv3wR;oVUKeJx=%ThZ>EHtZ0x7^}$nhEhY0|LJE6g@LmGFjZ{WJXFsv=)Z;z&1c` z?zy)BxTTr3d1?;t0fzC&r*R!!!$|&rLT%hXi;Y z*B;Kp20!E1&c)rVSAavJPm12Z?|x-%uRq_msi=uW4WyU(6#qtX)s8BLQ@DWX!~}ky z-I0Bjeyrhw>z0=sVX$7|#-7}onP!iFJbF{ zl&0L~l$+0cjCFR^`=`CN3jv+f z>j^WrB+^nDtBadhoM~fGu8NG?^=PA{($6@T>v;xTr>m*W)yBn!T!EIW4c&azFvk05 zqd*rwQu7dV9#BC|oN_r7`h^<&Dw*iteopK*|9{-QRa9l`nk0%t;*z)|?(XjHB<}9+ z?(UGdleoJ(B<}7`;+nYAYvbb5;PH0 zNv3i|*4A3tO!)vX=$RP*@A4Eej&+mJVZ>0zO`!Jbh?{kyUkueR=?B)F!GUQd4kw7y zUBTG3xdV?;Dn4cKKhOOV#b8i+Z*ep0w(EM_Amob_`-I7K{B}A~RrmdQq2u)UqsxBc zwDllV7jNlju%(i{o+(n)N0CgITE^Lg5(Dr3-SNR#Qj51c=u{)!k|Lp4d-qfUlCA=< zR(?>9gpe#W+6}&eQ;$!79av8aaty<9rKW4p`)9zm>`s2E!yjR;b` zyWjr$8lGJtvBcF^dO{;Du%G@VFC6@J2q*cNyKk(lWJRAj#QmdKFy0YfoJ^lQ)W9fY zh&z+ufbGbCM2HyhV=F?Hq2$^T6!cJFVcqGpfmVclWfAm=i9NF z08UQN$qML;%HGa*nOr$)9lw4=M-DiF2705dcVLiDp1HL2V?LtUG7f@Z2@hO}FWYe| zv}i8)`f+}Fh-n>Mph~c!q1*iB@8j+FxZj@fTGsre$-jn!DoRsN6AYSs0)g3zwV?0;n9dbUhyK0}_&{P7mT*quAjfIgfuWO)2?v7HrY5Ch*#B5_W3?Z1% zoGdKG*6f947cPH>8ta*Bp^WxRl~I}I^!_>CD37{}v$pHbY52;IlsCf` zU1e{V)fG4w-XCj@^;vCStRLGTb+>$?#iDR_?Jad9qmN_dN8R^(9iRCV5Q1dGs-s1=%W@T@O>!?Z%#QYlP_W_p{z7L$(=MJ!8bSBXplB_ zre3TATbeL`;8oUITOtVr5nzRU z$hokg%d&VK+*M}H=4z%=WdV*m)s!5$=h$?kjAGDz*j6!YNbS(5GbdkFPnPd_RHU#v zkh^x}Ma|W1D*3_~yUC1Z{dl(i%b{-QMpAVJq!+SzL}<#yDJYUMKAw%jgb+raT+y^LbwZXTnofv}M?-kTbZIZP|`KRnL8+BZP zg$~W`>LeJONGP*|jIqIdqacm+n~8yJAA-iXsKr_*r21N`>n2jC`*EI;L;y)`uWoYA zkH7u3$-|Oih*AXR6QXpeG)4|$ej(-?);1>oXf}sM%qRq0FRCL_AKoZkfuSgDl=1{u z7(v}bRMJ^ff4Sn?cS|;JiFgWdsS7+0{6s(o_jFZm*qdpor5u#?ckl`T@nbj3{V7|7 z<16?Gr~|OpV*Gjfa6e=y5N_YK5Laj~w0I@zX{#BVh4)Kn9~ptaquJKYFO&CTRkRIP zAj4d9Fk?v%jWhUhE61&_!!T_GHK;sD!k-5u<`Hy-^5!#$N!kNIN6up5yqE;Hgbz|E8FhQ1Xg(!eo>#*Hl}ezX zqOqCOY~}h=?gL}$aJK+@Rv`!-WnCc3pP|YImAxGy4B7P|G`(A#amTl*QaB>Q1t=FN zW-cNL;3)JEA5(gQMi6^HRh3nKcQM+-MTUqWi>cST!{8$tKtjjz0 zT^r%ZnC%H90;}YVNYMPe6h<@z-@`0)p3S#qh*Y;yy6|18{ zh!QlSi4OLPE^}=JG??{$Gh5=PQEGKKnC)5zHkxyV@0&>}oCy5>@<^0juZ{32M9V(< z*phl(up5><)76Ntd6PhRI~K@?01}cF@Ds2x!t}@W|Lv#!4+qwN-_cp}4d zJg??a?$78(e)t&l;od8Alp!b+(B+g4pDsdmWD13J9ZzJ)L5~fp@PdeeGK06;20k6L zua7reUBXh1QRdH&$Jd6|#Up7PZS3kiTxHrCFC1V=-*Sd0S7maFx<+KGUu_)o_u*4) zsIz@j-#wm|L}YZeyWZdp-&rX-9xfv}fwBd>9iOm3-|bs{T3+9SrPIY_zI555CzvFC zekWq{eq{E3fn4X=a}}FI@lk!{_5rpI38g5+t(v;q+|B!CIn?qzIkzgNbgAqeyGB^` zotw&MiuKZg>zT9|yJj-vwSDhyYZ;}Ae-r<9 zv-u0FK5&#Tv_2G>lCtuGMhJz)4LD3L>ODLYBGV7}83cXMBA>FvwgsxILiuXt{p*$r zlbn;zQtyX5b=^~*#?z`RL;tje*G53Hy!&_~eW1RDwtl}eUYaV5skL|0K5y*Zgr`@| z3C2PNoT~Nab|?dII)ZQ{K^K>hbe`jO)7Nd4=PL+> z6`KPN4~L_-ITGdKOD*5hP(Ng2uvW%i@@M;J^KKS0J0hl$ncZuW!z;;7w@20Cl7AEl z=DgiL9KTf9c*has&<~I1Ha?+Fn3%^{GC9jB|C-!E!$#BL6)l&)Qp{E)1kQ%~qc?t?*xHr4d6QZ(i{zUO_-Ht(qR~q+QPH9> z=SmMa;hjuY(t7a(&QdN60*Or02AFL9YZSwZuSeig@?oAkx@EHWFs$p|aTXm1q@2L^ zd@9-NHfzb;2AQ!#;JS@~G(u6NfKtTPRwA5vAF!hMZm>lC9E5L`Di^dX6%ZFlira)W zlckQwqwR2_1A;bVYMY|pT2!@h$|s}BJ5`YnlyN<~1cQb~e+f^i z(8LM_we+(j1hUgQ^NrVPleS>xlBfqMP5`M`CX zWJDOTob@>NJ8OgC6=6)^h-Si8{MSmGfUv#%D$zqmxaGHy$S)?yA`E?QfK<$-92!7T zo3@NicXn9Ay~(7R`ejJHnf-pbV{2GlSWDPNWwEZ$5ZkG*kkiyW&5Sg39XRV{0Fw+@Q0_r^-}L2ug}J;# zc`EH#S>8NEn|3aBue?Ue7Q}{eic;Ool;*YF*t}_ex;4tY!8UQ2Mc|$5+MQsir@L-s z+Hz0gy|-VhVYG@z^^sFxSuP2=q*aON_Lknr&E8Lspw5jJPr59r2#r~|XgPxSA!M#C zER~FBS+%u^G4(E?xw8SQs1oz+Nn|X}%x>$2vNI$ilqk+r(JuDMCK#-gng)mwOU6{) z8Wsf(u0xbV@J9Qi=WyUMH2A?H5D-8mGQhC7+RB?@#(JC+d`9?TXaScz{xcj>6B8*kBg?#8F-$YeD zaegqxZCsiA29+9z*+q*$Pe?d4ZGdTspuo`&;pcEut2P6Sk?Py*f!)nr+eu}mBXyg_ zjBOs%KJM00zh)=;#?qjM435aIQ)E?vf>t8~93sU1L{ss%=4cY^f_BYoC(4IXjpso* z)}5YW-uh&0$RniQx=1>ogMRhKwr_z0zD<7SE%wDgz9D{%;XC=2Ehv;L5pbwe@VIr; zaA19F>fw=;U4kSYCT9lSQ)h))GBV`R+up3vfth`!^+HWla#I9eCg zY?&<51LFq76GiW;dbhC)P4_?!OuD?w4L33)rmeW_2_gnK zeVrNHU`gHMJnERt^R*q&^e70EUE|4*oA&NNxU2#ZX56=2*wsGtB*3!}^ecxtZ?qkE znYsD&7E+3Y);QEIdqMcXr&m@n=*wjh?NhFDi^0P9H?Mc1vMKn_cuKtdA1+74CV}#B z*$SAUf=u`wC$CG9k}J6f^w=f@gwPs(fsfC|n}DhW3W5b5|LHai`ZYszkUH}PXFYag zRsAK-YdQ)pc!dIC0@On-HzDf5ZMQEEaLNJr0LCt=K-BD8@e1+b0+l5A^5D+xQokq5ufjhg09QFt*w~%4IUSz z+NQ+JY0plIq;Ax73e63`Zg{B|Bq@7P4kHhyU>KGtk{L_@jBpm4xi~|;Zw*Pl-6$Ks z6eq_gq*rQ@fdVFkSxKPsg-!;r2}PCEz}5km7mPaZGix(w69ylM-wpPM+YooBj4`T5 z%4CHgUtmwdQ``cCu~*J3^N`v754Ry+hKf+zstPZ7;BU8KGJKyM93mp|CL}9ISQ=cE z|I#QaFTONKEDBDXReF61e;WbKWD{=O=Uma$9)8$#c&RvZVIHlAu^SLztG(&QhcJiu znr2>uyM#eb+KRVW5bKJC_*BU^WVy72)l+vNFWl}ivz%)0 zMliyvG1$cgAVccg%Ed0r|K>JCTKXy~hGkzHasiv33ve4g&f~~og@mnn`*|Q#l=wl` z@V`Q%PVuM^JVsW9!HGcW23+jp9jRKqR!sWg?eNyQkrjh5=U%LFS*_ve;yR1y}7a=I3JEGhcW$+(^|ZOWF6*=O`u4KmD*xN|iY_ zrLBw?>TJi#EWQNw>O!I? z@Z`GNV;q|7-G9KZ9T2x&lOI1YmS**JJv6k9WK2M8y;k+Zv8gYnPWd4f*123EEyC4 z8W7qJ3JGPgi> zV!?s=c~4&I_-Y$Y*re5z!=$dvq-f)$^_)mf3u}#RGUmPg`Pa642_EfcYL|(xvOIK@ zQal=%17r^7G#ZcN4&*ds#7ZYh*P+6Vq%;Y{i?B5vFIp0YV|7Z6hSr!mywFh2nTf{| z$D1{SGTuIKpF2R{q0){$#Qi_iffp7>S;_3B()?@>wic0NVxZD5;qTqfM&cXR@ z0sqD3_o~6w;*h3e{fx0B7BaXvAh!{>VdFl3IU6+17w zyrHeB^h^FOL#1CIYRY7Y_*>_@Qt+zs_iAN(TOVbA_Sa}kD+(SBXcAdyYV_tfEDxKh zlz!X}HmC2M#r2778!E8_WunVB;X9ws+4&t__Jc;>PeJ<`AnAjMa|RA3HWyBPv~GbD zCRwCZEmT*MECriFziUptmMj`aURrO!+p4yLGl}619HxmWxtlege4ZqrIh>=59v(Ra zlqtVRF74QxI9hSerk#GT(U_VjjhT4x^iJ8uThP4mP~4?H8x|d4v##Z~4ahmTK_9BM z)#UxAMbU?F`annPTfX|_ROQpP${q@ij2=0>p^gMSXhi_;J=eRQ&EDGQwBRoIy)Gp3iY* zcKfy+ZOEPfy}z%#5o)fKB~eLPe@KI#0({|XThjcl>_N?9@}+>|5vP+eTRS8<#{DUe zOISWQ_==V0RjnUuX!bQ;hp{T2eqi`> zzCdwVvL=7S46*(toa8s_@dq>X51$FcZ&?0UhUhn@{~yB;{T}_lFhsw>|9@V_`VIa6 z7#a|D`L9e>w*O0C$)9UVfJ@NQ11Jk7dU}8#2(UK=;A)uu-zkf~(pCRKS^T*qC2DTv zWb6P~FS62iG8Q&Av^6ru2QXlcP7cQU*3fR53mPLaIIT#XOR7H+*eAS!VL`PQ79hNs z*8LCyIih*41sHQ%$1gJkMC0PM>MWR%sf8$=NSC%F(P7eFz2Y;(Ki+|S1L8fQ>|c)O z_L-8$XdZdo>M?Nji}+aX~vd3B8Fze$bu0=TjfkXWT%nVLjNe77-BOY zCmpzdcT{Xlw1^diCNNmur8V$Cp0&BmY5MXGRwziG;X_x--1zO`_NMfe<*l>OAt8I` z;p=9hlreoD>RJ&eAlCl4o7Q>s{b}g@4N&vUm8S{@yoeg`r00ssqvuxA6rL#h+|`v& zR&MQV4h!suPXR{pl{l;*sU7zEQES?=T7+i*@+$(n6`Qyma@o5N@vPwaYUxLq8Qi!6Hk!h)msOa$TYf>u)r%pp64#zO!gUqAL%d5H4Owqeo z`-*^gSUqTL-muq3#U~wVtVxegulBjM(SH2EF-`*UpK?;NfavLo$<`mvEw0?BfXHE( zBpn<9#7P{2x|-EPYy$(_)T;XjM?q`B2&`l8KGzX*hO@Ldav@^d}8IG|et;U%e%0)4jI z(-~s#TXER?NB+x3o`ntiFCYk?*PUDMZ<7F?T}UwoN!iKdnv@jKLVfKz~r4 zb!mhk@9Z$*MLa~r;5epekwG7l$Et@_HsH*}<`tDYn1L`f0JKoY1> z$Adi_q$4F-XJuLLP{#2oR?1g- z{T&@=dLm1-&6S!KiMTj3s$qgJT3Bq6tr3^v3 z6mnJdH|n4mX8ZGCF%B)W2{6Z=bnX}D-SzlNRao6yl^3Nf60c{`$SR^Ff=HldBtLRwF98#Jt@*!P2S#@ZD33(M|u|C1n=>S_a31&>% zCNE_hqO*drli<9!v)%|px!trFV`$mc!Gl1bh#9rC4UE0mgMwB_9tuRw%6-b&E#~>k zPiSz#>GOAlc+U{wONIdk4Y-k=v-J}@NmkMJ(Ooj*?TpP*lEIdy{)?ajK84aWtrT!v z!p~ft)p*38o94~Lky3INc-$RwUN+a-Ory$2?7r;WxxWyAJRRP}FG=GW?JyuDOL2~2 z4waB))L9q{-Aa1+EWeYVo-DEM`N?3HV;DsZHYzsa#}w;yf;)PDJ3Q@J2mZ1=GEgIPM3du`jR*j}ff*|1tY>+@cA@=b7EdWs1f zCQPq!+EIUt09oj8u=>XM+_f!2W_3iJHXhF~U1i4ux}DWvYy`m&2E)&1q7?*FbT-xt z;gqe+eB$D)qme-Yxlp>`dKQDXotK`aurib=9nA9pt~u$J zD(5`xYSE2p&XzCV$CHf3giMz7xqgCCaeu)GtDCe0AMch+BRyI(C|IN++UR00Au zKb4PB&_{j!VbRF3)D|(Id7^ofuIoTsrlzD)L`Z#qBrIM&Z{WyTNpk|muTfNF+*T7< z7ED?Gmifz%>2mgZ&crG>D9KlP-#Uu*dgz>ePEvxALLw>KfK!pCSSrYo1HKdf+4#D0 zG$#?o1Tivgz$k>UIzr5%9KIW``1T#F6~>0&hBiFCu6?6$)(1w6$~l9{hmGJS*JFTvXzr*mU!Of1m=s5FL_+;bzG`yOeE{vn@+KGeLcdg~- zhqJ6)UKd{6MWZ*o+{qRfj*_h<{`P*4q{WLsGs~1mA=qoIP2tW0qSPczy4C%>Tc$8Y z8nMjl!(px%?3p~&U9#ylPF8fEA9?Pm*|2@jr|c-Wcbvlx2R;dnFEw0Y5~K4dLL0sc z{x09w55Lm3e4zUvHr?eZC!5waVL)D>$X$i(`U2ZQLGAv{!5Oe4{tt-|;AZ%J82sx& zneAVD-v0w!3%^JGuLtGdre)~AN~vuBgc6KQ%#8mbr2=%h|0bpWonH9+k^Sf3dImt* z91Gy)HqKU7+JD^YpH2wCf%(5(^M9uo{^>Ah0|enS{-GBF)Y?Dn?reaBewKgt@cny^ zzuW0&{~LqB-wya2RsAEG|4)UMfrA5JHvb!22K&F>pMTG_4uBJEfQf#W*#S%o0AD`` zK=J)YncctH9r$~Wza8+eQ0JfM0#F0+ZwaCkno_ZQEl6E2sz(UIJDLE?Le0hnP%E5^ z9}b$QWL<&~Y0m|TFQ2jz>Ocyfi>=`tXm67+D&J!JaJnw71M<}+!sAYKW+%ejR=2Lt z_ZNpckNZVA(Fv7VqQdnKYC7r22lWNXVRCG5H+n(?%5e;jvreC-C7)@JcsdSu93{HJyG$cofAMn1 zE@ME>wiG_t;RR2f=lG^~z299wYJ?H~0`?VQsDMQtl13+Ur=djiUCDm?5dMTbNbVRU zy4vQ(HCBT^`&_GLLS*#PF>|+j{0wUbm6@zYm#PioCr)L0Z2ZQfujN}bP&_rUfV>hS zUU@!vyGrZNpMOyzdXTZHy|*;7V49wapcPJ;F^XY|ecD=+kX(^nHHG&vI=w)u1gC)EkWYzXON0t)H zQ^=9Dx)wUTXlCgfgg{ereBRK~4mGMF?u~ItiLW4$vNu+vm$wy}#n`W#>L?r#iLS6k zoH~lbXd(z}q%NtF*fCOErMma(v7;Xvl#rtrqu$n*k)(4d5n;#=~lK7EKL*!wu-o3ci$UJf5S&)PI< zT*zUm+R2q0u^ukuFLJvXOH?35Ng0Guky%GRRDtsxOaitm_muO!b9rcQz1-qLxS<2d zgJzhr06p~*&s7(}KtfED#6kvu?-oC^ldE7>XKE00+%#&ER+`pl5o)C-Bh=Y#fQZVq zd9$kHND`gU@Xc{;pisTfExG5?)y4-j4TR~+t^4lM!RZC3kMO#oKEh{_7k@vL!7jyc zpS14!p7t^>lk{YwpiNLo1~)$OYhu>zB%xo6k^{-6*;6e_2|g$^eD0vyPF?xIu5dLt zjE5)a;CDD}rL!acDm2th#ap`(xII%q3n+aQ*36C_ffL!97#lVg7lheY{!~$`*{YC^ z0;#>bckaoh8u%K4umoDL z4c@q?VL3FD%7dr%lvE6vX|Oe?;NE2YSeBA!* zxh^qwL*(`WMG{XggO1A_+f%u{1qU;!uuw-oxw*M|PQ9Pg$?UuYA*%FEk2)g?iONFQ zeXV=1bXS+|S_Y|y(PL)oW;gO393>m$ZI0K;UZT{OrFi{QYGyP_nt5`$eU%kOdrZ%G zTZ)8B$qEk<0kli$bZ7x-lcEA@i;Y@1$(EsF^^NTI!|km_8`=tc_Gx0V25{L2#hzwc z%DwG~a!G2IHCA|m9=I&z$@G5=OuNzc9*oK zDKKxrJa5E8e!*#EVJ@$AU_UKdr9H`9g&))xNni1%n~xw=+3yS--o#u9&p60(Z9!kB z=x^RX4%z%AYoT`WlX1|13(b5m`lUq2a|U=H6IG^^p?O-f1b1Z{euWoYWox#at>vyR z{f59~oiX%N0D@o)Nhn9!N~G-QrDE9gZPSa8p=VguLIWghyw+jwME=>mlWr0B}N!vU!(caqJE@Bjwzrhzfmh5OZmX_7;!U1U4`Z|NKDM6l7qUL%83rp#M-q;T~j- z#DTmIA)vxs5OcjU24^?dKUmh2{tH%_wmwA@+{y_5?zKj#fm7g|qSP$zhF7FYun&pV zH;Cr5S3X{<(x)@=KJt1wmi8A6RtOhPa?z!V@|yZR2>qxgR)(= z79CGK(dddPPl^o4u)UGA?F@I>8=MWYl(JD1B-@y4Gh_a6Ct^&q

^B=Rt{Z1W)}0ZlW?Z4W6={FvavKE+1V-qgkjPtUx;0N; ztb?@hK&>2kbx~s;2JTI-u<8Xy7b0CT7I-xgs3BklaCk<)uxOFBS$j;efeGCqCaj2* z6L`d=wKf!G8n-8(>^%VPlJWo*`T=YZb}p@)pS0rjk$)F;pV8pxqk7hH;MKBhT+u{x z?J}0Dy4>y)W7=fvRvrTHIeK$kX`NT!ZYF0NJ&d295S4UbX8htwbcg4XGqycBhUZLl zvWj0Ff45eB%D(hOD{DQbTnr~SVl&T$=kbM=U3_ihjhpHPrM=*nuN|Pc3E?wW81>)a zLH2*H4gP@#|6%iH_KT;QuQw{0$ZU5KtJ|*jWDq z!?FJpE&gTa^Y362`=9ApeGu{HvK8eFaYo&^B=enU}mQWbks2b zD%jcnU0nEkj=zOXe+8-kgiRcOyd?mX`+pK;CNxK4h@1ZuWpK3;zyPYu#-FN8fNT>B zuQUvX_U(&79MXD%@&-n4dYYiIG2@7uPQ_2J_At18+Yg^^ulyGS$Ds@O zPV-i5f!KnE7kj@47Zi^a6VI(xO_P_1OBM8Q)qSc=tgr7|_tj%l=*#ae08xhifDb$9 z!KbrlC^u#g29-;(8g-|RhKUiR-r`(m8L;z+siCeQl5kY69ve!^JX zJ<4%4tIAF`)raSQLJIM_gBQr_3)5zw(IL}M$&rXWeo?Y!wq}!vrSN$j`Y!Ijo|N=q z8lh4GkFnYdab*@c?6gR zn7{tR)?FsYO$GufN7-?wd42&y>@v+MdXOYeGz&viw!bGlR9o$`69$dxns``khH>BW zk#{((`nVbSIF0ofG_Qi>rLn--(@4pj1+cGY^dkl$3rg*In{)Uu0-Yq~raYoaAYbyB z#G3e!+*kc5>e;FCJ?~YSkmKElHq~rXF+3Yf`D+X%zAldPPIweFJQewT7Z>kRII{#| z)a8ztvX3Ux$PUM*NjHtV47vRdLD{u`Z zphlm}*f_CNFE~x1QVGk}6$VdWG-6{u)zm-DkkqZ@u7TOxi1I%v<9O!(qC57{3OLMj z_xmw1n-nMqX5lXV={1+`i}jjE1#8C*z6s2BN1bbK4XyzsdS04xTg%&GKtf7&MN+4~ zb!8ThSV+2sKDJEQ_TY20d>|NVX?ZKTYO=iWwKyK`F+rFEmi*k;8l}g0@2V_*L?82*7kj0N5BeyK$L{D$INE~u7SYP5qMa1y%WuTGE4=P7jTDc2b_6IulJ zC&M&4cT7m2Eg@H6 zqblJQ{ZgS@=tv%-W@2sE%zDgVh&({Ty&4@YoIjO7i@^S@ourgD7tR+o^_{%>(-xZ< zV~^)HFX%u?JQDsr2JqJvb(hnn*x&oa3vuw&B#4$x7wfDoyDReoo=JgiGHhy!}KdOMP0^TtyRQ z@w!e9Vivc;mgsPM^b7;1^@tg{hR*Ad=uRwh3~D8I+Udt#pP5FPnV~T{PLKW7RJ?dg z$a@4hN@O^>N5XgmW?Q(;cExG2Z)wF~a+xo9gmMiA6>?ZDwzV~An5C~ykIjc?>_=k> z_s>Zr4@udD^=&A`Q^i60Z;=55gcnIc5zsA5a!QLd=rP}X&S6Pks+672fAot-yF3tQ z?l!Q3I-y1dUtf}bvMoLx$n*v2Z3jWTCQp#za0fFG%($a=jy%uDqf6(O{2UbSRlq*a;9VQhC1K4Xb*xyDDm%;8!XU% zzJWDucfp_;bCgZ4)($^aJT8MQ$7vy{ulKd0HihssO`5aFLP3|WpJjCYaFlIQkX3dl zp6THhNt>rXdYNmqXc6}CRrBe3U(@ty?o1i!o#>NfBmEpRZdalWk$M7Bqs8wR-!Am9WskCB6>Q>DEgiz|i zG3MmK@I1p1dck(3_C6SPA*CX@?IB-;mn5KAD+;N-7g29d9i68C-dXXf-6M0V;cRg= zAIC~ztvZFCyz9DaNBIUh+X`tdManILh#9YGE>+f6(7OB8^`-O@Dhp5M6P*-BXA18j zOW6on(vb#>)r43fd}4Hf!*W5X_guTy(-nknoc?-=>u}C`!)$wWnwg%W5o@rFmro?4 ze8fZWg;tQN4W zO3274XeXQx=+eXyel^o``im6DZd4DI6P1vZYP(NC@r-44cXk&lu9<#gQ2+ew=nAc~ zRTbZAq0nNbH}y)rt~aF(Xqk;+ha0T`tqr3Cs6Qy7Gt3QXhm3&lolV8=+0P0AyQN7; z9qPpB#1k*jnkjVV6u%BvsuMF8!IT1*)V8A70wG{~)60a8>y=tJAJ~j(`W>poO~$KW zozr?Rk~HsZNS_Y^4}|8mTrj7etw^ogXlr-0Y|zWB>9AEJep9OP*~;Ml4R9%$|lw&u>lx@yOT zT4GHt*~6`05L*vYZxpka&ZL6yq%-YbRZ28Hd8e6)Vkzfz;cpSBjP*2t5kYi4-L!M0 zGScoD1aRgDREz8>+04TcJ_j$}C&`-J=;han(5<1#TkN^jkHv7w4Th%rNr`V1ctnh} z2*|#uEx3nXCs{~!kcBHv9z9Km65AhvnM#mB?K*O)u7jWZO@&QW z5-aZ;0Tpu4^VHRHk9#JHm{1uE&$513tXWVj2STcPt5ZTeU3rmpp8V225jaQ6>%0M; zBBdmll_E($p>QbTLuQ-nKDfKp$57KG>25mEy4{77f?pL@v{D$_bdA$q1`~Fhm%Gaw zTb&NZ9plMsba5byG5@t>8Gej)fV)?%g$P6GG(UKcSx(urO1Hm;@GWDn_7Wn@tubYx(p zRk7u}9EAN{BCnJeeZuZJc~bKs{OdB+i)GUF$0{z`msAEf99?AZAR1`PEU;#byw?l0 z?>Lxy{3=Yk^=9G6Xu66%y5d~U=KzCKh^pAcIz>w z3Xn3DdlW6P!b(soqkZYs6Q<7|f8WomhW>aD>H0P&CHeIHbh@9iT2;MCJ5pTE6uHzm zmRi$a;sCFDj<#2=TkW0D?eo2LxAzLAtF89&E#>r*&bPhf6d{H070K}Zu#EoFm+l0} z4ft+uUkvu~X8&n!pKr5aLbb9g$0s>sBytq`!_4>X_U<|Kqkj&Dx7y63?+`P`Pfj?a zP+t-=_A=%9?8^8m-q0)Srs2+9J4ZQ7%=*)o{adA3Hi}~@?i)DUV4xm%^^F;>(A#_W zyW89CR?3oG04f#kk*fX=QGDl|qZ0v*@|b=;yy|y4LNKbB;KLw|q{Yb7aLUc z;@f4u;kKiVXCR@Ox}@8PkwU+)dyg53hbgL$nn86^xN^2RSh_(pYC-g#qng!bjyop{}H+X1IpvC}($bu?~wE+1Cib=t;`xUI^{bL3kUAIYYtKBCl;mvkyK;I8RcHCIyp5=9?dY8zgo0i?N{>&s(ePN%9?Ut zEsI#YxAxk|3HsQj#fKD6B;Bc&#*oHlf6k#WRY**U&BSMS5Sy)_Q-#vOM8@ri8CP~o z5TKz<#Vf_dYuRXZZ}fY6s2Z1r6c6>B$S;Z%uByaV(}ytaZTa%#o?^Tx^K|4%2AK&b zdgx_Ww%~vUIho58d&A;6rKz~VRYt%+-xE`xq*qe_&&w~1eSMA_J=WCC_ML-N>DkZo9F>g7xCZ-fU=K)mGo|VXXD`PIW`%mEg^x^kw4v^z|1?HO8GVW?-Z)#S9vWLbX6>Ieb}V$z8( z7LaR$jK-u{$iha&C-gldVIi-S<1V$3+u8?K2&DR;yzH%vOS*ZonwZ>yI?Ty0&5E}W z7Xl)L7HuOPGvDSoApGZUPZe-26YO@1cv)gdJRYG|?9zNY#Z?^>NGdXOhRdu)rnXaT zrG0%>vXUxI_KCeO+C|`o7PK;t{;a;!+1btW&SOUjESBn>VeP!FbF>|N{kX3tU-^<< zo(i*hV~cRLK>R_4oN^g6W(807`~g8Nt9hBDNJ@hswrZoaJ-8VGk= z!kS~G1)>-2v%|_QLHmpB6J+XqMc>^Z1&xeCJH=oM!7roaG9KGT3~2hKo8-@)d7HmH zz~;_R2h~heO!ZE=f2;~Ay9I@270cF;)eqixC;kK}Wm#1^u0{wOMHTt7lGNX8aLPv& z^=>MIatkEMj1&&WkZ(gRM<^hqX z*~~C{Y7@9ZRtlEaJS+O_QE+s905JhUz~yn^<;ZSYdW5Cb&-6>%fwT|!TTc~TULX!7 zI*1XG)?VH>M+yVw1SF`(s4oZ5`tJ>wl&^p6za z>iP5{JzrW7)lByMNW3?yBa(wcn*V0SETEc*L*LvJ$?3qKYLQhaBW)!E}6IPQ#z?gx_AWN^*F2 zg+;{3D8NxD5-P5%MUR$hLjM2|!u z9Z)VwPiUQHB&G?9r7PoCV1keGgM|hH#o3Q5k_pYu46Z<`Nl=`qVV)IQGNZrkj)=R9NInm;3U~=J*Mfu)3P3vA zO^S&YyMwdJBTJzU_WSKNpF9dJi;Cj#R?FQB6aZ5jbNPQLToT;Cj*LBvsoX`o)g$d& zx^pW+MT~4?lO@~Pt)F_c$l}hO`d~8YmLUSPj2s-gEF9<&o%eH9D{EPUidSwAsQP1{ z7zO0V;PZUIrWP*1!ox44-;wxgTvyagV5ZS^aTtF&)0NYrbi`2^xKl98NA2rk}6~xsYvF)|x874W9ZIol# z(0qF(Ta!ZAD*YjTjPu>zWc%F9^@_`-8`_;qp_mKwE8W*}`2$2v+4x$UoN;z;q}BxU zVsSRudlk*2( zmlRvqz!F=&oQ-$AhZy~_KsD2xjAwqdh)giFZ0;Z796=Kity;I$kR0fz4)2fW6lg6b zJ=>wFAgC=}RUettT%$BJ(g$^&DkrMb^`qhh$ty31Q2)cs32}K3{WEnGV6yaC0naN$ z!ex%-!H02evB^|R(X)ZKgi(qr0GiHjztAtVpMEYz%~^Al$~)5n3fg?gA(#Ptl}+XA z29FHU%}gnV9R#8SSWbGI|NBZ^Kk}s;%odZw<)ZS}h&G@1dedh;=Lbv9VxKVJ=b>Qz zF4V`X4ox(`N-`=o9`U(LXX;)BSD_m2hx?0|jmdsc?$PK}gq1DLwbpe5GsQ(O4C1&$!yosBzTR zSW!z)!6ukDpR;aQkw2bZa&I6zAXy3wl};Uvt$-;vdK zk5pEf5E{ElpET9?<^bD|(Aq8$E9_`yBJgBg)SxZxSP~g!4GVgb=vR`}F+;W-W^G7g zcQ$C>_iqohIcq<(^^3q9&Mc$=20e31pXcMw5MLyF?;1Y7?Wc2nb3ZVdU}31OA*;H+ z(|U*QObl^icxv=ai3BXq{9RvTjU?ZtNdge)OF$svUl)=mV~#25P$74y_+^SyK{8-s zn_obssp@WJrK7XiZ%)%ORO1$?naSNd`jZ9Tt^S;n4abeQz0QQU<^VgZ`D~Iwss1s? z`XgLYi6@r8r+5&`Ng zoQ?N^9@nEw(vH-=R}F!EJ`Fvk8^M`VKOc8PBPZGQP2#6otsMf~G5n<_9k~bR9z2OX zgW}WOa$kN|s|Mxx?Dm$&(^_SumqPAZ@iz`*3>CVT*Z}^oQ^e;(>-$R3d9jIv_CxYHF_l)40DVd%ibhwebf+#GI3ZxxhE8M za@if*Srp}6%QyVkLupU>aGOu+3?HkJ`+BS_= z3?eI#&RZbrIdHCQ+Uh8g>(+31#&FS!A!+&$u2aBtGK=Nz(!En_VG|jZn(COMgggEg zvi}gJxO_d9A3(y=cPH|Y3S|x&sS+51GM&`#x!lE8v)bXi(ppyMM(M06=?{$YRCa91^|dAUOZrqU%ImN}ZRK3k7uPcHL2n~z zN~Vpq5rpfyRS!0{YI};6xE&+?$l4>}`OemoO)#6vm5Xz0Jl3*aQnkc(lkIzKk=1Zr zhyt(qNQXk3N=bKnStvP^6ALh@MfH#Fe6)sII~M}GdMUO9vyODURbi&s7hCSZC?Jh9 zOXYqaH{z+F!1^-u6T`hUImVK-&f{R(V&I$GK z33MFDa_&G5zc{?Fj?`fyK0=Aq3`NoN)Ce8vffHz*hnjnfiv__G<6!+J*c-6paPyT; zzz1eI#l|H~$PMVi6FRe2gtVeiGmKI%ghM=3W z6-9pe03H2VU!X1{<|Iek%B@5dlk)tyOqXz(N23dr*0@1K^YbwH{&&=_0GXEOWI;C{ z)v-l1fAnlkwGpGOOk6Ow(=nt(TO?^vzNZ(GMlJ|XdYbhKxbzaJK#0%ln87^ZPsN=- z4wnJH$_S^vMy0r!#-y0UeaHQb%-BS_GPW5u%uP5VtnIZs>Ws7sBrlQGdUoIy_Pp?%o~2v&$L9{azWqX<%8M?iIz0%zkXDOq@v@r6tyk3PDcCGbc?FI ziKMfoRp*N43>;gsvNll*!VTv%D8#)f;9;@ zKd?A-uS6`yOtC%Rv8IS=9}7Fj&BqrC@_K|N`E{BhZud4xsOnZxb&%5K@zYW|#TyFC z-uTQ^X5k~mdXVOiz_E%+f;3&Ba3H+K&Vt;Ht1X^V)s>IE)y~b~#GOKUW5M{*>1*zr zQU; z_^VFV;1cySl6K0?D%q9QfrdrfZZW}S8O1!Mz;RVRP#xHks+5czqwNVnH+XvRVtbiZ zzAz>d(EotI?*lvj4K?KaQxFZHhQG+zU#TJIKjq;63nU)DO8vhi9>4J0ze+qf|6D+2 zVPpNLiyG%|Q}w6B<4isrmV-VfhD$WMcSv0RD!=^u1O2mT~uLdXv)Ybb<`qVERvW0m68a7{o?b?@&;hVw*T)m_GJ^^gH;!!1%tl;L@U z(Fxj}ZADN$KQ^`qZ0Am2*05G$IgD#^?}6m@oDz;dVGa2 zZjkK0y`td!Y8?#M!(T5$z%S4LM&#uIx1eR#5_E!3hf%>=hjsccEBW#vk#FTvJVg3l zh+Zt8~4m0Svik-P;E2{-p*{HPASsi--f$P$j zyzScl)D@~ZTh>O!f5Ed~`Mmqk8B$ADgBClzTy9;i0}hhdoJ(nuJSs6BKjgcCB^d>K zxWw_g#(As}@HLk*5^b^t$BAr;6)ZWIrWya``F-cfbI0kFmY%0o{Ojd~l#_Bnp{?=9 zmne+&1p!0%t%4lt|@Cy1|<~q#Rj^H1HQF$p{dWJy1dN{FP;-lI9q1rVov2; zTQF)J(Qit4?#|K~&uj*U{=it?!+qN(wOi^oN7epOIQ6ew2Kx0R*atjiD{V)Fl4o8M z+iW$E?GU*65N%+eBhAj*V(vH_ihynV7X=W&^<|?Q6G5_ZuIdhv;KsU@%gPw#OEaxe z1J93E`R*eE9O@1mQSgZt4NG4?&*!6@yv8n2SE^WnYPMcwXy=yk-b3udAb->Iy&Cfp zHZ9{WcNU*7XOaoCEw`)9A!pu;gfG5I}8R7PlYsxUA6 zOlQ4}QBX)n|6$zFV9jhNCfk@PJ8ikvhQQ!5TUIBM5*oDa(GoB}y>;C0h~MURN85^> zYr5BH(7g#$KBxP<9^5K{;mZv?X9^>X@D`mZnK2iSeMlW9fN~ifZ)P<_K#LVWG{R}| zT!9zxaW@yI@pyJ-Q!pSSS$9sQX9%jxX2!4EVTIjKg`750bN&`WWLn9U<8YTtkA4*1oUn~<7|rO@h|S(}Rx(*bX4_Z{(aVYR zn9HxtqM4u02wc|vytH?%alOz2S4ZEm9C;%<$_x_ptVv*Kv^EZ$n_L>O_f1uYPJ%9Y zJMmA&ASJG9(a@xm@06;@0NmyG*X8Le%cnsrfp!B<_5dlJW!{r z@i^mu#mq-lhsEM+pIt2hN}ekJbu%U#$a$cFCLF@=(`64a(HvK(^-hdU;g#pG%m52jA@Nwib za4!@Ve%X>2u1}7OQ!WFNXLw%jgX!$G-H{V2tL|&Io&5!V?PG(JSj~Iv8=r%mmNf7j zDON&+VDWh4>4Rm@u+SFTB!WuBqA@fe0WsP#Rz;#rU_%z7y0VZQ`r!6m_T0;np6>%` zKIa5wyG-(l3 zXaMK`;EPI{hZ_JpRZBe<=GMb@)4*@LaSt;nJy5-V|F&3BTm!`NBeY9Rq7zfJ1YO3`}UJWxQ> zLP zqPETf+A!N5@hb<2j~Aci`6x01FCUk_kNWc+r_98jl6*5!&dN-NA@L6dp_^|c-WcVd z*bq=?JsFObi{&Bn4D%6z$50rMV2j$nL$vc#=s&q@F5t>1dF6F!`C{9jV#wMdB8TKW z)grYb?pi&cwYy_Smmqe2dSebt^&YAlp_`J`B3MLQva_Fr{t+v*Gqi=UN zxqF!?ri9c$$RO189b2ap6uh(r5lb0|S`f~s_7HJ2))RUB3K$FE8^7Fdoey0aDkhMG z8e-9HEvY(Uz~jxj%L)8oh_BaFGQKY@d1ES7b(Y6cx17uU7^y8Ir}pMrzFEOnNtbMv zECj}D{@`iq{!6n^LCdhC!HZCM(*~WR@Zo{QvXCIJDZ6vnrTU4ELDEIcUlG&>jPOZi zipGP2p#nz?^OzAY@Ai{r#P{}knpf1ULjwjW5L~0F64fE~5>Fg>&mz51%b0r>#;jgL zCTM0$tYxy;K19@asxK@)$w$K0Wj+PHXBuz_;i_QV79=@VBE`&UAJhPo9VH8|%%vg6 zH{-%IH3X66avn^F8WyeWP+rCQ^<)lSrNm}4JB-+NM7XO@{o~1GQ6D3@o~tS_g2vX( z6H>_?h@c6isruu|9EJTXrkfn2lJa8#6F3EXhrNh7g)ESJ8RTpMi~1v~*TOy$bGhZi z)>TyT5I5~wh%J-6JIvEfFjP3C+6OHkcdgTG+++O4{R|*94ke~&uRK2 z1}Eu?hI1ArobSgqoW;FB$n&u)c`Sw*B2;=Gh$0^9SY88KsD0+dFvD0}Mvu%6> zqHQf988^C-@Q@fqKC%$esscsB2*Oq=Z;$9Dc^?DP9ju9L7*n;?JmN=L_tbLDxL|7Z z7}gbhn(Wt0%_4qMk$|#Oe@Yl2{cUrl#sY+qWBz)VBL@~nd)Of+8dgY)P1nmFowrc6hD!4m-P#^Kv8~QMW@p_?N_v){<9{`|)SqGS>{;DR}XY z&6XB`KNici-#RBsJ`?XwtWga5JybuAtEmP!tqkQ1h3+V6-dxYVl1NqM8alzDL;kLDfeq zH3^uhepR6A)l}Q(h^1&Au_v=7$(SxR+U70(LS2m%arc}(>YM!AvJbT%6 z<|$QbJ3HHk0A#F*9>T~iO_^BRT>gNqVV^Uki^9$ya?>eoreo2$=}a>w(Mw}aVqZb+l)kh@WuZXRd1$nC{lEi~@uowT)})~TAx2Jy z0NrTaSaZRhdu=whvd6AZz~r@um$UbKJ7z zgV9AH*}vqR=gcPs4#m^JCrd31(oG0EWKS&TD}OWY)o{&T_H?n9RZcvS#uRJJ8sP&b zRD&(;t&2&qiiRkM72x$>~FpOE#me;A1VY9EGw_8Xv`O?!O7w(NLzl z!M%)Zkm%7|X`HM(k4m}*XCaI#*B;Oir%&6086g=ClV^HWo>61)F}2)O+Vc^#r^^EQ zY-);M!`Zmsyr?Rn)>qCzmNg^ADxw-=+-*H3IF@J??=4Did=5@}#NGaIelj$W3tZ6^qJD)i%H)ENYJ z<1SFn52`1VoLy3~W*xZX2%}r%PmC3T6fy=3(KeyUBU0$lvyL~hb#>TgY?zTDwmYV2 zC)0e$&aoPc6n$P3IY}{mXFK6aspdf&+=e4F=@_$#$G9>xg5z<=RgXsd>Zg_wLfr~R zOR}|ag{kIq)a7yB!hIm(R;mkg0lhlZH^A?g-9`>-uQ5W$t> zDh*yQ!I`0m^T|rv!gEA7ZrZO9Xnx|`uQ1dZI-DH?Eq$-6Tkj3=c{9knLKe#mC|zVShnS!ZXpig}>(7t~4VUMxxZj&&FO#@=Dwh_knJo ze=2>%x$-ZSm6C8yUfEQSz6O3R*6@rl^^M5f!p584TjPY+x)KL5?_{h;kqPDBXx=kL z!y}I>t;m@=DP4FXwc2!tdvx98d=s#Edi*NaiMZ1Rfe^qiN3(&1q6Y1#72LujKH}LI zb1=V`dM}zwfj=ZFyuO#GRMJ-q0Z~XhM22VMv(}#Ij%fXktS+-0(nB*GUR|P(EA5UK z&v~~Y8*7Dk!8jUvJ2}?Z?GXXN_KW)OK-ZruEI&clANnz!pa1NqK8*1fwfSEokK_D9 z3inre+#h)7UqII%aOY>yEKL9OxL{)V6A1qIyG%?BKV@|P>T$sa@UUkF814Pvpo@v& zuOhd<0lF9&06~=igFZHPR={pHz+sM!nT``c(AYQtCK`Y+1RZF4VL~my&;R)acp+r# zU<9y*`^$F(3I8bMx1{T@+gkrcy8hv4@jprK#&AXe%S>l{9~Jmx!q*XgdEx^&7a{1b z-uHxWL;4h5Pum*^#l&}X&J$4>4GZlm`4FO4lyS?I@(w7M2MFIG#mCge=OFq z>AvVr9V=RsI#wJ$TaUn8BOj|cz3-@(b$R~eSc=hSdui6+^WfX)%kz36Y31wwv?Y#t zQz_fk_A%od)Fs&Qg}iU69nZT>wVujR)Q4&$1Y)9;dW_N^az!K!KX`Q3Gv2;aeO}62 zT=$_WOOm?i-$t$N(-8swA=%pAZp;4ywXVBaxOEWtVG(7M;z;uB8oCq43H!U~ap&~S zJAQe2*Sg{Z{vS>4uXjiHV&Awg1+uw!M<7~94r2pl8^OP_Oh3G)JE^wkBj`cqK@0`z z@j++B)Hx&zHe5hl4IgwT?zj)X16ct+G7fC@<;OJ7b~&51jhs@H`n(tfy2S|p?6NXc zEc6(eu6_3@`+*d#ij>B3^PnNqT@sJIIF(GF{EGmpE^vBVRM157HR{5-R@}H>8%%;{ zms0h3(X97N(0BfL_%OpVJMm1P;-}rKiVTEwshtlYKph_W_IbAM+WEdv1)PVUZqt#~ ztOV9VF(onF3b*h4f;G!${bg%_8gtHmcXP&_=Kz$~Tgy1aIgo!8E+o7h?&dX-3r2 zje>*n^oo!M=BW~}YzNc6kZO&h%KpHla3|$}c(|gBn}xS9E1@kr%Z*sJ+jDFmF{&n8 zx;pN@=o$Xb(3O}X`ucnP^{xH7Wh2GijixNrO?jJIHw`ca6k8pRY%7c?j^){4LNl7y ztt`%;JtKOkdqwzCXDWL zLiAc`AK}HaRAn@K|aaaQ`qMG}IOJW9h zdx+(y>caLN<}`QNB>NpK^tjlXm7lHM)3Q5;n&$B9I(F<5A(RYa`Q~MdZKA-xY)nrW z8S0nT!MatX_;;4~LVd0L@D?^ya@_Vr8tFw?dVb`=^SD@W zB=Szi!&!+d+czQD>?OsbNQTyK=5UY=mYpcUL;AebP}bvet-(0|_;KXzZxWJ6V%2VR zyOoU|3u-df=byj`@6h{1MOa05dr@N$tLTaN`dO!1O1aM|TDLT%JlUsPvtcB0Tid1c z$)qtln3TBAiDD(jha^>n;>=*K*M?fxM?@{0cb$PE?3Upz4P*(}*rm zIz07k#h;5>v1$lu8H#X0A#R%c9-B3#D-3hB9x6LjQEpy`8)-HNjqft?zC+8#DLK%fklzf4sW6&Fn+sAa8JZ74=+DT3k&;#67}&ss*cy_~Fd8glPV7Q(c9MrfqzAVH z;D?Nz#S6&i78Y!avaC#dUE%{{Y;v(fagqgAav1g<9Q|TMMLxL|f^N9(h@}*RnteZ$ zTnfd8+^tIH(Ug0#EySE{w3bAb2*9F8PvK>yzDo2GH0bQI3?}E?Qry_Q4@`Pk0OZoe zyVndj&Jfx|)YMt2c)|ExVNSoz(>~@$wQ+*ZnBlo>Iu~{95W9~@yy!FOFDwloMJv|w z?mkMcWlE;w6&Gh+;W{{yUx;zEaLN^6=T_e0i$Dnj^WO=1?rugpti79`dG&`iD+&w| z#*?8zP1x9au>5ezp1T@oLCFeOQCXTO9%4Xq3F%dK`_fVw$ZM!Rq|X)1L)a>e52WD# zUXU=;*z3zo90z%6!iStHLOC5MaSAD^5c@fiJL#Z8n$>}Omf#t_>SYZ4!WSb1@~9`> ztq7)!3<`!TP;kc2-Loi>)z^qD!brdk6f@aJxbW7Jyj4H$FbmCi@k;ObBubCoXv7?l z1Bcn4r5Wf*?~c>IB>D4&b6vFQd%5l`=NgkqRIU@~bIk1ktNs{`=2`QNZamYjvFPH~Y z;RM;I*{08dITGybiE3%Rgf3ooSbR_aGJk3&^zP&3St+~M?gWt_9^*oGNs&nAqrFD$ zbYE;@q7lQP`LqcLoshs$6}Fx-{IoS$Svo@va+T079?LAic2M2v$^)S&5Sr%F%3g2* zJnnhhkX-FU2DNL*L^3z0bYObVz>!q@rEJ6)apBl8%?pVOSv$32q?ST>Z7Bq2v_0i; zP6e+yR4|#FvwnSzzZcr}TTqc8aby)}@zXQ*&9h=v4Q@B3T{H0RoVkuC_&3zbU^6B- z=h!!rg<19@h{5crQnaAf=>E+hK){iy-$Y^(Wo=Yu z{8cbU7UkJZM9wS11;n`e?6Y0yPGOY=5`aCnc?(cX^ho8}4+Z(Y^rY zmKCIhE3PsxberrrrMoSyezEvAD-49eAJHueDpNT0EsbUf+fdEjtNdJ`^4{e_b5sCD z?T!exV)&+cbDXs%_C)TSONS0BQ}6jWI9TC9b?OpgW$*7F7e{pjt!c~er*sx z89L(C#d?kUXqK-K4IkAzL$W!rs;!~GQcjl%qZGwAJqSHi36#9p&0eCWHAYx3Ad zMh()>wVAz20fM^1nxgF3W%;{VhFq!if%aH2xfbKQ`gZm@sy5xFIeN{_O_+?~f*q0U zpMl8ji7YTLEd??rrt>(Z%NeuQixu~_aTiTrgHaz;vj`&tvg)tYTD0vSO}y0J(I*

oz}7sSc+)w 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 JB32%ZP{c!Qi9hxj1{EW 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

-k7ai;{0C~2 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%0DnUo^y%=^3y4Y8Q31-3hBDkJciK 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 %hFVi@_pDU;q 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Ώ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 z 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 diff --git a/SystemTap_Beginners_Guide/Common_Content/css/common.css b/SystemTap_Beginners_Guide/Common_Content/css/common.css index d7dc3f27..5af9649c 100644 --- a/SystemTap_Beginners_Guide/Common_Content/css/common.css +++ b/SystemTap_Beginners_Guide/Common_Content/css/common.css @@ -1,6 +1,6 @@ * { - widows: 2 !important; - orphans: 2 !important; + widows: 4 !important; + orphans: 4 !important; } body, h1, h2, h3, h4, h5, h6, pre, li, div { @@ -11,9 +11,9 @@ body { background-color: white; margin:0 auto; font-family: "liberation sans", "Myriad ", "Bitstream Vera Sans", "Lucida Grande", "Luxi Sans", "Trebuchet MS", helvetica, verdana, arial, sans-serif; - font-size:12px; - max-width:55em; - color:black; + font-size: 14px; + max-width: 770px; + color: black; } body.toc_embeded { @@ -23,14 +23,14 @@ body.toc_embeded { object.toc, iframe.toc { /*for web hosting system only*/ - border-style:none; - position:fixed; - width:290px; - height:99.99%; - top:0; - left:0; + border-style: none; + position: fixed; + width: 290px; + height: 99.99%; + top: 0; + left: 0; z-index: 100; - border-style:none; + border-style: none; border-right:1px solid #999; } @@ -43,14 +43,14 @@ body.notoc { iframe.notoc { border-style:none; border: none; - padding: 0em; + padding: 0px; position:fixed; width: 21px; height: 29px; top: 0px; left:0; overflow: hidden; - margin: 0em; + margin: 0px; margin-left: -3px; } /* End hide web menu */ @@ -63,13 +63,18 @@ body.desktop { body.desktop .book > .toc { display:block; width:24em; - height:99%; + height:99.99%; position:fixed; overflow:auto; top:0px; left:0px; - padding-left:1em; +/* padding-left:1em; */ background-color:#EEEEEE; + font-size: 12px; +} + +body.pdf { + max-width: 100%; } .toc { @@ -97,14 +102,26 @@ div { } div.section { - padding-top:1em; + page-break-inside: avoid; } -p, div.para, div.formalpara { - padding-top:0px; - margin-top:0.3em; - padding-bottom:0px; - margin-bottom:1em; +p, div.para { + padding-top: 0px; + margin-top: 0.3em; + padding-bottom: 0px; + margin-bottom: 1em; +} + +div.formalpara { + padding-top: 0px; + margin-top: 1em; + padding-bottom: 0px; + margin-bottom: 1em; +} + +.varlistentry div.para { + page-break-before: avoid; + } /*Links*/ @@ -113,11 +130,15 @@ a { } a:link { - text-decoration:none; + text-decoration: none; border-bottom: 1px dotted ; color:#3366cc; } +body.pdf a:link { + word-wrap: break-word; +} + a:visited { text-decoration:none; border-bottom: 1px dotted ; @@ -142,44 +163,51 @@ div.longdesc-link { /*headings*/ h1, h2, h3, h4, h5, h6 { color: #336699; - margin-top: 0em; - margin-bottom: 0em; + margin-top: 0px; + margin-bottom: 0px; background-color: transparent; + margin-bottom: 0px; + margin-top: 20px; page-break-inside: avoid; page-break-after: avoid; + word-wrap: break-word; } h1 { - font-size:2.0em; + font-size: 22px; } .titlepage h1.title { - font-size: 3.0em; - padding-top: 1em; text-align:left; } .book > .titlepage h1.title { - text-align:center; + text-align: center; } -.article > .titlepage h1.title { - text-align:center; +.article > .titlepage h1.title, +.article > .titlepage h2.title { + text-align: center; } .set .titlepage > div > div > h1.title { - text-align:center; + text-align: center; } -.producttitle { - margin-top: 0em; - margin-bottom: 0em; - font-size: 3.0em; +.part > .titlepage h1.title { + text-align: center; + font-size: 24px; +} + +div.producttitle { + margin-top: 0px; + margin-bottom: 20px; + font-size: 48px; font-weight: bold; - background: #003d6e url(../images/h1-bg.png) top left repeat-x; - color: white; +/* background: #003d6e url(../images/h1-bg.png) top left repeat-x; */ + color: #336699; text-align: center; - padding: 0.7em; + padding-top: 12px; } .titlepage .corpauthor { @@ -188,66 +216,88 @@ h1 { } .section h1.title { - font-size: 1.6em; - padding: 0em; + font-size: 18px; + padding: 0px; color: #336699; text-align: left; background: white; } h2 { - font-size:1.6em; + font-size: 20px; + margin-top: 30px; } -h2.subtitle, h3.subtitle { +.book div.subtitle, .book h2.subtitle, .book h3.subtitle { margin-top: 1em; margin-bottom: 1em; - font-size: 1.4em; + font-size: 18px; text-align: center; } -.preface > div > div > div > h2.title { +div.subtitle { + color: #336699; + font-weight: bold; +} + +h1.legalnotice { + font-size: 24px; +} + +.preface > div > div > div > h2.title, +.preface > div > div > div > h1.title { margin-top: 1em; - font-size: 2.0em; + font-size: 24px; } .appendix h2 { - margin-top: 1em; - font-size: 2.0em; + font-size: 24px; } h3 { - font-size:1.3em; - padding-top:0em; - padding-bottom:0em; + font-size: 14px; + padding-top:0px; + padding-bottom: 0px; + margin-bottom: 0px; } h4 { - font-size:1.1em; - padding-top:0em; - padding-bottom:0em; + font-size: 14px; + padding-top:0px; + padding-bottom:0px; } h5 { - font-size:1em; + font-size: 14px; } h6 { - font-size:1em; -} - -h5.formalpara { - font-size:1em; - margin-top:2em; - margin-bottom:.8em; + font-size: 14px; + margin-bottom: 0px; } .abstract h6 { margin-top:1em; margin-bottom:.5em; - font-size:2em; + font-size: 24px; +} + +.index > div > div > div > h2.title { + font-size: 24px; +} + +.chapter > div > div > div > h2.title { + font-size: 24px; +} + +.section > div > div > div > h2.title { + font-size: 21px; +} + +.section > div > div > div > h3.title { + font-size: 17px; } /*element rules*/ @@ -256,17 +306,16 @@ hr { border-style:none; border-top: 1px dotted #ccc; width:100%; - margin-top: 3em; } /* web site rules */ ul.languages, .languages li { display:inline; - padding:0em; + padding:0px; } .languages li a { - padding:0em .5em; + padding:0px .5em; text-decoration: none; } @@ -302,17 +351,17 @@ ul.languages { } a.version { - font-size:2em; + font-size: 20px; text-decoration:none; width:100%; display:block; - padding:1em 0em .2em 0em; + padding:1em 0px .2em 0px; clear:both; } a.version:before { content:"Version"; - font-size:smaller; + font-size: smaller; } a.version:visited, a.version:link { @@ -347,7 +396,7 @@ a.version:focus, a.version:hover { position:absolute; left:170px; top:0px; - font-size:smaller; + font-size: smaller; } .books .pdf:link, .books .pdf:visited { @@ -375,7 +424,7 @@ a.version:focus, a.version:hover { .products li a { width:300px; - padding:.5em 0em; + padding:.5em 0px; } .products ul { @@ -390,7 +439,7 @@ a.version:focus, a.version:hover { .revhistory table { background-color:transparent; border-color:#fff; - padding:0em; + padding:0px; margin: 0; border-collapse:collapse; border-style:none; @@ -398,7 +447,7 @@ a.version:focus, a.version:hover { .revhistory td { text-align :left; - padding:0em; + padding:0px; border: none; border-top: 1px solid #fff; font-weight: bold; @@ -424,25 +473,32 @@ a.version:focus, a.version:hover { text-align: center; } -h3.author { - margin: 0em; - padding: 0em; - padding-top: 1em; +div.author div.author, +div.translator div.translator, +div.othercredit div.othercredit, +div.editor div.editor, +div.contrib div.contrib { + margin: 0px; + padding: 0px; + margin-top: 12px; + font-size: 14px; + font-weight: bold; + color: #336699; } -.authorgroup h4 { - padding: 0em; - margin: 0em; - padding-top: 1em; - margin-top: 1em; +div.editedby { + margin-top: 15px; + margin-bottom: -0.8em; } -.author, -.editor, -.translator, -.othercredit, -.contrib { +div.authorgroup .author, +div.authorgroup.editor, +div.authorgroup.translator, +div.authorgroup.othercredit, +div.authorgroup.contrib { display: block; + font-size: 14px; + page-break-inside: avoid; } .revhistory .author { @@ -455,8 +511,8 @@ h3.author { .othercredit { - margin:0em; - padding:0em; + margin:0px; + padding:0px; } .releaseinfo { @@ -485,7 +541,7 @@ h3.author { padding-left: 2.6em; } -.answer label, .question label { +.answer .label, .question .label { float:left; font-weight:bold; } @@ -508,7 +564,7 @@ h3.author { } .perl_Comment { - color: #FF00FF; + color: #888888; } @@ -624,27 +680,27 @@ ol.upperroman { dt { font-weight:bold; - margin-bottom:0em; - padding-bottom:0em; + margin-bottom:0px; + padding-bottom:0px; } dd { - margin:0em; + margin:0px; margin-left:2em; - padding-top:0em; + padding-top:0px; padding-bottom: 1em; } li { - padding-top:0px; - margin-top:0em; - padding-bottom:0px; - margin-bottom:0.4em; + padding-top: 0px; + margin-top: 0px; + padding-bottom: 0px; +/* margin-bottom: 16px; */ } li p, li div.para { padding-top:0px; - margin-top:0em; + margin-top:0px; padding-bottom:0px; margin-bottom:0.3em; } @@ -653,21 +709,26 @@ li p, li div.para { img { display:block; margin: 2em 0; + max-width: 100%; } -.inlinemediaobject, .inlinemediaobject img { +.inlinemediaobject, +.inlinemediaobject img, +.inlinemediaobject object { display:inline; - margin:0em; + margin:0px; + overflow: hidden; } -.figure img { +.figure img, +.mediaobject img { display:block; margin:0; page-break-inside: avoid; } .figure .title { - margin:0em; + margin:0px; margin-bottom:2em; padding:0px; } @@ -690,7 +751,7 @@ img { } .prompt { - padding:0em .3em; + padding:0px .3em; } /*user interface styles*/ @@ -700,22 +761,39 @@ img { .guibutton, .guilabel { font-family: "liberation mono", "bitstream vera mono", "dejavu mono", monospace; font-weight: bold; - white-space: nowrap; } .example { background-color: #ffffff; border-left: 3px solid #aaaaaa; - padding-top: 1em; + padding-top: 1px; + padding-bottom: 0.1em; + padding-left: 1em; +} + +.equation { + border-left: 3px solid #aaaaaa; + background-color: #ffffff; + padding-top: 1px; padding-bottom: 0.1em; + padding-left: 1em; } -.example h6 { - padding-left: 10px; +.equation-contents { + margin-left: 4em; +} + +div.title { + margin-bottom: 1em; + font-weight: 14px; + font-weight: bold; + color: #336699; + page-break-inside: avoid; + page-break-after: avoid; + word-wrap: break-word; } .example-contents { - padding-left: 10px; background-color: #ffffff; } @@ -745,13 +823,26 @@ img { font-weight: inherit; } +.toc H1 { + font-weight: bold; +} + + +div.programlisting { + white-space: pre-wrap; /* css-3 */ + white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + word-wrap: break-word; /* Internet Explorer 5.5+ */ +} + pre { font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; display:block; background-color: #f5f5f5; color: #000000; - border: 1px solid #aaaaaa; - margin-bottom: 0.3em; +/* border: 1px solid #aaaaaa; */ + margin-bottom: 1em; padding:.5em 1em; white-space: pre-wrap; /* css-3 */ white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ @@ -759,15 +850,28 @@ pre { white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ font-size: 0.9em; + border-style:none; + box-shadow: 0 2px 5px #AAAAAA inset; + -moz-box-shadow: 0 2px 5px #AAAAAA inset; + -webkit-box-shadow: 0 2px 5px #AAAAAA inset; + -o-box-shadow: 0 2px 5px #AAAAAA inset; +} + +body.pdf pre { + border: 1px solid #AAAAAA; + box-shadow: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + -o-box-shadow: none; } + pre .replaceable, pre .keycap { } code { font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; -/* white-space: nowrap;*/ white-space: pre-wrap; word-wrap: break-word; font-weight:bold; @@ -782,6 +886,12 @@ code { word-wrap: break-word; /* Internet Explorer 5.5+ */ } +code.email { + font-weight: normal; + font-family: "liberation sans", "Myriad ", "Bitstream Vera Sans", "Lucida Grande", "Luxi Sans", "Trebuchet MS", helvetica, verdana, arial, sans-serif; + +} + /*Notifications*/ div.warning:before { content:url(../images/warning.png); @@ -800,8 +910,8 @@ div.important:before { div.warning, div.note, div.important { color: black; - margin: 0em; - padding: 0em; + margin: 0px; + padding: 0px; background: none; background-color: white; margin-bottom: 1em; @@ -809,26 +919,26 @@ div.warning, div.note, div.important { page-break-inside: avoid; } -div.warning h2, div.note h2,div.important h2 { - margin: 0em; - padding: 0em; +div.admonition_header p { + margin: 0px; + padding: 0px; color: #eeeeec; padding-top: 0px; padding-bottom: 0px; height: 1.4em; line-height: 1.4em; - font-size: 1.4em; + font-size: 17px; display:inline; } div.admonition_header { clear: both; - margin: 0em; - padding: 0em; - margin-top: -3.3em; + margin: 0px; + padding: 0px; + margin-top: -40px; padding-left: 58px; - line-height: 1.0em; - font-size: 1.0em; + line-height: 1.0px; + font-size: 1.0px; } div.warning div.admonition_header { @@ -849,16 +959,16 @@ div.important div.admonition_header { div.warning p, div.warning div.para, div.note p, div.note div.para, div.important p, div.important div.para { - padding: 0em; - margin: 0em; + padding: 0px; + margin: 0px; } div.admonition { border: none; border-left: 1px solid #aaaaaa; border-right: 1px solid #aaaaaa; - padding:0em; - margin:0em; + padding:0px; + margin:0px; padding-top: 1.5em; padding-bottom: 1em; padding-left: 2em; @@ -874,7 +984,7 @@ div.admonition { display:block; height:45px; padding-bottom:1em; - margin:0em; + margin:0px; } #title a.left{ @@ -885,7 +995,7 @@ div.admonition { #title a.left img{ border:none; float:left; - margin:0em; + margin:0px; margin-top:.7em; } @@ -896,7 +1006,7 @@ div.admonition { #title a.right img { border:none; float:right; - margin:0em; + margin:0px; margin-top:.7em; } @@ -906,12 +1016,16 @@ div.table { } table { - border:1px solid #6c614b; + border: 1px solid #444; width:100%; border-collapse:collapse; + table-layout: fixed; + word-wrap: break-word; } -table.simplelist, .calloutlist table { +table.blockquote, +table.simplelist, +.calloutlist table { border-style: none; } @@ -930,27 +1044,35 @@ table tr.even td { background-color:#f5f5f5; } +tr:nth-child(even) { + background-color: #eeeeee; + +} + + table th p:first-child, table td p:first-child, table li p:first-child, table th div.para:first-child, table td div.para:first-child, table li div.para:first-child { - margin-top:0em; - padding-top:0em; + margin-top:0px; + padding-top:0px; display:inline; } th, td { border-style:none; vertical-align: top; - border: 1px solid #000; +/* border: 1px solid #000; */ } -.simplelist th, .simplelist td { +.blockquote td, +.simplelist th, +.simplelist td { border: none; } table table td { border-bottom:1px dotted #aaa; background-color:white; - padding:.6em 0em; + padding:.6em 0px; } table table { @@ -1003,7 +1125,7 @@ th.dbkey { span.book { margin-top:4em; display:block; - font-size:11pt; + font-size: 11pt; } span.book a{ @@ -1011,13 +1133,34 @@ span.book a{ } span.chapter { display:block; - margin-top:0.5em; } table.simplelist td, .calloutlist table td { border-style: none; } + +table.lt-4-cols.lt-7-rows td { + border: none; +} +/*to simplify layout*/ + + +table.lt-4-cols.gt-14-rows tr:nth-child(odd) { + background-color: #fafafa; +} +/* to keep simple but stripe rows */ + + +.gt-8-cols td { + border-left: 1px solid #ccc; +} + +.gt-8-cols td:first-child { + border-left: 0; +} +/* to apply vertical lines to differentiate columns*/ + /*Breadcrumbs*/ #breadcrumbs ul li.first:before { content:" "; @@ -1049,12 +1192,21 @@ table.simplelist td, .calloutlist table td { color:#333; } +dl { + margin-top: 0px; + margin-left: 28px; +} + +.toc dl { + margin-left: 10px; +} + /*index*/ .glossary h3, .index h3 { - font-size: 2em; + font-size: 20px; color:#aaa; - margin:0em; + margin:0px; } .indexdiv { @@ -1071,7 +1223,7 @@ table.simplelist td, .calloutlist table td { .index dl dl dt { color:#777; font-weight:normal; - padding-top:0em; + padding-top:0px; } .index dl dl dt:before { @@ -1081,21 +1233,23 @@ table.simplelist td, .calloutlist table td { /*changes*/ .footnote { - font-size: .7em; - margin:0em; - color:#222; + font-size: 10px; + margin: 0px; + color: #222; +} + +.footnotes { + margin-bottom: 60px; } table .footnote { } sup { - color:#999; - margin:0em; - padding:0em; - line-height: .4em; - font-size: 1em; - padding-left:0em; + margin:0px; + padding:0px; + font-size: 10px; + padding-left:0px; } .footnote { @@ -1103,11 +1257,27 @@ sup { } .footnote sup { - color:#e3dcc0; - position:absolute; + color: black; left: .4em; } +.footnote a:link, +.footnote a:visited { + text-decoration:none; + border: none; +} + +.footnote .para sup { +/* position:absolute; */ + vertical-align:text-bottom; +} + +a.footnote { + padding-right: 0.5em; + text-decoration:none; + border: none; +} + .footnote sup a:link, .footnote sup a:visited { color:#92917d; @@ -1119,11 +1289,11 @@ sup { } .footnote p,.footnote div.para { - padding-left:2em; + padding-left:1em; } .footnote a:link, -.footnote a:visited { +.footnote a:visited before{ color:#00537c; } @@ -1131,18 +1301,51 @@ sup { } /**/ +.pdf-break { + page-break-before: always; +} + +div.legalnotice { + page-break-before: always; +} + +div.abstract { + page-break-before: always; +/* page-break-after: always;*/ +} + div.chapter { - margin-top:3em; - page-break-inside: avoid; + page-break-before: always; } -div.preface { + +div.titlepage { page-break-inside: avoid; + page-break-after: avoid; +} + +div.preface, div.part { + page-break-before: always; +} + +div.appendix { + page-break-before: always; } div.section { - margin-top:1em; page-break-inside: auto; + page-break-before: auto; + page-break-after: auto; +} + + +dt.varlistentry { + page-break-inside: avoid; + page-break-after: avoid; +} + +dd { + page-break-before: avoid; } div.note .replaceable, @@ -1154,9 +1357,9 @@ div.warning .keycap { } -ul li p:last-child, ul li div.para:last-child { - margin-bottom:0em; - padding-bottom:0em; +ul li p:last-child, ul li para:last-child { + margin-bottom:0px; + padding-bottom:0px; } /*document navigation*/ @@ -1168,21 +1371,29 @@ ul li p:last-child, ul li div.para:last-child { .docnav { list-style:none; - margin:0em; - padding:0em; + margin:0px; + padding:0px; position:relative; width:100%; padding-bottom:2em; padding-top:1em; + height:2.5em; + line-height:2.5em; +/* border-top:1px dotted #ccc; + background-color: rgba(240, 240, 240, 0.9); +-webkitbox-shadow: 0px .15em .5em rgba(0,0,0,0.2); + -moz-box-shadow: 0px .15em .5em rgba(0,0,0,0.2); + box-shadow: 0px .15em .5em rgba(0,0,0,0.2); +*/ } .docnav li { list-style:none; - margin:0em; - padding:0em; + margin:0px; + padding:0px; display:inline; - font-size:.8em; + font-size: 14px; } .docnav li:before { @@ -1191,13 +1402,20 @@ ul li p:last-child, ul li div.para:last-child { .docnav li.previous, .docnav li.next { position:absolute; - top:1em; + top:1.5em; } .docnav li.up, .docnav li.home { - margin:0em 1.5em; + margin:0px 1.5em; +} + +.docnav.top li.home { + color: #336699; + font-size: 22pt; + font-weight: bold; } + .docnav li.previous { left:0px; text-align:left; @@ -1209,8 +1427,8 @@ ul li p:last-child, ul li div.para:last-child { } .docnav li.previous strong, .docnav li.next strong { - height:22px; - display:block; + height: 17px; + display: block; } .docnav { @@ -1219,34 +1437,30 @@ ul li p:last-child, ul li div.para:last-child { } .docnav li.next a strong { - background: url(../images/stock-go-forward.png) top right no-repeat; + background: url(../images/stock-go-forward.png) right 120% no-repeat; padding-top:3px; padding-bottom:4px; padding-right:28px; - font-size:1.2em; } .docnav li.previous a strong { - background: url(../images/stock-go-back.png) top left no-repeat; + background: url(../images/stock-go-back.png) left 120% no-repeat; padding-top:3px; padding-bottom:4px; padding-left:28px; padding-right:0.5em; - font-size:1.2em; } .docnav li.home a strong { background: url(../images/stock-home.png) top left no-repeat; padding:5px; padding-left:28px; - font-size:1.2em; } .docnav li.up a strong { background: url(../images/stock-go-up.png) top left no-repeat; padding:5px; padding-left:28px; - font-size:1.2em; } .docnav a:link, .docnav a:visited { @@ -1258,7 +1472,7 @@ ul li p:last-child, ul li div.para:last-child { } .docnav a { - max-width: 10em; + max-width: 10px; overflow:hidden; } @@ -1277,25 +1491,25 @@ ul.docnav { /* Reports */ .reports ul { list-style:none; - margin:0em; - padding:0em; + margin:0px; + padding:0px; } .reports li{ - margin:0em; - padding:0em; + margin:0px; + padding:0px; } .reports li.odd { background-color: #eeeeee; - margin:0em; - padding:0em; + margin:0px; + padding:0px; } .reports dl { display:inline; - margin:0em; - padding:0em; + margin:0px; + padding:0px; float:right; margin-right: 17em; margin-top:-1.3em; @@ -1303,21 +1517,21 @@ ul.docnav { .reports dt { display:inline; - margin:0em; - padding:0em; + margin:0px; + padding:0px; } .reports dd { display:inline; - margin:0em; - padding:0em; + margin:0px; + padding:0px; padding-right:.5em; } .reports h2, .reports h3{ display:inline; padding-right:.5em; - font-size:10pt; + font-size: 14px; font-weight:normal; } @@ -1326,16 +1540,16 @@ ul.docnav { float:right; width:16em; background:#c00 url(../images/shine.png) top left repeat-x; - margin:0em; + margin:0px; margin-top:-1.3em; - padding:0em; + padding:0px; border:none; } /*uniform*/ body.results, body.reports { max-width:57em ; - padding:0em; + padding:0px; } /*Progress Bar*/ @@ -1365,25 +1579,25 @@ div.progress span.fuzzy { .results ul { list-style:none; - margin:0em; - padding:0em; + margin:0px; + padding:0px; } .results li{ - margin:0em; - padding:0em; + margin:0px; + padding:0px; } .results li.odd { background-color: #eeeeee; - margin:0em; - padding:0em; + margin:0px; + padding:0px; } .results dl { display:inline; - margin:0em; - padding:0em; + margin:0px; + padding:0px; float:right; margin-right: 17em; margin-top:-1.3em; @@ -1391,21 +1605,21 @@ div.progress span.fuzzy { .results dt { display:inline; - margin:0em; - padding:0em; + margin:0px; + padding:0px; } .results dd { display:inline; - margin:0em; - padding:0em; + margin:0px; + padding:0px; padding-right:.5em; } .results h2, .results h3 { display:inline; padding-right:.5em; - font-size:10pt; + font-size: 14px; font-weight:normal; } @@ -1414,9 +1628,9 @@ div.progress span.fuzzy { float:right; width:16em; background:#c00 url(../images/shine.png) top left repeat-x; - margin:0em; + margin:0px; margin-top:-1.3em; - padding:0em; + padding:0px; border:none; } @@ -1444,7 +1658,7 @@ pre { background-color: transparent; margin-top: 1em; margin-bottom: 1em; - font-size: 1.4em; + font-size: 20px; font-weight: bold; text-align: center; } @@ -1491,15 +1705,15 @@ dl:after { } .toc dd { - padding-bottom: 0em; + padding-bottom: 0px; margin-bottom: 1em; padding-left: 1.3em; - margin-left: 0em; + margin-left: 0px; } div.toc > dl > dt { - padding-bottom: 0em; - margin-bottom: 0em; + padding-bottom: 0px; + margin-bottom: 0px; margin-top: 1em; } @@ -1513,16 +1727,23 @@ div.toc > dl > dt { } .calloutlist img, .callout { - padding: 0em; - margin: 0em; + padding: 0px; + margin: 0px; width: 12pt; display: inline; vertical-align: middle; } +li.step > a:first-child { + display: block; +} + .stepalternatives { list-style-image: none; - list-style-type: none; + list-style-type: upper-alpha; +} +.task { +/* page-break-inside: avoid; */ } diff --git a/SystemTap_Beginners_Guide/Common_Content/css/default.css b/SystemTap_Beginners_Guide/Common_Content/css/default.css index bf38ebb5..7fb9ada5 100644 --- a/SystemTap_Beginners_Guide/Common_Content/css/default.css +++ b/SystemTap_Beginners_Guide/Common_Content/css/default.css @@ -1,3 +1,4 @@ @import url("common.css"); @import url("overrides.css"); @import url("lang.css"); + diff --git a/SystemTap_Beginners_Guide/Common_Content/images/title_logo.png b/SystemTap_Beginners_Guide/Common_Content/images/title_logo.png index 97dea57dbc6828ec60a4112ed3b9a3ab1803b212..75fd5035cfdce90fe730d6b93b658e4c8ed68746 100644 GIT binary patch literal 40059 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 VR~4-GL+1bh002ovPDHLkV1nZv*#rOp literal 8178 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 + + gradientTransform="matrix(0.8697037,0.5377184,-0.05088559,2.0041935,-132.86485,4079.057)" /> + gradientTransform="matrix(0.8697037,0.5377184,-0.05088559,2.0041935,-132.86485,4082.0622)" /> + gradientTransform="matrix(0.8697037,0.5377184,-0.05088559,2.0041935,-132.86485,4085.0674)" /> + gradientTransform="matrix(0.8697037,0.5377184,-0.05088559,2.0041935,-132.86485,4088.0726)" /> + gradientTransform="matrix(0.9919329,0,0,0.9919329,-57.187787,-52.294514)" /> + gradientUnits="userSpaceOnUse" + gradientTransform="translate(-58.623593,-52.746766)" /> + gradientTransform="translate(-58.623593,-49.548418)" /> + id="feGaussianBlur6428" /> + id="feGaussianBlur6544" /> + id="feGaussianBlur6598" /> + id="feBlend6628" /> + style="fill:url(#linearGradient3216);fill-opacity:1" /> + style="fill:none;stroke:url(#linearGradient3607);stroke-width:0.731525;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + style="fill:none;stroke:url(#linearGradient3609);stroke-width:0.731525;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + style="fill:none;stroke:url(#linearGradient3611);stroke-width:0.731525;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + style="fill:none;stroke:url(#linearGradient3613);stroke-width:0.731525;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> + style="fill:url(#radialGradient3615);fill-opacity:1" /> + style="font-size:58.77133179px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:url(#linearGradient3224);fill-opacity:1;stroke:none;font-family:Utopia;-inkscape-font-specification:Utopia" /> BOOK PUBLISHING TOOL + style="font-size:58.77133179px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;opacity:0.49038463;fill:url(#linearGradient6356);fill-opacity:1;stroke:none;filter:url(#filter6426);font-family:Utopia;-inkscape-font-specification:Utopia" /> diff --git a/SystemTap_Beginners_Guide/SystemTap_Beginners_Guide-Preface.html b/SystemTap_Beginners_Guide/SystemTap_Beginners_Guide-Preface.html index e501a97f..330d84d1 100644 --- a/SystemTap_Beginners_Guide/SystemTap_Beginners_Guide-Preface.html +++ b/SystemTap_Beginners_Guide/SystemTap_Beginners_Guide-Preface.html @@ -1,29 +1,28 @@ - -Preface

Product SiteDocumentation Site

Preface

+Preface

Product SiteDocumentation Site

Preface

-

1. Document Conventions

+

1. Document Conventions

This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information.
- In PDF and paper editions, this manual uses typefaces drawn from the Liberation Fonts set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later includes the Liberation Fonts set by default. -

1.1. Typographic Conventions

+ In PDF and paper editions, this manual uses typefaces drawn from the Liberation Fonts set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later include the Liberation Fonts set by default. +

1.1. Typographic Conventions

Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows.
Mono-spaced Bold
- Used to highlight system input, including shell commands, file names and paths. Also used to highlight keycaps and key combinations. For example: + Used to highlight system input, including shell commands, file names and paths. Also used to highlight keys and key combinations. For example:
To see the contents of the file my_next_bestselling_novel in your current working directory, enter the cat my_next_bestselling_novel command at the shell prompt and press Enter to execute the command.
- The above includes a file name, a shell command and a keycap, all presented in mono-spaced bold and all distinguishable thanks to context. + The above includes a file name, a shell command and a key, all presented in mono-spaced bold and all distinguishable thanks to context.
- Key combinations can be distinguished from keycaps by the hyphen connecting each part of a key combination. For example: + Key combinations can be distinguished from an individual key by the plus sign that connects each part of a key combination. For example:
Press Enter to execute the command.
- Press Ctrl+Alt+F2 to switch to the first virtual terminal. Press Ctrl+Alt+F1 to return to your X-Windows session. + Press Ctrl+Alt+F2 to switch to a virtual terminal.
- The first paragraph highlights the particular keycap to press. The second highlights two key combinations (each a set of three keycaps with each set pressed simultaneously). + The first example highlights a particular key to press. The second example highlights a key combination: a set of three keys pressed simultaneously.
If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in mono-spaced bold. For example:
@@ -31,9 +30,9 @@
Proportional Bold
- This denotes words or phrases encountered on a system, including application names; dialog box text; labeled buttons; check-box and radio button labels; menu titles and sub-menu titles. For example: + This denotes words or phrases encountered on a system, including application names; dialog-box text; labeled buttons; check-box and radio-button labels; menu titles and submenu titles. For example:
- Choose System → Preferences → Mouse from the main menu bar to launch Mouse Preferences. In the Buttons tab, click the Left-handed mouse check box and click Close to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand). + Choose System → Preferences → Mouse from the main menu bar to launch Mouse Preferences. In the Buttons tab, select the Left-handed mouse check box and click Close to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand).
To insert a special character into a gedit file, choose Applications → Accessories → Character Map from the main menu bar. Next, choose Search → Find… from the Character Map menu bar, type the name of the character in the Search field and click Next. The character you sought will be highlighted in the Character Table. Double-click this highlighted character to place it in the Text to copy field and then click the Copy button. Now switch back to your document and choose Edit → Paste from the gedit menu bar.
@@ -49,19 +48,19 @@
To see the version of a currently installed package, use the rpm -q package command. It will return a result as follows: package-version-release.
- Note the words in bold italics above — username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system. + Note the words in bold italics above: username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system.
Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example:
Publican is a DocBook publishing system. -

1.2. Pull-quote Conventions

+

1.2. Pull-quote Conventions

Terminal output and source code listings are set off visually from the surrounding text.
Output sent to a terminal is set in mono-spaced roman and presented thus:
books        Desktop   documentation  drafts  mss    photos   stuff  svn
 books_tests  Desktop1  downloads      images  notes  scripts  svgs
Source-code listings are also set in mono-spaced roman but add syntax highlighting as follows: -
package org.jboss.book.jca.ex1;
+		
package org.jboss.book.jca.ex1;
 
 import javax.naming.InitialContext;
 
@@ -79,12 +78,12 @@ books_tests  Desktop1  downloads      images  notes  scripts  svgs
out.println("Echo.echo('Hello') = " + echo.echo("Hello")); } -}

1.3. Notes and Warnings

+}

1.3. Notes and Warnings

Finally, we use three visual styles to draw attention to information that might otherwise be overlooked. -

Note

+

Note

Notes are tips, shortcuts or alternative approaches to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier. -

Important

- Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring a box labeled 'Important' will not cause data loss but may cause irritation and frustration. -

Warning

+

Important

+ Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring a box labeled “Important” will not cause data loss but may cause irritation and frustration. +

Warning

Warnings should not be ignored. Ignoring warnings will most likely cause data loss. -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/appe-Publican-Revision_History.html b/SystemTap_Beginners_Guide/appe-Publican-Revision_History.html index 9ebdef75..11f69e2a 100644 --- a/SystemTap_Beginners_Guide/appe-Publican-Revision_History.html +++ b/SystemTap_Beginners_Guide/appe-Publican-Revision_History.html @@ -1,7 +1,6 @@ - -Appendix A. Revision History

Product SiteDocumentation Site

Revision History

-
Revision History
Revision 2.0-1Mon Jul 20 2009Don Domingo
+Appendix A. Revision History

Product SiteDocumentation Site

Appendix A. Revision History

+
Revision History
Revision 2.0-1Mon Jul 20 2009Don Domingo
includes 5.4 minor updates and additional script "dropwatch.stp"
Revision 1.0-1Wed Jun 17 2009Don Domingo
@@ -9,4 +8,4 @@
-
+ \ No newline at end of file diff --git a/SystemTap_Beginners_Guide/arrayoperators.html b/SystemTap_Beginners_Guide/arrayoperators.html index f0813d89..4af1f3af 100644 --- a/SystemTap_Beginners_Guide/arrayoperators.html +++ b/SystemTap_Beginners_Guide/arrayoperators.html @@ -1,13 +1,12 @@ - -3.5. Array Operations in SystemTap

Product SiteDocumentation Site

3.5. Array Operations in SystemTap

+3.5. Array Operations in SystemTap

Product SiteDocumentation Site

3.5. Array Operations in SystemTap

This section enumerates some of the most commonly used array operations in SystemTap. -

3.5.1. Assigning an Associated Value

+

3.5.1. Assigning an Associated Value

Use = to set an associated value to indexed unique pairs, as in:
array_name[index_expression] = value
Example 3.13, “Basic Array Statements” shows a very basic example of how to set an explicit associated value to a unique key. You can also use a handler function as both your index_expression and value. For example, you can use arrays to set a timestamp as the associated value to a process name (which you wish to use as your unique key), as in: -
Example 3.14. Associating Timestamps to Process Names
foo[tid()] = gettimeofday_s()

- Whenever an event invokes the statement in Example 3.14, “Associating Timestamps to Process Names”, SystemTap returns the appropriate tid() value (i.e. the ID of a thread, which is then used as the unique key). At the same time, SystemTap also uses the function gettimeofday_s() to set the corresponding timestamp as the associated value to the unique key defined by the function tid(). This creates an array composed of key pairs containing thread IDs and timestamps. +

Example 3.14. Associating Timestamps to Process Names

foo[tid()] = gettimeofday_s()

+ Whenever an event invokes the statement in Example 3.14, “Associating Timestamps to Process Names”, SystemTap returns the appropriate tid() value (that is, the ID of a thread, which is then used as the unique key). At the same time, SystemTap also uses the function gettimeofday_s() to set the corresponding timestamp as the associated value to the unique key defined by the function tid(). This creates an array composed of key pairs containing thread IDs and timestamps.
In this same example, if tid() returns a value that is already defined in the array foo, the operator will discard the original associated value to it, and replace it with the current timestamp from gettimeofday_s(). -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/arrayops-aggregates.html b/SystemTap_Beginners_Guide/arrayops-aggregates.html index 1cbb3c3d..f685e2e8 100644 --- a/SystemTap_Beginners_Guide/arrayops-aggregates.html +++ b/SystemTap_Beginners_Guide/arrayops-aggregates.html @@ -1,32 +1,31 @@ - -3.5.7. Computing for Statistical Aggregates

Product SiteDocumentation Site

3.5.7. Computing for Statistical Aggregates

- Statistical aggregates are used to collect statistics on numerical values where it is important to accumulate new data quickly and in large volume (i.e. storing only aggregated stream statistics). Statistical aggregates can be used in global variables or as elements in an array. -
+3.5.7. Computing for Statistical Aggregates

Product SiteDocumentation Site

3.5.7. Computing for Statistical Aggregates

+ Statistical aggregates are used to collect statistics on numerical values where it is important to accumulate new data quickly and in large volume (that is, storing only aggregated stream statistics). Statistical aggregates can be used in global variables or as elements in an array. +
To add value to a statistical aggregate, use the operator <<< value. -
Example 3.21. stat-aggregates.stp
global reads
+		

Example 3.21. stat-aggregates.stp

global reads
 probe vfs.read
 {
-  reads[execname()] <<< count
-}

- In Example 3.21, “stat-aggregates.stp”, the operator <<< count stores the amount returned by count to to the associated value of the corresponding execname() in the reads array. Remember, these values are stored; they are not added to the associated values of each unique key, nor are they used to replace the current associated values. In a manner of speaking, think of it as having each unique key (execname()) having multiple associated values, accumulating with each probe handler run. -

Note

+ reads[execname()] <<< $count +}

+ In Example 3.21, “stat-aggregates.stp”, the operator <<< $count stores the amount returned by $count to the associated value of the corresponding execname() in the reads array. Remember, these values are stored; they are not added to the associated values of each unique key, nor are they used to replace the current associated values. In a manner of speaking, think of it as having each unique key (execname()) having multiple associated values, accumulating with each probe handler run. +

Note

In the context of Example 3.21, “stat-aggregates.stp”, count returns the amount of data read by the returned execname() to the virtual file system. -
+
To extract data collected by statistical aggregates, use the syntax format @extractor(variable/array index expression). extractor can be any of the following integer extractors: -
count
+
count
Returns the number of all values stored into the variable/array index expression. Given the sample probe in Example 3.21, “stat-aggregates.stp”, the expression @count(reads[execname()]) will return how many values are stored in each unique key in array reads. -
sum
+
sum
Returns the sum of all values stored into the variable/array index expression. Again, given sample probe in Example 3.21, “stat-aggregates.stp”, the expression @sum(reads[execname()]) will return the total of all values stored in each unique key in array reads. -
min
+
min
Returns the smallest among all the values stored in the variable/array index expression. -
max
+
max
Returns the largest among all the values stored in the variable/array index expression. -
avg
+
avg
Returns the average of all values stored in the variable/array index expression.
When using statistical aggregates, you can also build array constructs that use multiple index expressions (to a maximum of 5). This is helpful in capturing additional contextual information during a probe. For example: -
Example 3.22. Multiple Array Indexes
global reads
+		

Example 3.22. Multiple Array Indexes

global reads
 probe vfs.read
 {
   reads[execname(),pid()] <<< 1
@@ -38,5 +37,5 @@ probe timer.s(3)
 }

In Example 3.22, “Multiple Array Indexes”, the first probe tracks how many times each process performs a VFS read. What makes this different from earlier examples is that this array associates a performed read to both a process name and its corresponding process ID.
- The second probe in Example 3.22, “Multiple Array Indexes” demonstrates how to process and print the information collected by the array reads. Note how the foreach statement uses the same number of variables (i.e. var1 and var2) contained in the first instance of the array reads from the first probe. -
+ The second probe in Example 3.22, “Multiple Array Indexes” demonstrates how to process and print the information collected by the array reads. Note how the foreach statement uses the same number of variables (that is, var1 and var2) contained in the first instance of the array reads from the first probe. +
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/arrayops-conditionals.html b/SystemTap_Beginners_Guide/arrayops-conditionals.html index 703d07bb..f2ee382b 100644 --- a/SystemTap_Beginners_Guide/arrayops-conditionals.html +++ b/SystemTap_Beginners_Guide/arrayops-conditionals.html @@ -1,8 +1,7 @@ - -3.5.6. Using Arrays in Conditional Statements

Product SiteDocumentation Site

3.5.6. Using Arrays in Conditional Statements

+3.5.6. Using Arrays in Conditional Statements

Product SiteDocumentation Site

3.5.6. Using Arrays in Conditional Statements

You can also use associative arrays in if statements. This is useful if you want to execute a subroutine once a value in the array matches a certain condition. Consider the following example: -
Example 3.19. vfsreads-print-if-1kb.stp
global reads
+		

Example 3.19. vfsreads-print-if-1kb.stp

global reads
 probe vfs.read
 {
   reads[execname()] ++
@@ -18,11 +17,11 @@ probe timer.s(3)
       printf("%s : %dB \n", count, reads[count])
 }

Every three seconds, Example 3.19, “vfsreads-print-if-1kb.stp” prints out a list of all processes, along with how many times each process performed a VFS read. If the associated value of a process name is equal or greater than 1024, the if statement in the script converts and prints it out in kB. -
Testing for Membership
+
Testing for Membership
You can also test whether a specific unique key is a member of an array. Further, membership in an array can be used in if statements, as in:
if([index_expression] in array_name) statement
To illustrate this, consider the following example: -
Example 3.20. vfsreads-stop-on-stapio2.stp
global reads
+		

Example 3.20. vfsreads-stop-on-stapio2.stp

global reads
 
 probe vfs.read
 {
@@ -40,4 +39,4 @@ probe timer.s(3)
   }
 }

The if(["stapio"] in reads) statement instructs the script to print stapio read detected, exiting once the unique key stapio is added to the array reads. -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/arrayops-deleting.html b/SystemTap_Beginners_Guide/arrayops-deleting.html index bae00dd8..cb57788e 100644 --- a/SystemTap_Beginners_Guide/arrayops-deleting.html +++ b/SystemTap_Beginners_Guide/arrayops-deleting.html @@ -1,10 +1,9 @@ - -3.5.5. Clearing/Deleting Arrays and Array Elements

Product SiteDocumentation Site

3.5.5. Clearing/Deleting Arrays and Array Elements

+3.5.5. Clearing/Deleting Arrays and Array Elements

Product SiteDocumentation Site

3.5.5. Clearing/Deleting Arrays and Array Elements

Sometimes, you may need to clear the associated values in array elements, or reset an entire array for re-use in another probe. Example 3.17, “cumulative-vfsreads.stp” in Section 3.5.4, “Processing Multiple Elements in an Array” allows you to track how the number of VFS reads per process grows over time, but it does not show you the number of VFS reads each process makes per 3-second period. -
+
To do that, you will need to clear the values accumulated by the array. You can accomplish this using the delete operator to delete elements in an array, or an entire array. Consider the following example: -
Example 3.18. noncumulative-vfsreads.stp
global reads
+		

Example 3.18. noncumulative-vfsreads.stp

global reads
 probe vfs.read
 {
   reads[execname()] ++
@@ -16,7 +15,7 @@ probe timer.s(3)
   delete reads
 }

In Example 3.18, “noncumulative-vfsreads.stp”, the second probe prints the number of VFS reads each process made within the probed 3-second period only. The delete reads statement clears the reads array within the probe. -

Note

+

Note

You can have multiple array operations within the same probe. Using the examples from Section 3.5.4, “Processing Multiple Elements in an Array” and Section 3.5.5, “Clearing/Deleting Arrays and Array Elements” , you can track the number of VFS reads each process makes per 3-second period and tally the cumulative VFS reads of those same processes. Consider the following example:
global reads, totalreads
 
@@ -41,4 +40,4 @@ probe end
     printf("%s : %d \n", total, totalreads[total])
 }
In this example, the arrays reads and totalreads track the same information, and are printed out in a similar fashion. The only difference here is that reads is cleared every 3-second period, whereas totalreads keeps growing. -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/arrayops-foreach.html b/SystemTap_Beginners_Guide/arrayops-foreach.html index fa4d6c7f..030b4f25 100644 --- a/SystemTap_Beginners_Guide/arrayops-foreach.html +++ b/SystemTap_Beginners_Guide/arrayops-foreach.html @@ -1,10 +1,9 @@ - -3.5.4. Processing Multiple Elements in an Array

Product SiteDocumentation Site

3.5.4. Processing Multiple Elements in an Array

+3.5.4. Processing Multiple Elements in an Array

Product SiteDocumentation Site

3.5.4. Processing Multiple Elements in an Array

Once you've collected enough information in an array, you will need to retrieve and process all elements in that array to make it useful. Consider Example 3.16, “vfsreads.stp”: the script collects information about how many VFS reads each process performs, but does not specify what to do with it. The obvious means for making Example 3.16, “vfsreads.stp” useful is to print the key pairs in the array reads, but how? -
+
The best way to process all key pairs in an array (as an iteration) is to use the foreach statement. Consider the following example: -
Example 3.17. cumulative-vfsreads.stp
global reads
+		

Example 3.17. cumulative-vfsreads.stp

global reads
 probe vfs.read
 {
   reads[execname()] ++
@@ -17,7 +16,7 @@ probe timer.s(3)
 			In the second probe of Example 3.17, “cumulative-vfsreads.stp”, the foreach statement uses the variable count to reference each iteration of a unique key in the array reads. The reads[count] array statement in the same probe retrieves the associated value of each unique key.
 		
Given what we know about the first probe in Example 3.17, “cumulative-vfsreads.stp”, the script prints VFS-read statistics every 3 seconds, displaying names of processes that performed a VFS-read along with a corresponding VFS-read count. -
+
Now, remember that the foreach statement in Example 3.17, “cumulative-vfsreads.stp” prints all iterations of process names in the array, and in no particular order. You can instruct the script to process the iterations in a particular order by using + (ascending) or - (descending). In addition, you can also limit the number of iterations the script needs to process with the limit value option.
For example, consider the following replacement probe: @@ -26,5 +25,5 @@ probe timer.s(3) foreach (count in reads- limit 10) printf("%s : %d \n", count, reads[count]) }
- This foreach statement instructs the script to process the elements in the array reads in descending order (of associated value). The limit 10 option instructs the foreach to only process the first ten iterations (i.e. print the first 10, starting with the highest value). -
+ This foreach statement instructs the script to process the elements in the array reads in descending order (of associated value). The limit 10 option instructs the foreach to only process the first ten iterations (that is, print the first 10, starting with the highest value). +
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/arrayops-increment.html b/SystemTap_Beginners_Guide/arrayops-increment.html index 7aabc6e0..4f7e69cd 100644 --- a/SystemTap_Beginners_Guide/arrayops-increment.html +++ b/SystemTap_Beginners_Guide/arrayops-increment.html @@ -1,12 +1,11 @@ - -3.5.3. Incrementing Associated Values

Product SiteDocumentation Site

3.5.3. Incrementing Associated Values

+3.5.3. Incrementing Associated Values

Product SiteDocumentation Site

3.5.3. Incrementing Associated Values

Use ++ to increment the associated value of a unique key in an array, as in:
array_name[index_expression] ++
Again, you can also use a handler function for your index_expression. For example, if you wanted to tally how many times a specific process performed a read to the virtual file system (using the event vfs.read), you can use the following probe: -
Example 3.16. vfsreads.stp
probe vfs.read
+		

Example 3.16. vfsreads.stp

probe vfs.read
 {
   reads[execname()] ++
 }

- In Example 3.16, “vfsreads.stp”, the first time that the probe returns the process name gnome-terminal (i.e. the first time gnome-terminal performs a VFS read), that process name is set as the unique key gnome-terminal with an associated value of 1. The next time that the probe returns the process name gnome-terminal, SystemTap increments the associated value of gnome-terminal by 1. SystemTap performs this operation for all process names as the probe returns them. -
+ In Example 3.16, “vfsreads.stp”, the first time that the probe returns the process name gnome-terminal (that is, the first time gnome-terminal performs a VFS read), that process name is set as the unique key gnome-terminal with an associated value of 1. The next time that the probe returns the process name gnome-terminal, SystemTap increments the associated value of gnome-terminal by 1. SystemTap performs this operation for all process names as the probe returns them. +
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/arrayops-readvalues.html b/SystemTap_Beginners_Guide/arrayops-readvalues.html index b983a457..195e7b9e 100644 --- a/SystemTap_Beginners_Guide/arrayops-readvalues.html +++ b/SystemTap_Beginners_Guide/arrayops-readvalues.html @@ -1,11 +1,10 @@ - -3.5.2. Reading Values From Arrays

Product SiteDocumentation Site

3.5.2. Reading Values From Arrays

+3.5.2. Reading Values From Arrays

Product SiteDocumentation Site

3.5.2. Reading Values From Arrays

You can also read values from an array the same way you would read the value of a variable. To do so, include the array_name[index_expression] statement as an element in a mathematical expression. For example: -
Example 3.15. Using Array Values in Simple Computations
delta = gettimeofday_s() - foo[tid()]

+

Example 3.15. Using Array Values in Simple Computations

delta = gettimeofday_s() - foo[tid()]

This example assumes that the array foo was built using the construct in Example 3.14, “Associating Timestamps to Process Names” (from Section 3.5.1, “Assigning an Associated Value”). This sets a timestamp that will serve as a reference point, to be used in computing for delta.
The construct in Example 3.15, “Using Array Values in Simple Computations” computes a value for the variable delta by subtracting the associated value of the key tid() from the current gettimeofday_s(). The construct does this by reading the value of tid() from the array. This particular construct is useful for determining the time between two events, such as the start and completion of a read operation. -

Note

+

Note

If the index_expression cannot find the unique key, it returns a value of 0 (for numerical operations, such as Example 3.15, “Using Array Values in Simple Computations”) or a null/empty string value (for string operations) by default. -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/associativearrays.html b/SystemTap_Beginners_Guide/associativearrays.html index 51200fe3..f8210054 100644 --- a/SystemTap_Beginners_Guide/associativearrays.html +++ b/SystemTap_Beginners_Guide/associativearrays.html @@ -1,15 +1,14 @@ - -3.4. Associative Arrays

Product SiteDocumentation Site

3.4. Associative Arrays

+3.4. Associative Arrays

Product SiteDocumentation Site

3.4. Associative Arrays

SystemTap also supports the use of associative arrays. While an ordinary variable represents a single value, associative arrays can represent a collection of values. Simply put, an associative array is a collection of unique keys; each key in the array has a value associated with it. -
+
Since associative arrays are normally processed in multiple probes (as we will demonstrate later), they should be declared as global variables in the SystemTap script. The syntax for accessing an element in an associative array is similar to that of awk, and is as follows: -
array_name[index_expression]
- Here, the array_name is any arbitrary name the array uses. The index_expression is used to refer to a specific unique key in the array. To illustrate, let us try to build an array named foo that specifies the ages of three people (i.e. the unique keys): tom, dick, and harry. To assign them the ages (i.e. associated values) of 23, 24, and 25 respectively, we'd use the following array statements: -
Example 3.13. Basic Array Statements
foo["tom"] = 23
+	
array_name[index_expression]
+ Here, the array_name is any arbitrary name the array uses. The index_expression is used to refer to a specific unique key in the array. To illustrate, let us try to build an array named foo that specifies the ages of three people tom, dick, and harry (which are unique keys). To assign them the ages (associated values) of 23, 24, and 25 respectively, we'd use the following array statements: +

Example 3.13. Basic Array Statements

foo["tom"] = 23
 foo["dick"] = 24
 foo["harry"] = 25

- You can specify up to nine index expressons in an array statement, each one delimited by a comma (,). This is useful if you wish to have a key that contains multiple pieces of information. The following line from disktop.stp uses 5 elements for the key: process ID, executable name, user ID, parent process ID, and string "W". It associates the value of devname with that key. -
device[pid(),execname(),uid(),ppid(),"W"] = devname

Important

+ You can specify up to nine index expressions in an array statement, each one delimited by a comma (,). This is useful if you wish to have a key that contains multiple pieces of information. The following line from disktop.stp uses 5 elements for the key: process ID, executable name, user ID, parent process ID, and string "W". It associates the value of devname with that key. +
device[pid(),execname(),uid(),ppid(),"W"] = devname

Important

All associate arrays must be declared as global, regardless of whether the associate array is used in one or multiple probes. -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/commandlineargssect.html b/SystemTap_Beginners_Guide/commandlineargssect.html index 5ccc635c..7c2ddc2a 100644 --- a/SystemTap_Beginners_Guide/commandlineargssect.html +++ b/SystemTap_Beginners_Guide/commandlineargssect.html @@ -1,8 +1,7 @@ - -3.3.4. Command-Line Arguments

Product SiteDocumentation Site

3.3.4. Command-Line Arguments

- You can also allow a SystemTap script to accept simple command-line arguments using a $ or @ immediately followed by the number of the argument on the command line. Use $ if you are expecting the user to enter an integer as a command-line argument, and @ if you are expecting a string. -
Example 3.12. commandlineargs.stp
probe kernel.function(@1) { }
+3.3.4. Command-Line Arguments

Product SiteDocumentation Site

3.3.4. Command-Line Arguments

+ A SystemTap script can also accept simple command-line arguments using a $ or @ immediately followed by the number of the argument on the command line. Use $ if you are expecting the user to enter an integer as a command-line argument, and @ if you are expecting a string. +

Example 3.12. commandlineargs.stp

probe kernel.function(@1) { }
 probe kernel.function(@1).return { }

Example 3.12, “commandlineargs.stp” is similar to Example 3.1, “wildcards.stp”, except that it allows you to pass the kernel function to be probed as a command-line argument (as in stap commandlineargs.stp kernel function). You can also specify the script to accept multiple command-line arguments, noting them as @1, @2, and so on, in the order they are entered by the user. -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/cross-compiling.html b/SystemTap_Beginners_Guide/cross-compiling.html index 15be5fef..039f3bbd 100644 --- a/SystemTap_Beginners_Guide/cross-compiling.html +++ b/SystemTap_Beginners_Guide/cross-compiling.html @@ -1,59 +1,48 @@ - -2.2. Generating Instrumentation for Other Computers

Product SiteDocumentation Site

2.2. Generating Instrumentation for Other Computers

+2.2. Generating Instrumentation for Other Computers

Product SiteDocumentation Site

2.2. Generating Instrumentation for Other Computers

When users run a SystemTap script, SystemTap builds a kernel module out of that script. SystemTap then loads the module into the kernel, allowing it to extract the specified data directly from the kernel (refer to Procedure 3.1, “SystemTap Session” in Section 3.1, “Architecture” for more information).
- Normally, however, SystemTap scripts can only be run on systems where SystemTap is deployed (as in Section 2.1, “Installation and Setup”). This could mean that if you want to run SystemTap on ten systems, you would need to deploy SystemTap on all those systems. In some cases, this may be neither feasible nor desired. For instance, corporate policy may prohibit an administrator from installing RPMs that provide compilers or debug information on specific machines, which will prevent the deployment of SystemTap. + Normally, however, SystemTap scripts can only be run on systems where SystemTap is deployed (as in Section 2.1, “Installation and Setup”). This could mean that if you want to run SystemTap on ten systems, you would need to deploy SystemTap on all those systems. In some cases, this may be neither feasible nor desired. For instance, corporate policy may prohibit an administrator from installing RPM packages that provide compilers or debug information on specific machines, and thus prevent the deployment of SystemTap. To work around this problem, SystemTap allows you to use cross-instrumentation.
- To work around this, you can resort to cross-instrumentation. Cross-instrumentation is the process of generating SystemTap instrumentation module from a SystemTap script on one computer to be used on another computer. This process offers the following benefits: -
  • + Cross-instrumentation is the process of generating SystemTap instrumentation module from a SystemTap script on one computer to be used on another computer. This process offers the following benefits: +
    • The kernel information packages for various machines can be installed on a single host machine.
    • - Each target machine only needs one RPM to be installed to use the generated SystemTap instrumentation module: systemtap-runtime. -

    Note

    - For the sake of simplicity, we will be using the following terms throughout this section: -
    • - - - instrumentation module — the kernel module built from a SystemTap script; i.e. the SystemTap module is built on the host system, and will be loaded on the target kernel of target system. -
    • - - - host system — the system on which you compile the instrumentation modules (from SystemTap scripts), to be loaded on target systems. -
    • - - - target system — the system for which you are building the instrumentation module (from SystemTap scripts). -
    • - - - target kernel — the kernel of the target system. This is the kernel on which you wish to load/run the instrumentation module. -
    Procedure 2.1. Configuring a Host System and Target Systems
    1. - Install the systemtap-runtime RPM on each target system. + Each target machine only needs one RPM package to be installed in order to use the generated SystemTap instrumentation module: the systemtap-runtime package. +
+ For the sake of simplicity, the following terms are used throughout this section: +
  • + Instrumentation module — the kernel module built from a SystemTap script. The SystemTap module is built on the host system, and will be loaded on the target kernel of target system. +
  • + Host system — the system on which you compile the instrumentation modules from SystemTap scripts in order to load them on target systems. +
  • + Target system — the system for which you are building the instrumentation modules from SystemTap scripts. +
  • + Target kernel — the kernel of the target system. This is the kernel on which you intend to load or run the instrumentation module. +
+ To configure a host system and target systems, complete the following steps: +
  1. + Install the systemtap-runtime package on each target system.
  2. - Determine the kernel running on each target system by running uname -r on each target system. + Determine the kernel running on each target system by running the uname -r command on each of these systems.
  3. Install SystemTap on the host system. You will be building the instrumentation module for the target systems on the host system. For instructions on how to install SystemTap, refer to Section 2.1.1, “Installing SystemTap”.
  4. - Using the target kernel version determined earlier, install the target kernel and related RPMs on the host system by the method described in Section 2.1.2, “Installing Required Kernel Information RPMs”. If multiple target systems use different target kernels, you will need to repeat this step for each different kernel used on the target systems. + Using the target kernel version determined earlier, install the target kernel and related RPM packages on the host system as described in Section 2.1.2, “Installing Required Kernel Information Packages Manually”. If multiple target systems use different target kernels, repeat this step for each different kernel used on the target systems.
- After performing Procedure 2.1, “Configuring a Host System and Target Systems”, you can now build the instrumentation module (for any target system) on the host system. + After completing these steps, you can now build the instrumentation module (for any target system) on the host system.
To build the instrumentation module, run the following command on the host system (be sure to specify the appropriate values): -
stap -r kernel_version script -m module_name
- Here, kernel_version refers to the version of the target kernel (the output of uname -r on the target machine), script refers to the script to be converted into an instrumentation module, and module_name is the desired name of the instrumentation module. -

Note

- To determine the architecture notation of a running kernel, run uname -m. -
- Once the the instrumentation module is compiled, copy it to the target system and then load it using: -
staprun module_name.ko
+
stap -r kernel_version script -m module_name
+ Here, kernel_version refers to the version of the target kernel (the output of the uname -r command on the target machine), script refers to the script to be converted into the instrumentation module, and module_name is the desired name of the instrumentation module. +

Note

+ To determine the architecture notation of a running kernel, you can run the following command: +
uname -m
+ Once the instrumentation module is compiled, copy it to the target system and then load it using: +
staprun module_name.ko
For example, to create the instrumentation module simple.ko from a SystemTap script named simple.stp for the target kernel 2.6.18-92.1.10.el5 (on x86_64 architecture), use the following command: -
- stap -r 2.6.18-92.1.10.el5 -e 'probe vfs.read {exit()}' -m simple -
- This will create a module named simple.ko. To use the instrumentation module simple.ko, copy it to the target system and run the following command (on the target system): -
- staprun simple.ko -

Important

+
stap -r 2.6.18-92.1.10.el5 -e 'probe vfs.read {exit()}' -m simple
+ This creates a module named simple.ko. To use this instrumentation module, copy it to the target system and run the following command (on the target system): +
staprun simple.ko

Important

The host system must be the same architecture and running the same distribution of Linux as the target system in order for the built instrumentation module to work. -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/errors.html b/SystemTap_Beginners_Guide/errors.html index 3c1bf16b..3e1f2b57 100644 --- a/SystemTap_Beginners_Guide/errors.html +++ b/SystemTap_Beginners_Guide/errors.html @@ -1,56 +1,52 @@ - -Chapter 6. Understanding SystemTap Errors

Product SiteDocumentation Site

Chapter 6. Understanding SystemTap Errors

+Chapter 6. Understanding SystemTap Errors

Product SiteDocumentation Site

Chapter 6. Understanding SystemTap Errors

This chapter explains the most common errors you may encounter while using SystemTap. -

6.1. Parse and Semantic Errors

- These types of errors occur while SystemTap attempts to parse and translate the script into C, prior to being converted into a kernel module. For example type errors result from operations that assign invalid values to variables or arrays. -
parse error: expected foo, saw bar
- The script contains a grammatical/typographical error. SystemTap detected type of construct that is incorrect, given the context of the probe. -
- The following invalid SystemTap script is missing its probe handlers: +

6.1. Parse and Semantic Errors

+ Parse and semantic errors occur while SystemTap attempts to parse and translate the script into C, before converting it into a kernel module. For example, type errors result from operations that assign invalid values to variables or arrays. +

parse error: expected foo, saw bar

+ The script contains a grammatical or typographical error. SystemTap detected the type of the construct that is incorrect, given the context of the probe. +
+ For example, the following invalid SystemTap script is missing its probe handlers:
probe vfs.read
 probe vfs.write
 
- It results in the following error message showing that the parser was expecting something other than the probe keyword in column 1 of line 2: + An attempt to run this SystemTap script fails with the following error message showing that the parser expects something other than the probe keyword in column 1 of line 2:
parse error: expected one of '. , ( ? ! { = +='
 	saw: keyword at perror.stp:2:1
 1 parse error(s).
-
parse error: embedded code in unprivileged script
- The script contains unsafe embedded C code (blocks of code surrounded by %{ %}. SystemTap allows you to embed C code in a script, which is useful if there are no tapsets to suit your purposes. However, embedded C constructs are not safe; as such, SystemTap warns you with this error if such constructs appear in the script. -
- If you are sure of the safety of any similar constructs in the script and are member of stapdev group (or have root privileges), run the script in "guru" mode by using the option -g (i.e. stap -g script). -
semantic error: type mismatch for identifier 'foo' ... string vs. long
- The function foo in the script used the wrong type (i.e. %s or %d). This error will present itself in Example 6.1, “error-variable.stp”, because the function execname() returns a string the format specifier should be a %s, not %d. -
Example 6.1. error-variable.stp
probe syscall.open
+		

parse error: embedded code in unprivileged script

+ The script contains unsafe embedded C code, that is, blocks of code surrounded by %{ and %}. SystemTap allows you to embed C code in a script, which is useful if there are no tapsets to suit your purposes. However, embedded C constructs are not safe and SystemTap reports this error to warn you if such constructs appear in the script. +
+ If you are sure that any similar constructs in the script are safe and you are a member of the stapdev group (or have root privileges), run the script in "guru" mode by using the -g option: +
stap -g script

semantic error: type mismatch for identifier 'foo' ... string vs. long

+ The function foo in the script used the wrong type (such as %s or %d). In the following example, the format specifier should be %s and not %d, because the execname() function returns a string: +
probe syscall.open
 {
   printf ("%d(%d) open\n", execname(), pid())
-}

semantic error: unresolved type for identifier 'foo'
- The identifier (e.g. a variable) was used, but no type (integer or string) could be determined. This occurs, for instance, if you use a variable in a printf statement while the script never assigns a value to the variable. -
semantic error: Expecting symbol or array index expression
- SystemTap could not assign a value to a variable or to a location in an array. The destination for the assignment is not a valid destination. The following example code would generate this error: -
- -
probe begin { printf("x") = 1 }
-
-
while searching for arity N function, semantic error: unresolved function call
- A function call or array index expression in the script used an invalid number of arguments/parameters. In SystemTap arity can either refer to the number of indices for an array, or the number of parameters to a function. -
semantic error: array locals not supported, missing global declaration?
- The script used an array operation without declaring the array as a global variable (global variables can be declared after their use in SystemTap scripts). Similar messages appear if an array is used, but with inconsistent arities. -
semantic error: variable ’foo’ modified during ’foreach’ iteration
- The array foo is being modifed (being assigned to or deleted from) within an active foreach loop. This error also displays if an operation within the script performs a function call within the foreach loop. -
semantic error: probe point mismatch at position N, while resolving probe point foo
- SystemTap did not understand what the event or SystemTap function foo refers to. This usually means that SystemTap could not find a match for foo in the tapset library. The N refers to the line and column of the error. -
semantic error: no match for probe point, while resolving probe point foo
- The events/handler function foo could not be resolved altogether, for a variety of reasons. This error occurs when the script contains the event kernel.function("blah"), and blah does not exist. In some cases, the error could also mean the script contains an invalid kernel file name or source line number. -
semantic error: unresolved target-symbol expression
- A handler in the script references a target variable, but the value of the variable could not be resolved. This error could also mean that a handler is referencing a target variable that is not valid in the context when it was referenced. This may be a result of compiler optimization of the generated code. -
semantic error: libdwfl failure
- There was a problem processing the debugging information. In most cases, this error results from the installation of a kernel-debuginfo RPM whose version does not match the probed kernel exactly. The installed kernel-debuginfo RPM itself may have some consistency/correctness problems. -
semantic error: cannot find foo debuginfo
- SystemTap could not find a suitable kernel-debuginfo at all. -
+}

semantic error: unresolved type for identifier 'foo'

+ The identifier (variable) was used, but no type (integer or string) could be determined. This occurs, for instance, if you use a variable in a printf statement while the script never assigns a value to the variable. +

semantic error: Expecting symbol or array index expression

+ SystemTap could not assign a value to a variable or to a location in an array. The destination for the assignment is not a valid destination. The following example code would generate this error: +
probe begin { printf("x") = 1 }
+

while searching for arity N function, semantic error: unresolved function call

+ A function call or array index expression in the script used an invalid number of arguments or parameters. In SystemTap, arity can either refer to the number of indices for an array, or the number of parameters to a function. +

semantic error: array locals not supported, missing global declaration?

+ The script used an array operation without declaring the array as a global variable (global variables can be declared after their use in SystemTap scripts). Similar messages appear if an array is used, but with inconsistent arities. +

semantic error: variable 'foo' modified during 'foreach' iteration

+ The array foo is being modified (being assigned to or deleted from) within an active foreach loop. This error also displays if an operation within the script performs a function call within the foreach loop. +

semantic error: probe point mismatch at position N, while resolving probe point foo

+ SystemTap did not understand what the event or SystemTap function foo refers to. This usually means that SystemTap could not find a match for foo in the tapset library. N refers to the line and column of the error. +

semantic error: no match for probe point, while resolving probe point foo

+ SystemTap could not resolve the events or handler function foo for a variety of reasons. This error occurs when the script contains the event kernel.function("something"), and something does not exist. In some cases, the error could also mean the script contains an invalid kernel file name or source line number. +

semantic error: unresolved target-symbol expression

+ A handler in the script references a target variable, but the value of the variable could not be resolved. This error could also mean that a handler is referencing a target variable that is not valid in the context when it was referenced. This may be a result of compiler optimization of the generated code. +

semantic error: libdwfl failure

+ There was a problem processing the debugging information. In most cases, this error results from the installation of a kernel-debuginfo package whose version does not match the probed kernel exactly. The installed kernel-debuginfo package itself may have some consistency or correctness problems. +

semantic error: cannot find foo debuginfo

+ SystemTap could not find a suitable kernel-debuginfo package. +
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/futexcontentionsect.html b/SystemTap_Beginners_Guide/futexcontentionsect.html index f0985fe0..995b78aa 100644 --- a/SystemTap_Beginners_Guide/futexcontentionsect.html +++ b/SystemTap_Beginners_Guide/futexcontentionsect.html @@ -1,12 +1,11 @@ - -5.4. Identifying Contended User-Space Locks

Product SiteDocumentation Site

5.4. Identifying Contended User-Space Locks

+5.4. Identifying Contended User-Space Locks

Product SiteDocumentation Site

5.4. Identifying Contended User-Space Locks

This section describes how to identify contended user-space locks throughout the system within a specific time period. The ability to identify contended user-space locks can help you investigate poor program performance that you suspect may be caused by futex contentions. -
+
Simply put, futex contention occurs when multiple processes are trying to access the same lock variable at the same time. This can result in a poor performance because the lock serializes execution; one process obtains the lock while the other processes must wait for the lock variable to become available again. -
+
The futexes.stp script probes the futex system call to show lock contention. -
futexes.stp
+
futexes.stp
#! /usr/bin/env stap
 
@@ -36,7 +35,7 @@ probe end {
 
futexes.stp needs to be manually stopped; upon exit, it prints the following information: -

\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/handlerconditionalstatements.html b/SystemTap_Beginners_Guide/handlerconditionalstatements.html index 8b76efa1..c9dc8ad7 100644 --- a/SystemTap_Beginners_Guide/handlerconditionalstatements.html +++ b/SystemTap_Beginners_Guide/handlerconditionalstatements.html @@ -1,17 +1,16 @@ - -3.3.3. Conditional Statements

Product SiteDocumentation Site

3.3.3. Conditional Statements

- In some cases, the output of a SystemTap script may be too big. To address this, you need to further refine the script's logic in order to delimit the output into something more relevant or useful to your probe. +3.3.3. Conditional Statements

Product SiteDocumentation Site

3.3.3. Conditional Statements

+ In some cases, the output of a SystemTap script may be too large. To address this, you need to further refine the script's logic in order to delimit the output into something more relevant or useful to your probe.
- You can do this by using conditionals in handlers. SystemTap accepts the following types of conditional statements: -
If/Else Statements
+ Do this by using conditionals in handlers. SystemTap accepts the following types of conditional statements: +
If/Else Statements
Format:
if (condition)
   statement1
 else
   statement2
The statement1 is executed if the condition expression is non-zero. The statement2 is executed if the condition expression is zero. The else clause (else statement2) is optional. Both statement1 and statement2 can be statement blocks. -
Example 3.11. ifelse.stp
global countread, countnonread
+					

Example 3.11. ifelse.stp

global countread, countnonread
 probe kernel.function("vfs_read"),kernel.function("vfs_write")
 {
   if (probefunc()=="vfs_read")
@@ -25,25 +24,25 @@ probe end
   printf("VFS reads total %d\n VFS writes total %d\n", countread, countnonread)
 }

Example 3.11, “ifelse.stp” is a script that counts how many virtual file system reads (vfs_read) and writes (vfs_write) the system performs within a 5-second span. When run, the script increments the value of the variable countread by 1 if the name of the function it probed matches vfs_read (as noted by the condition if (probefunc()=="vfs_read")); otherwise, it increments countnonread (else {countnonread ++}). -
While Loops
+
While Loops
Format:
while (condition)
   statement
So long as condition is non-zero the block of statements in statement are executed. The statement is often a statement block and it must change a value so condition will eventually be zero. -
For Loops
+
For Loops
Format:
for (initialization; conditional; increment) statement
- The for loop is simply shorthand for a while loop. The following is the equivalent while loop: + The for loop is shorthand for a while loop. The following is the equivalent while loop:
initialization
 while (conditional) {
    statement
    increment
-}
Conditional Operators
- Aside from == ("is equal to"), you can also use the following operators in your conditional statements: -
>=
+}
Conditional Operators
+ Aside from == ("is equal to"), following operators can also be used in conditional statements: +
>=
Greater than or equal to -
<=
+
<=
Less than or equal to -
!=
+
!=
Is not equal to -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/index.html b/SystemTap_Beginners_Guide/index.html index 0f229db4..ef35868d 100644 --- a/SystemTap_Beginners_Guide/index.html +++ b/SystemTap_Beginners_Guide/index.html @@ -1,11 +1,10 @@ - -SystemTap Beginners Guide

Product SiteDocumentation Site

Systemtap 2.2

SystemTap Beginners Guide

Edition 2.2

- Logo +SystemTap Beginners Guide

Product SiteDocumentation Site

  • SystemTap Beginners Guide
SystemTap 2.6

SystemTap Beginners Guide

Introduction to SystemTap

Edition 2.6

+ Logo

Red Hat, Inc. -

Don Domingo

Engineering Services and Operations Content Services

William Cohen

Engineering Services and Operations Performance Tools

Legal Notice

+

Don Domingo

Engineering Services and Operations Content Services

William Cohen

Engineering Services and Operations Performance Tools

Legal Notice

This documentation is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. @@ -13,4 +12,6 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
For more details see the file COPYING in the source distribution of Linux. -

Preface
1. Document Conventions
1.1. Typographic Conventions
1.2. Pull-quote Conventions
1.3. Notes and Warnings
2. We Need Feedback!
1. Introduction
1.1. Documentation Goals
1.2. SystemTap Capabilities
2. Using SystemTap
2.1. Installation and Setup
2.1.1. Installing SystemTap
2.1.2. Installing Required Kernel Information RPMs
2.1.3. Initial Testing
2.2. Generating Instrumentation for Other Computers
2.3. Running SystemTap Scripts
2.3.1. SystemTap Flight Recorder Mode
3. Understanding How SystemTap Works
3.1. Architecture
3.2. SystemTap Scripts
3.2.1. Event
3.2.2. Systemtap Handler/Body
3.3. Basic SystemTap Handler Constructs
3.3.1. Variables
3.3.2. Target Variables
3.3.3. Conditional Statements
3.3.4. Command-Line Arguments
3.4. Associative Arrays
3.5. Array Operations in SystemTap
3.5.1. Assigning an Associated Value
3.5.2. Reading Values From Arrays
3.5.3. Incrementing Associated Values
3.5.4. Processing Multiple Elements in an Array
3.5.5. Clearing/Deleting Arrays and Array Elements
3.5.6. Using Arrays in Conditional Statements
3.5.7. Computing for Statistical Aggregates
3.6. Tapsets
4. User-Space Probing
4.1. User-Space Events
4.2. Accessing User-Space Target Variables
4.3. User-Space Stack Backtraces
5. Useful SystemTap Scripts
5.1. Network
5.1.1. Network Profiling
5.1.2. Tracing Functions Called in Network Socket Code
5.1.3. Monitoring Incoming TCP Connections
5.1.4. Monitoring TCP Packets
5.1.5. Monitoring Network Packets Drops in Kernel
5.2. Disk
5.2.1. Summarizing Disk Read/Write Traffic
5.2.2. Tracking I/O Time For Each File Read or Write
5.2.3. Track Cumulative IO
5.2.4. I/O Monitoring (By Device)
5.2.5. Monitoring Reads and Writes to a File
5.2.6. Monitoring Changes to File Attributes
5.2.7. Periodically Print I/O Block Time
5.3. Profiling
5.3.1. Counting Function Calls Made
5.3.2. Call Graph Tracing
5.3.3. Determining Time Spent in Kernel and User Space
5.3.4. Monitoring Polling Applications
5.3.5. Tracking Most Frequently Used System Calls
5.3.6. Tracking System Call Volume Per Process
5.4. Identifying Contended User-Space Locks
6. Understanding SystemTap Errors
6.1. Parse and Semantic Errors
6.2. Run Time Errors and Warnings
7. References
A. Revision History
Index
+

Abstract

+ This guide provides basic instructions on how to use SystemTap to monitor different subsystems of a Linux system in finer detail. +
Preface
1. Document Conventions
1.1. Typographic Conventions
1.2. Pull-quote Conventions
1.3. Notes and Warnings
2. We Need Feedback!
1. Introduction
1.1. Documentation Goals
1.2. SystemTap Capabilities
1.3. Limitations of SystemTap
2. Using SystemTap
2.1. Installation and Setup
2.1.1. Installing SystemTap
2.1.2. Installing Required Kernel Information Packages Manually
2.1.3. Initial Testing
2.2. Generating Instrumentation for Other Computers
2.3. Running SystemTap Scripts
2.3.1. SystemTap Flight Recorder Mode
3. Understanding How SystemTap Works
3.1. Architecture
3.2. SystemTap Scripts
3.2.1. Event
3.2.2. SystemTap Handler/Body
3.3. Basic SystemTap Handler Constructs
3.3.1. Variables
3.3.2. Target Variables
3.3.3. Conditional Statements
3.3.4. Command-Line Arguments
3.4. Associative Arrays
3.5. Array Operations in SystemTap
3.5.1. Assigning an Associated Value
3.5.2. Reading Values From Arrays
3.5.3. Incrementing Associated Values
3.5.4. Processing Multiple Elements in an Array
3.5.5. Clearing/Deleting Arrays and Array Elements
3.5.6. Using Arrays in Conditional Statements
3.5.7. Computing for Statistical Aggregates
3.6. Tapsets
4. User-space Probing
4.1. User-Space Events
4.2. Accessing User-Space Target Variables
4.3. User-Space Stack Backtraces
5. Useful SystemTap Scripts
5.1. Network
5.1.1. Network Profiling
5.1.2. Tracing Functions Called in Network Socket Code
5.1.3. Monitoring Incoming TCP Connections
5.1.4. Monitoring TCP Packets
5.1.5. Monitoring Network Packets Drops in Kernel
5.2. Disk
5.2.1. Summarizing Disk Read/Write Traffic
5.2.2. Tracking I/O Time For Each File Read or Write
5.2.3. Track Cumulative IO
5.2.4. I/O Monitoring (By Device)
5.2.5. Monitoring Reads and Writes to a File
5.2.6. Monitoring Changes to File Attributes
5.2.7. Periodically Print I/O Block Time
5.3. Profiling
5.3.1. Counting Function Calls Made
5.3.2. Call Graph Tracing
5.3.3. Determining Time Spent in Kernel and User Space
5.3.4. Monitoring Polling Applications
5.3.5. Tracking Most Frequently Used System Calls
5.3.6. Tracking System Call Volume Per Process
5.4. Identifying Contended User-Space Locks
6. Understanding SystemTap Errors
6.1. Parse and Semantic Errors
6.2. Runtime Errors and Warnings
7. References
A. Revision History
Index
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/inodewatch2sect.html b/SystemTap_Beginners_Guide/inodewatch2sect.html index 10665c28..e15bc29b 100644 --- a/SystemTap_Beginners_Guide/inodewatch2sect.html +++ b/SystemTap_Beginners_Guide/inodewatch2sect.html @@ -1,8 +1,7 @@ - -5.2.6. Monitoring Changes to File Attributes

Product SiteDocumentation Site

5.2.6. Monitoring Changes to File Attributes

+5.2.6. Monitoring Changes to File Attributes

Product SiteDocumentation Site

5.2.6. Monitoring Changes to File Attributes

This section describes how to monitor if any processes are changing the attributes of a targeted file, in real time. -
inodewatch2.stp
+
inodewatch2.stp
#! /usr/bin/env stap
 
@@ -25,5 +24,5 @@ probe kernel.function("setattr_copy")!,
 		Like inodewatch.stp from Section 5.2.5, “Monitoring Reads and Writes to a File”, inodewatch2.stp takes the targeted file's device number (in integer format) and inode number as arguments. For more information on how to retrieve this information, refer to Section 5.2.5, “Monitoring Reads and Writes to a File”.
 	
The output for inodewatch2.stp is similar to that of inodewatch.stp, except that inodewatch2.stp also contains the attribute changes to the monitored file, as well as the ID of the user responsible (uid()). Example 5.11, “inodewatch2.stp Sample Output” shows the output of inodewatch2.stp while monitoring /home/joe/bigfile when user joe executes chmod 777 /home/joe/bigfile and chmod 666 /home/joe/bigfile. -
Example 5.11. inodewatch2.stp Sample Output
chmod(17448) inode_setattr 0x800005/6011835 100777 500
-chmod(17449) inode_setattr 0x800005/6011835 100666 500

+

Example 5.11. inodewatch2.stp Sample Output

chmod(17448) inode_setattr 0x800005/6011835 100777 500
+chmod(17449) inode_setattr 0x800005/6011835 100666 500

\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/inodewatchsect.html b/SystemTap_Beginners_Guide/inodewatchsect.html index 422758f7..6345b266 100644 --- a/SystemTap_Beginners_Guide/inodewatchsect.html +++ b/SystemTap_Beginners_Guide/inodewatchsect.html @@ -1,8 +1,7 @@ - -5.2.5. Monitoring Reads and Writes to a File

Product SiteDocumentation Site

5.2.5. Monitoring Reads and Writes to a File

+5.2.5. Monitoring Reads and Writes to a File

Product SiteDocumentation Site

5.2.5. Monitoring Reads and Writes to a File

This section describes how to monitor reads from and writes to a file in real time. -
inodewatch.stp
+
inodewatch.stp
#! /usr/bin/env stap
 
@@ -17,19 +16,19 @@ probe vfs.write, vfs.read
 
inodewatch.stp takes the following information about the file as arguments on the command line: -
  • +
    • The file's major device number.
    • The file's minor device number.
    • The file's inode number. -
    +
To get this information, use stat -c '%D %i' filename, where filename is an absolute path.
- For instance: if you wish to monitor /etc/crontab, run stat -c '%D %i' /etc/crontab first. This gives the following output: -
805 1078319
+ For instance: to monitor /etc/crontab, run stat -c '%D %i' /etc/crontab first. This gives the following output: +
805 1078319
805 is the base-16 (hexadecimal) device number. The lower two digits are the minor device number and the upper digits are the major number. 1078319 is the inode number. To start monitoring /etc/crontab, run stap inodewatch.stp 0x8 0x05 1078319 (The 0x prefixes indicate base-16 values.
- The output of this command contains the name and ID of any process performing a read/write, the function it is performing (i.e. vfs_read or vfs_write), the device number (in hex format), and the inode number. Example 5.10, “inodewatch.stp Sample Output” contains the output of stap inodewatch.stp 0x8 0x05 1078319 (when cat /etc/crontab is executed while the script is running) : -
Example 5.10. inodewatch.stp Sample Output
cat(16437) vfs_read 0x800005/1078319
-cat(16437) vfs_read 0x800005/1078319

+ The output of this command contains the name and ID of any process performing a read/write, the function it is performing (that is, vfs_read or vfs_write), the device number (in hex format), and the inode number. Example 5.10, “inodewatch.stp Sample Output” contains the output of stap inodewatch.stp 0x8 0x05 1078319 (when cat /etc/crontab is executed while the script is running) : +

Example 5.10. inodewatch.stp Sample Output

cat(16437) vfs_read 0x800005/1078319
+cat(16437) vfs_read 0x800005/1078319

\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/intro-systemtap-vs-others.html b/SystemTap_Beginners_Guide/intro-systemtap-vs-others.html index b7cc8a66..653f9585 100644 --- a/SystemTap_Beginners_Guide/intro-systemtap-vs-others.html +++ b/SystemTap_Beginners_Guide/intro-systemtap-vs-others.html @@ -1,11 +1,8 @@ - -1.2. SystemTap Capabilities

Product SiteDocumentation Site

1.2. SystemTap Capabilities

  • - Flexibility: SystemTap's framework allows users to develop simple scripts for investigating and monitoring a wide variety of kernel functions, system calls, and other events that occur in kernel-space. With this, SystemTap is not so much a tool as it is a system that allows you to develop your own kernel-specific forensic and monitoring tools. +1.2. SystemTap Capabilities

    Product SiteDocumentation Site

    1.2. SystemTap Capabilities

    • + Flexibility: SystemTap's framework allows users to develop simple scripts for investigating and monitoring a wide variety of kernel functions, system calls, and other events that occur in kernel space. As a result, SystemTap is not so much a tool as it is a system that allows you to develop your own kernel-specific forensic and monitoring tools.
    • - Ease-Of-Use: as mentioned earlier, SystemTap allows users to probe kernel-space events without having to resort to instrument, recompile, install, and reboot the kernel. + Ease of use: as mentioned earlier, SystemTap allows users to probe kernel-space events without having to resort to instrument, recompile, install, and reboot the kernel.
    - Most of the SystemTap scripts enumerated in Chapter 5, Useful SystemTap Scripts demonstrate system forensics and monitoring capabilities not natively available with other similar tools (such as top, oprofile, or ps). These scripts are provided to give readers extensive examples of the application of SystemTap, which in turn will educate them further on the capabilities they can employ when writing their own SystemTap scripts. -
    Limitations
    - The current iteration of SystemTap allows for a multitude of options when probing kernel-space events for a wide range of kernels. However, SystemTap's ability to probe user-space events is dependent on kernel support (the Utrace mechanism) that is unavailable in many kernels. Thus, only some kernel versions support user-space probing. At present, the developmental efforts of the SystemTap community are geared towards improving SystemTap's user-space probing capabilities. -
    + Most of the SystemTap scripts enumerated in Chapter 5, Useful SystemTap Scripts demonstrate system forensics and monitoring capabilities not natively available with other similar tools (such as top, oprofile, or ps). These scripts are provided to give readers extensive examples of the application of SystemTap and to educate them further on the capabilities they can employ when writing their own SystemTap scripts. +
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/introduction.html b/SystemTap_Beginners_Guide/introduction.html index 21d1c39d..7c47d443 100644 --- a/SystemTap_Beginners_Guide/introduction.html +++ b/SystemTap_Beginners_Guide/introduction.html @@ -1,17 +1,16 @@ - -Chapter 1. Introduction

Product SiteDocumentation Site

Chapter 1. Introduction

- SystemTap is a tracing and probing tool that allows users to study and monitor the activities of the computer system (particularly, the kernel) in fine detail. It provides information similar to the output of tools like netstat, ps, top, and iostat; however, SystemTap is designed to provide more filtering and analysis options for collected information. -

1.1. Documentation Goals

+Chapter 1. Introduction

Product SiteDocumentation Site

Chapter 1. Introduction

+ SystemTap is a tracing and probing tool that allows users to study and monitor the activities of the computer system (particularly, the kernel) in fine detail. It provides information similar to the output of tools like netstat, ps, top, and iostat, but is designed to provide more filtering and analysis options for collected information. +

1.1. Documentation Goals

SystemTap provides the infrastructure to monitor the running Linux kernel for detailed analysis. This can assist administrators and developers in identifying the underlying cause of a bug or performance problem.
- Without SystemTap, monitoring the activity of a running kernel would require a tedious instrument, recompile, install, and reboot sequence. SystemTap is designed to eliminate this, allowing users to gather the same information by simply running user-written SystemTap scripts. + Without SystemTap, monitoring the activity of a running kernel would require a tedious instrument, recompile, install, and reboot sequence. SystemTap is designed to eliminate this and allows users to gather the same information by running user-written SystemTap scripts.
- However, SystemTap was initially designed for users with intermediate to advanced knowledge of the kernel. This makes SystemTap less useful to administrators or developers with limited knowledge of and experience with the Linux kernel. Moreover, much of the existing SystemTap documentation is similarly aimed at knowledgeable and experienced users. This makes learning the tool similarly difficult. + SystemTap was initially designed for users with intermediate to advanced knowledge of the kernel. As a consequence, it is less useful to administrators or developers with limited knowledge of and experience with the Linux kernel. Moreover, much of the existing SystemTap documentation is aimed at knowledgeable and experienced users, which makes learning the tool similarly difficult.
- To lower these barriers the SystemTap Beginners Guide was written with the following goals: -
  • - To introduce users to SystemTap, familiarize them with its architecture, and provide setup instructions. + To lower these barriers, the SystemTap Beginners Guide was written with the following goals: +
    • + to introduce users to SystemTap, familiarize them with its architecture, and provide setup instructions;
    • - To provide pre-written SystemTap scripts for monitoring detailed activity in different components of the system, along with instructions on how to run them and analyze their output. -
+ to provide pre-written SystemTap scripts for monitoring detailed activity in different components of the system, along with instructions on how to run them and analyze their output. +
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/ioblktimesect.html b/SystemTap_Beginners_Guide/ioblktimesect.html index d830cce4..1b7b52a9 100644 --- a/SystemTap_Beginners_Guide/ioblktimesect.html +++ b/SystemTap_Beginners_Guide/ioblktimesect.html @@ -1,12 +1,11 @@ - -5.2.7. Periodically Print I/O Block Time

Product SiteDocumentation Site

5.2.7. Periodically Print I/O Block Time

+5.2.7. Periodically Print I/O Block Time

Product SiteDocumentation Site

5.2.7. Periodically Print I/O Block Time

This section describes how to track the amount of time each block I/O requests spends waiting for completion. This is useful in determining whether there are too many outstanding block I/O operations at any given time. -
ioblktime.stp
+
ioblktime.stp
#! /usr/bin/env stap
 
-global req_time, etimes
+global req_time%[25000], etimes
 
 probe ioblock.request
 {
@@ -45,10 +44,10 @@ probe timer.s(10), end {
 		ioblktime.stp computes the average waiting time for block I/O per device, and prints a list every 10 seconds. As always, you can revise this refresh rate by editing the specified value in probe timer.s(10), end {.
 	
In some cases, there can be too many outstanding block I/O operations, at which point the script can exceed the default number of MAXMAPENTRIES. MAXMAPENTRIES is the maximum number of rows in an array if the array size is not specified explicitly when declared. If the script exceeds the default MAXMAPENTRIES value of 2048, run the script again with the stap option -DMAXMAPENTRIES=10000. -
Example 5.12. ioblktime.stp Sample Output
    device  rw total (us)      count   avg (us)
+	

Example 5.12. ioblktime.stp Sample Output

    device  rw total (us)      count   avg (us)
        sda   W       9659          6       1609
       dm-0   W      20278          6       3379
       dm-0   R      20524          5       4104
        sda   R      19277          5       3855

Example 5.12, “ioblktime.stp Sample Output” displays the device name, operations performed (rw), total wait time of all operations (total(us)), number of operations (count), and average wait time for all those operations (avg (us)). The times tallied by the script are in microseconds. -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/iotimesect.html b/SystemTap_Beginners_Guide/iotimesect.html index 0d10d5f7..3b65d433 100644 --- a/SystemTap_Beginners_Guide/iotimesect.html +++ b/SystemTap_Beginners_Guide/iotimesect.html @@ -1,8 +1,7 @@ - -5.2.2. Tracking I/O Time For Each File Read or Write

Product SiteDocumentation Site

5.2.2. Tracking I/O Time For Each File Read or Write

- This section describes how to monitor the amount of time it takes for each process to read from or write to any file. This is useful if you wish to determine what files are slow to load on a given system. -
iotime.stp
+5.2.2. Tracking I/O Time For Each File Read or Write

Product SiteDocumentation Site

5.2.2. Tracking I/O Time For Each File Read or Write

+ This section describes how to monitor the amount of time it takes for each process to read from or write to any file. This is useful to determine what files are slow to load on a given system. +
iotime.stp
#! /usr/bin/env stap
 
@@ -91,9 +90,9 @@ probe syscall.close {
 
iotime.stp tracks each time a system call opens, closes, reads from, and writes to a file. For each file any system call accesses, iotime.stp counts the number of microseconds it takes for any reads or writes to finish and tracks the amount of data (in bytes) read from or written to the file. -
- iotime.stp also uses the local variable $count to track the amount of data (in bytes) that any system call attempts to read or write. Note that $return (as used in disktop.stp from Section 5.2.1, “Summarizing Disk Read/Write Traffic”) stores the actual amount of data read/written. $count can only be used on probes that track data reads or writes (e.g. syscall.read and syscall.write). -
Example 5.7. iotime.stp Sample Output
[...]
+	
+ iotime.stp also uses the local variable $count to track the amount of data (in bytes) that any system call attempts to read or write. Note that $return (as used in disktop.stp from Section 5.2.1, “Summarizing Disk Read/Write Traffic”) stores the actual amount of data read/written. $count can only be used on probes that track data reads or writes (that is, syscall.read and syscall.write). +

Example 5.7. iotime.stp Sample Output

[...]
 825946 3364 (NetworkManager) access /sys/class/net/eth0/carrier read: 8190 write: 0
 825955 3364 (NetworkManager) iotime /sys/class/net/eth0/carrier time: 9
 [...]
@@ -104,7 +103,7 @@ probe syscall.close {
 3973744 2886 (sendmail) iotime /proc/loadavg time: 11
 [...]

Example 5.7, “iotime.stp Sample Output” prints out the following data: -
  • +
    • A timestamp, in microseconds.
    • Process ID and process name. @@ -115,5 +114,5 @@ probe syscall.close {
    If a process was able to read or write any data, a pair of access and iotime lines should appear together. The access line's timestamp refers to the time that a given process started accessing a file; at the end of the line, it will show the amount of data read/written (in bytes). The iotime line will show the amount of time (in microseconds) that the process took in order to perform the read or write.
    - If an access line is not followed by an iotime line, it simply means that the process did not read or write any data. -
+ If an access line is not followed by an iotime line, it means that the process did not read or write any data. +
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/ix01.html b/SystemTap_Beginners_Guide/ix01.html index cbf6ab48..d2d6ce97 100644 --- a/SystemTap_Beginners_Guide/ix01.html +++ b/SystemTap_Beginners_Guide/ix01.html @@ -1,3 +1,2 @@ - -Index

Product SiteDocumentation Site

Index

Symbols

$count
sample usage
local variables, Tracking I/O Time For Each File Read or Write
$return
sample usage
local variables, Summarizing Disk Read/Write Traffic, Track Cumulative IO
@avg (integer extractor)
computing for statistical aggregates
array operations, Computing for Statistical Aggregates
@count (integer extractor)
computing for statistical aggregates
array operations, Computing for Statistical Aggregates
@max (integer extractor)
computing for statistical aggregates
array operations, Computing for Statistical Aggregates
@min (integer extractor)
computing for statistical aggregates
array operations, Computing for Statistical Aggregates
@sum (integer extractor)
computing for statistical aggregates
array operations, Computing for Statistical Aggregates

A

adding values to statistical aggregates
computing for statistical aggregates
array operations, Computing for Statistical Aggregates
advantages of cross-instrumentation, Generating Instrumentation for Other Computers
aggregate element not found
runtime errors/warnings
understainding SystemTap errors, Run Time Errors and Warnings
aggregates (statistical)
array operations, Computing for Statistical Aggregates
aggregation overflow
runtime errors/warnings
understainding SystemTap errors, Run Time Errors and Warnings
algebraic formulas using arrays
reading values from arrays
array operations, Reading Values From Arrays
architecture notation, determining, Generating Instrumentation for Other Computers
architecture of SystemTap, Architecture
array locals not supported
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
array operations
assigning associated values, Assigning an Associated Value
associating timestamps to process names, Assigning an Associated Value
associative arrays, Array Operations in SystemTap
clearing arrays/array elements, Clearing/Deleting Arrays and Array Elements
delete operator, Clearing/Deleting Arrays and Array Elements
multiple array operations within the same probe, Clearing/Deleting Arrays and Array Elements
virtual file system reads (non-cumulative), tallying, Clearing/Deleting Arrays and Array Elements
computing for statistical aggregates, Computing for Statistical Aggregates
@avg (integer extractor), Computing for Statistical Aggregates
@count (integer extractor), Computing for Statistical Aggregates
@max (integer extractor), Computing for Statistical Aggregates
@min (integer extractor), Computing for Statistical Aggregates
@sum (integer extractor), Computing for Statistical Aggregates
adding values to statistical aggregates, Computing for Statistical Aggregates
count (operator), Computing for Statistical Aggregates
extracting data collected by statistical aggregates, Computing for Statistical Aggregates
conditional statements, using arrays in, Using Arrays in Conditional Statements
testing for array membership, Using Arrays in Conditional Statements
deleting arrays and array elements, Clearing/Deleting Arrays and Array Elements
incrementing associated values, Incrementing Associated Values
tallying virtual file system reads (VFS reads), Incrementing Associated Values
multiple elements in an array, Processing Multiple Elements in an Array
processing multiple elements in an array, Processing Multiple Elements in an Array
cumulative virtual file system reads, tallying, Processing Multiple Elements in an Array
foreach, Processing Multiple Elements in an Array
iterations, processing elements in an array as, Processing Multiple Elements in an Array
limiting the output of foreach, Processing Multiple Elements in an Array
ordering the output of foreach, Processing Multiple Elements in an Array
reading values from arrays, Reading Values From Arrays
computing for timestamp deltas, Reading Values From Arrays
empty unique keys, Reading Values From Arrays
using arrays in simple computations, Reading Values From Arrays
arrays, Associative Arrays
(see also associative arrays)
assigning associated values
array operations, Assigning an Associated Value
associating timestamps to process names, Assigning an Associated Value
associating timestamps to process names
array operations, Assigning an Associated Value
associated values
introduction
arrays, Associative Arrays
associating timestamps to process names
assigning associated values
array operations, Assigning an Associated Value
associative arrays
introduction, Associative Arrays
associated values, Associative Arrays
example, Associative Arrays
index expression, Associative Arrays
key pairs, Associative Arrays
syntax, Associative Arrays
unique keys, Associative Arrays
asynchronous events
Events, Event

B

begin
Events, Event
building instrumentation modules from SystemTap scripts, Generating Instrumentation for Other Computers
building kernel modules from SystemTap scripts, Generating Instrumentation for Other Computers

C

call graph tracing
examples of SystemTap scripts, Call Graph Tracing
capabilities of SystemTap
Introduction, SystemTap Capabilities
changes to file attributes, monitoring
examples of SystemTap scripts, Monitoring Changes to File Attributes
clearing arrays/array elements
array operations, Clearing/Deleting Arrays and Array Elements
delete operator, Clearing/Deleting Arrays and Array Elements
multiple array operations within the same probe, Clearing/Deleting Arrays and Array Elements
virtual file system reads (non-cumulative), tallying, Clearing/Deleting Arrays and Array Elements
command-line arguments
SystemTap handler constructs
handlers, Command-Line Arguments
compiling instrumentation/kernel modules from SystemTap scripts, Generating Instrumentation for Other Computers
components
SystemTap scripts
introduction, SystemTap Scripts
computing for statistical aggregates
array operations, Computing for Statistical Aggregates
@avg (integer extractor), Computing for Statistical Aggregates
@count (integer extractor), Computing for Statistical Aggregates
@max (integer extractor), Computing for Statistical Aggregates
@min (integer extractor), Computing for Statistical Aggregates
@sum (integer extractor), Computing for Statistical Aggregates
adding values to statistical aggregates, Computing for Statistical Aggregates
count (operator), Computing for Statistical Aggregates
extracting data collected by statistical aggregates, Computing for Statistical Aggregates
computing for timestamp deltas
reading values from arrays
array operations, Reading Values From Arrays
conditional operators
conditional statements
handlers, Conditional Statements
conditional statements, using arrays in
array operations, Using Arrays in Conditional Statements
testing for array membership, Using Arrays in Conditional Statements
CONFIG_HZ, computing for, Variables
contended user-space locks (futex contentions), identifying
examples of SystemTap scripts, Identifying Contended User-Space Locks
copy fault
runtime errors/warnings
understainding SystemTap errors, Run Time Errors and Warnings
count operator
computing for statistical aggregates
array (operator), Computing for Statistical Aggregates
counting function calls
examples of SystemTap scripts, Counting Function Calls Made
CPU ticks
examples of SystemTap scripts, Determining Time Spent in Kernel and User Space
cpu()
functions, Systemtap Handler/Body
cross-compiling, Generating Instrumentation for Other Computers
cross-instrumentation
advantages of, Generating Instrumentation for Other Computers
building kernel modules from SystemTap scripts, Generating Instrumentation for Other Computers
configuration
host system and target system, Generating Instrumentation for Other Computers
generating instrumentation from SystemTap scripts, Generating Instrumentation for Other Computers
host system, Generating Instrumentation for Other Computers
instrumentation module, Generating Instrumentation for Other Computers
target kernel, Generating Instrumentation for Other Computers
target system, Generating Instrumentation for Other Computers
ctime()
functions, Systemtap Handler/Body
ctime(), example of usage
script examples, Summarizing Disk Read/Write Traffic
cumulative I/O, tracking
examples of SystemTap scripts, Track Cumulative IO
cumulative virtual file system reads, tallying
processing multiple elements in an array
array operations, Processing Multiple Elements in an Array

D

delete operator
clearing arrays/array elements
array operations, Clearing/Deleting Arrays and Array Elements
determining architecture notation, Generating Instrumentation for Other Computers
determining the kernel version, Installing Required Kernel Information RPMs
determining time spent in kernel and user space
examples of SystemTap scripts, Determining Time Spent in Kernel and User Space
device I/O, monitoring
examples of SystemTap scripts, I/O Monitoring (By Device)
device number of a file (integer format)
examples of SystemTap scripts, Monitoring Reads and Writes to a File
disk I/O traffic, summarizing
script examples, Summarizing Disk Read/Write Traffic
division by 0
runtime errors/warnings
understainding SystemTap errors, Run Time Errors and Warnings
documentation goals
Introduction, Documentation Goals

E

embedded code in unprivileged script
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
empty unique keys
reading values from arrays
array operations, Reading Values From Arrays
end
Events, Event
errors
parse/semantics error, Parse and Semantic Errors
embedded code in unprivileged script, Parse and Semantic Errors
expected symbol/array index expression, Parse and Semantic Errors
grammatical/typographical script error, Parse and Semantic Errors
guru mode, Parse and Semantic Errors
invalid values to variables/arrays, Parse and Semantic Errors
libdwfl failure, Parse and Semantic Errors
no match for probe point, Parse and Semantic Errors
non-global arrays, Parse and Semantic Errors
probe mismatch, Parse and Semantic Errors
type mismatch for identifier, Parse and Semantic Errors
unresolved function call, Parse and Semantic Errors
unresolved target-symbol expression, Parse and Semantic Errors
unresolved type for identifier, Parse and Semantic Errors
variable modified during 'foreach', Parse and Semantic Errors
runtime errors/warnings, Run Time Errors and Warnings
aggregate element not found, Run Time Errors and Warnings
aggregation overflow, Run Time Errors and Warnings
copy fault, Run Time Errors and Warnings
division by 0, Run Time Errors and Warnings
MAXACTION exceeded, Run Time Errors and Warnings
MAXNESTING exceeded, Run Time Errors and Warnings
number of errors: N, skipped probes: M, Run Time Errors and Warnings
pointer dereference fault, Run Time Errors and Warnings
event types
Understanding How SystemTap Works, Understanding How SystemTap Works
Events
asynchronous events, Event
begin, Event
end, Event
examples of synchronous and asynchronous events, Event
introduction, Event
kernel.function("function"), Event
kernel.trace("tracepoint"), Event
module("module"), Event
synchronous events, Event
syscall.system_call, Event
timer events, Event
user-space, User-Space Events
vfs.file_operation, Event
wildcards, Event
events and handlers, Understanding How SystemTap Works
events wildcards, Event
example
introduction
arrays, Associative Arrays
example of multiple command-line arguments
examples of SystemTap scripts, Call Graph Tracing
examples of synchronous and asynchronous events
Events, Event
examples of SystemTap scripts, Useful SystemTap Scripts
call graph tracing, Call Graph Tracing
CPU ticks, Determining Time Spent in Kernel and User Space
ctime(), example of usage, Summarizing Disk Read/Write Traffic
determining time spent in kernel and user space, Determining Time Spent in Kernel and User Space
file device number (integer format), Monitoring Reads and Writes to a File
futex (lock) contentions, Identifying Contended User-Space Locks
futex system call, Identifying Contended User-Space Locks
identifying contended user-space locks (i.e. futex contentions), Identifying Contended User-Space Locks
if/else conditionals, alternative syntax, Network Profiling
inode number, Monitoring Reads and Writes to a File
monitoring changes to file attributes, Monitoring Changes to File Attributes
monitoring device I/O, I/O Monitoring (By Device)
monitoring I/O block time, Periodically Print I/O Block Time
monitoring I/O time, Tracking I/O Time For Each File Read or Write
monitoring incoming TCP connections, Monitoring Incoming TCP Connections
monitoring polling applications, Monitoring Polling Applications
monitoring reads and writes to a file, Monitoring Reads and Writes to a File
monitoring system calls, Tracking Most Frequently Used System Calls
monitoring system calls (volume per process), Tracking System Call Volume Per Process
monitoring TCP packets, Monitoring TCP Packets
multiple command-line arguments, example of, Call Graph Tracing
net/socket.c, tracing functions from, Tracing Functions Called in Network Socket Code
network profiling, Network Profiling, Monitoring Network Packets Drops in Kernel
stat -c, determining file device number (integer format), Monitoring Reads and Writes to a File
stat -c, determining whole device number, I/O Monitoring (By Device)
summarizing disk I/O traffic, Summarizing Disk Read/Write Traffic
tallying function calls, Counting Function Calls Made
thread_indent(), sample usage, Call Graph Tracing
timer.ms(), sample usage, Counting Function Calls Made
timer.s(), sample usage, Monitoring Polling Applications, Tracking Most Frequently Used System Calls
tracing functions called in network socket code, Tracing Functions Called in Network Socket Code
tracking cumulative I/O, Track Cumulative IO
trigger function, Call Graph Tracing
usrdev2kerndev(), I/O Monitoring (By Device)
whole device number (usage as a command-line argument), I/O Monitoring (By Device)
exceeded MAXACTION
runtime errors/warnings
understainding SystemTap errors, Run Time Errors and Warnings
exceeded MAXNESTING
runtime errors/warnings
understainding SystemTap errors, Run Time Errors and Warnings
exit()
functions, Systemtap Handler/Body
expected symbol/array index expression
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
extracting data collected by statistical aggregates
computing for statistical aggregates
array operations, Computing for Statistical Aggregates

F

feedback
contact information for this manual, We Need Feedback!
file attributes, monitoring changes to
examples of SystemTap scripts, Monitoring Changes to File Attributes
file device number (integer format)
examples of SystemTap scripts, Monitoring Reads and Writes to a File
file reads/writes, monitoring
examples of SystemTap scripts, Monitoring Reads and Writes to a File
flight recorder mode, SystemTap Flight Recorder Mode
file mode, File Flight Recorder
in-memory mode, In-memory Flight Recorder
for loops
conditional statements
handlers, Conditional Statements
foreach
processing multiple elements in an array
array operations, Processing Multiple Elements in an Array
format
introduction
arrays, Associative Arrays
format and syntax
printf(), Systemtap Handler/Body
SystemTap handler constructs
handlers, Variables
SystemTap scripts
introduction, SystemTap Scripts
format specifiers
printf(), Systemtap Handler/Body
format strings
printf(), Systemtap Handler/Body
function call (unresolved)
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
function calls (incoming/outgoing), tracing
examples of SystemTap scripts, Call Graph Tracing
function calls, tallying
examples of SystemTap scripts, Counting Function Calls Made
functions, Systemtap Handler/Body
cpu(), Systemtap Handler/Body
ctime(), Systemtap Handler/Body
gettimeofday_s(), Systemtap Handler/Body
pp(), Systemtap Handler/Body
SystemTap scripts
introduction, SystemTap Scripts
target(), Systemtap Handler/Body
thread_indent(), Systemtap Handler/Body
tid(), Systemtap Handler/Body
uid(), Systemtap Handler/Body
functions (used in handlers)
exit(), Systemtap Handler/Body
functions called in network socket code, tracing
examples of SystemTap scripts, Tracing Functions Called in Network Socket Code
futex (lock) contentions
examples of SystemTap scripts, Identifying Contended User-Space Locks
futex contention, definition
examples of SystemTap scripts, Identifying Contended User-Space Locks
futex contentions, identifying
examples of SystemTap scripts, Identifying Contended User-Space Locks
futex system call
examples of SystemTap scripts, Identifying Contended User-Space Locks

G

gettimeofday_s()
functions, Systemtap Handler/Body
global
SystemTap handler constructs
handlers, Variables
goals, documentation
Introduction, Documentation Goals
grammatical/typographical script error
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
guru mode
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors

H

handler functions, Systemtap Handler/Body
handlers
conditional statements, Conditional Statements
conditional operators, Conditional Statements
for loops, Conditional Statements
if/else, Conditional Statements
while loops, Conditional Statements
introduction, Systemtap Handler/Body
SystemTap handler constructs, Basic SystemTap Handler Constructs
command-line arguments, Command-Line Arguments
global, Variables
syntax and format, Basic SystemTap Handler Constructs
variable notations, Command-Line Arguments
variables, Variables
target variables, Target Variables
handlers and events, Understanding How SystemTap Works
SystemTap scripts
introduction, SystemTap Scripts
heaviest disk reads/writes, identifying
script examples, Summarizing Disk Read/Write Traffic
host system
cross-instrumentation, Generating Instrumentation for Other Computers
host system and target system
cross-instrumentation
configuration, Generating Instrumentation for Other Computers

I

I/O block time, monitoring
examples of SystemTap scripts, Periodically Print I/O Block Time
I/O monitoring (by device)
examples of SystemTap scripts, I/O Monitoring (By Device)
I/O time, monitoring
examples of SystemTap scripts, Tracking I/O Time For Each File Read or Write
I/O traffic, summarizing
script examples, Summarizing Disk Read/Write Traffic
identifier type mismatch
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
identifying contended user-space locks (i.e. futex contentions)
examples of SystemTap scripts, Identifying Contended User-Space Locks
identifying heaviest disk reads/writes
script examples, Summarizing Disk Read/Write Traffic
if/else
conditional statements
handlers, Conditional Statements
if/else conditionals, alternative syntax
examples of SystemTap scripts, Network Profiling
if/else statements, using arrays in
array operations, Using Arrays in Conditional Statements
incoming TCP connections, monitoring
examples of SystemTap scripts, Monitoring Incoming TCP Connections
incoming/outgoing function calls, tracing
examples of SystemTap scripts, Call Graph Tracing
incrementing associated values
array operations, Incrementing Associated Values
tallying virtual file system reads (VFS reads), Incrementing Associated Values
index expression
introduction
arrays, Associative Arrays
initial testing, Initial Testing
inode number
examples of SystemTap scripts, Monitoring Reads and Writes to a File
Installation
initial testing, Initial Testing
kernel information packages, Installing Required Kernel Information RPMs
kernel version, determining the, Installing Required Kernel Information RPMs
required packages, Installing Required Kernel Information RPMs
Setup and Installation, Installation and Setup
systemtap package, Installing SystemTap
systemtap-runtime package, Installing SystemTap
instrumentation module
cross-instrumentation, Generating Instrumentation for Other Computers
instrumentation modules from SystemTap scripts, building, Generating Instrumentation for Other Computers
integer extractors
computing for statistical aggregates
array operations, Computing for Statistical Aggregates
Introduction
capabilities of SystemTap, SystemTap Capabilities
documentation goals, Documentation Goals
goals, documentation, Documentation Goals
limitations of SystemTap, SystemTap Capabilities
performance monitoring, Introduction
invalid division
runtime errors/warnings
understainding SystemTap errors, Run Time Errors and Warnings
invalid values to variables/arrays
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
iterations, processing elements in an array as
processing multiple elements in an array
array operations, Processing Multiple Elements in an Array

K

kernel and user space, determining time spent in
examples of SystemTap scripts, Determining Time Spent in Kernel and User Space
kernel information packages, Installing Required Kernel Information RPMs
kernel modules from SystemTap scripts, building, Generating Instrumentation for Other Computers
kernel version, determining the, Installing Required Kernel Information RPMs
kernel.function("function")
Events, Event
kernel.trace("tracepoint")
Events, Event
key pairs
introduction
arrays, Associative Arrays

L

libdwfl failure
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
limitations of SystemTap
Introduction, SystemTap Capabilities
limiting the output of foreach
processing multiple elements in an array
array operations, Processing Multiple Elements in an Array
local variables
name, Systemtap Handler/Body
sample usage
$count, Tracking I/O Time For Each File Read or Write
$return, Summarizing Disk Read/Write Traffic, Track Cumulative IO

M

MAXACTION exceeded
runtime errors/warnings
understainding SystemTap errors, Run Time Errors and Warnings
MAXNESTING exceeded
runtime errors/warnings
understainding SystemTap errors, Run Time Errors and Warnings
membership (in array), testing for
conditional statements, using arrays in
array operations, Using Arrays in Conditional Statements
module("module")
Events, Event
monitoring changes to file attributes
examples of SystemTap scripts, Monitoring Changes to File Attributes
monitoring cumulative I/O
examples of SystemTap scripts, Track Cumulative IO
monitoring device I/O
examples of SystemTap scripts, I/O Monitoring (By Device)
monitoring I/O block time
examples of SystemTap scripts, Periodically Print I/O Block Time
monitoring I/O time
examples of SystemTap scripts, Tracking I/O Time For Each File Read or Write
monitoring incoming TCP connections
examples of SystemTap scripts, Monitoring Incoming TCP Connections
monitoring polling applications
examples of SystemTap scripts, Monitoring Polling Applications
monitoring reads and writes to a file
examples of SystemTap scripts, Monitoring Reads and Writes to a File
monitoring system calls
examples of SystemTap scripts, Tracking Most Frequently Used System Calls
monitoring system calls (volume per process)
examples of SystemTap scripts, Tracking System Call Volume Per Process
monitoring TCP packets
examples of SystemTap scripts, Monitoring TCP Packets
multiple array operations within the same probe
clearing arrays/array elements
array operations, Clearing/Deleting Arrays and Array Elements
multiple command-line arguments, example of
examples of SystemTap scripts, Call Graph Tracing
multiple elements in an array
array operations, Processing Multiple Elements in an Array

N

name
local variables, Systemtap Handler/Body
net/socket.c, tracing functions from
examples of SystemTap scripts, Tracing Functions Called in Network Socket Code
network profiling
examples of SystemTap scripts, Network Profiling, Monitoring Network Packets Drops in Kernel
network socket code, tracing functions called in
examples of SystemTap scripts, Tracing Functions Called in Network Socket Code
network traffic, monitoring
examples of SystemTap scripts, Network Profiling, Monitoring Network Packets Drops in Kernel
no match for probe point
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
non-global arrays
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
number of errors: N, skipped probes: M
runtime errors/warnings
understainding SystemTap errors, Run Time Errors and Warnings

O

operations
assigning associated values
associating timestamps to process names, Assigning an Associated Value
associative arrays, Array Operations in SystemTap
clearing arrays/array elements, Clearing/Deleting Arrays and Array Elements
delete operator, Clearing/Deleting Arrays and Array Elements
multiple array operations within the same probe, Clearing/Deleting Arrays and Array Elements
virtual file system reads (non-cumulative), tallying, Clearing/Deleting Arrays and Array Elements
computing for statistical aggregates, Computing for Statistical Aggregates
@avg (integer extractor), Computing for Statistical Aggregates
@count (integer extractor), Computing for Statistical Aggregates
@max (integer extractor), Computing for Statistical Aggregates
@min (integer extractor), Computing for Statistical Aggregates
@sum (integer extractor), Computing for Statistical Aggregates
adding values to statistical aggregates, Computing for Statistical Aggregates
count (operator), Computing for Statistical Aggregates
extracting data collected by statistical aggregates, Computing for Statistical Aggregates
conditional statements, using arrays in, Using Arrays in Conditional Statements
testing for array membership, Using Arrays in Conditional Statements
deleting arrays and array elements, Clearing/Deleting Arrays and Array Elements
incrementing associated values, Incrementing Associated Values
tallying virtual file system reads (VFS reads), Incrementing Associated Values
multiple elements in an array, Processing Multiple Elements in an Array
processing multiple elements in an array, Processing Multiple Elements in an Array
cumulative virtual file system reads, tallying, Processing Multiple Elements in an Array
foreach, Processing Multiple Elements in an Array
iterations, processing elements in an array as, Processing Multiple Elements in an Array
limiting the output of foreach, Processing Multiple Elements in an Array
ordering the output of foreach, Processing Multiple Elements in an Array
reading values from arrays, Reading Values From Arrays
computing for timestamp deltas, Reading Values From Arrays
empty unique keys, Reading Values From Arrays
using arrays in simple computations, Reading Values From Arrays
options, stap
Usage, Running SystemTap Scripts
ordering the output of foreach
processing multiple elements in an array
array operations, Processing Multiple Elements in an Array
overflow of aggregation
runtime errors/warnings
understainding SystemTap errors, Run Time Errors and Warnings

P

packages required to run SystemTap, Installing Required Kernel Information RPMs
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
embedded code in unprivileged script, Parse and Semantic Errors
expected symbol/array index expression, Parse and Semantic Errors
grammatical/typographical script error, Parse and Semantic Errors
guru mode, Parse and Semantic Errors
invalid values to variables/arrays, Parse and Semantic Errors
libdwfl failure, Parse and Semantic Errors
no match for probe point, Parse and Semantic Errors
non-global arrays, Parse and Semantic Errors
probe mismatch, Parse and Semantic Errors
type mismatch for identifier, Parse and Semantic Errors
unresolved function call, Parse and Semantic Errors
unresolved target-symbol expression, Parse and Semantic Errors
unresolved type for identifier, Parse and Semantic Errors
variable modified during 'foreach', Parse and Semantic Errors
performance monitoring
Introduction, Introduction
pointer dereference fault
runtime errors/warnings
understainding SystemTap errors, Run Time Errors and Warnings
polling applications, monitoring
examples of SystemTap scripts, Monitoring Polling Applications
pp()
functions, Systemtap Handler/Body
printf()
format specifiers, Systemtap Handler/Body
format strings, Systemtap Handler/Body
syntax and format, Systemtap Handler/Body
printing I/O activity (cumulative)
examples of SystemTap scripts, Track Cumulative IO
printing I/O block time (periodically)
examples of SystemTap scripts, Periodically Print I/O Block Time
probe mismatch
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
probe point (no match for)
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
probes
SystemTap scripts
introduction, SystemTap Scripts
processing multiple elements in an array
array operations, Processing Multiple Elements in an Array
cumulative virtual file system reads, tallying
array operations, Processing Multiple Elements in an Array
foreach
array operations, Processing Multiple Elements in an Array
limiting the output of foreach
array operations, Processing Multiple Elements in an Array
ordering the output of foreach
array operations, Processing Multiple Elements in an Array
profiling the network
examples of SystemTap scripts, Network Profiling, Monitoring Network Packets Drops in Kernel

R

reading values from arrays
array operations, Reading Values From Arrays
empty unique keys, Reading Values From Arrays
using arrays in simple computations, Reading Values From Arrays
computing for timestamp deltas
array operations, Reading Values From Arrays
reads/writes to a file, monitoring
examples of SystemTap scripts, Monitoring Reads and Writes to a File
required packages, Installing Required Kernel Information RPMs
RPMs required to run SystemTap, Installing Required Kernel Information RPMs
running scripts from standard input, Running SystemTap Scripts
running SystemTap scripts
Usage, Running SystemTap Scripts
runtime errors/warnings
understainding SystemTap errors, Run Time Errors and Warnings
aggregate element not found, Run Time Errors and Warnings
aggregation overflow, Run Time Errors and Warnings
copy fault, Run Time Errors and Warnings
division by 0, Run Time Errors and Warnings
MAXACTION exceeded, Run Time Errors and Warnings
MAXNESTING exceeded, Run Time Errors and Warnings
number of errors: N, skipped probes: M, Run Time Errors and Warnings
pointer dereference fault, Run Time Errors and Warnings

S

script examples
call graph tracing, Call Graph Tracing
CPU ticks, Determining Time Spent in Kernel and User Space
ctime(), example of usage, Summarizing Disk Read/Write Traffic
determining time spent in kernel and user space, Determining Time Spent in Kernel and User Space
file device number (integer format), Monitoring Reads and Writes to a File
futex (lock) contentions, Identifying Contended User-Space Locks
futex system call, Identifying Contended User-Space Locks
identifying contended user-space locks (i.e. futex contentions), Identifying Contended User-Space Locks
if/else conditionals, alternative syntax, Network Profiling
inode number, Monitoring Reads and Writes to a File
monitoring changes to file attributes, Monitoring Changes to File Attributes
monitoring device I/O, I/O Monitoring (By Device)
monitoring I/O block time, Periodically Print I/O Block Time
monitoring I/O time, Tracking I/O Time For Each File Read or Write
monitoring incoming TCP connections, Monitoring Incoming TCP Connections
monitoring polling applications, Monitoring Polling Applications
monitoring reads and writes to a file, Monitoring Reads and Writes to a File
monitoring system calls, Tracking Most Frequently Used System Calls
monitoring system calls (volume per process), Tracking System Call Volume Per Process
monitoring TCP packets, Monitoring TCP Packets
multiple command-line arguments, example of, Call Graph Tracing
net/socket.c, tracing functions from, Tracing Functions Called in Network Socket Code
network profiling, Network Profiling, Monitoring Network Packets Drops in Kernel
stat -c, determining file device number (integer format), Monitoring Reads and Writes to a File
stat -c, determining whole device number, I/O Monitoring (By Device)
summarizing disk I/O traffic, Summarizing Disk Read/Write Traffic
tallying function calls, Counting Function Calls Made
thread_indent(), sample usage, Call Graph Tracing
timer.ms(), sample usage, Counting Function Calls Made
timer.s(), sample usage, Monitoring Polling Applications, Tracking Most Frequently Used System Calls
tracing functions called in network socket code, Tracing Functions Called in Network Socket Code
tracking cumulative I/O, Track Cumulative IO
trigger function, Call Graph Tracing
usrdev2kerndev(), I/O Monitoring (By Device)
whole device number (usage as a command-line argument), I/O Monitoring (By Device)
scripts
introduction, SystemTap Scripts
components, SystemTap Scripts
events and handlers, SystemTap Scripts
format and syntax, SystemTap Scripts
functions, SystemTap Scripts
probes, SystemTap Scripts
statement blocks, SystemTap Scripts
sessions, SystemTap, Architecture
Setup and Installation, Installation and Setup
Stack backtrace
user-space, User-Space Stack Backtraces
standard input, running scripts from
Usage, Running SystemTap Scripts
stap
Usage, Running SystemTap Scripts
stap options, Running SystemTap Scripts
stapdev
Usage, Running SystemTap Scripts
staprun
Usage, Running SystemTap Scripts
stapusr
Usage, Running SystemTap Scripts
stat -c, determining file device number (integer format)
examples of SystemTap scripts, Monitoring Reads and Writes to a File
stat -c, determining whole device number
examples of SystemTap scripts, I/O Monitoring (By Device)
statement blocks
SystemTap scripts
introduction, SystemTap Scripts
statistical aggregates
array operations, Computing for Statistical Aggregates
summarizing disk I/O traffic
script examples, Summarizing Disk Read/Write Traffic
synchronous events
Events, Event
syntax
introduction
arrays, Associative Arrays
syntax and format
printf(), Systemtap Handler/Body
SystemTap handler constructs
handlers, Basic SystemTap Handler Constructs
SystemTap scripts
introduction, SystemTap Scripts
syscall.system_call
Events, Event
system calls volume (per process), monitoring
examples of SystemTap scripts, Tracking System Call Volume Per Process
system calls, monitoring
examples of SystemTap scripts, Tracking Most Frequently Used System Calls
SystemTap architecture, Architecture
SystemTap handlers
SystemTap handler constructs, Basic SystemTap Handler Constructs
syntax and format, Basic SystemTap Handler Constructs
systemtap package, Installing SystemTap
SystemTap script functions, Systemtap Handler/Body
SystemTap scripts
introduction, SystemTap Scripts
components, SystemTap Scripts
events and handlers, SystemTap Scripts
format and syntax, SystemTap Scripts
functions, SystemTap Scripts
probes, SystemTap Scripts
statement blocks, SystemTap Scripts
useful examples, Useful SystemTap Scripts
SystemTap scripts, how to run, Running SystemTap Scripts
SystemTap sessions, Architecture
SystemTap statements
conditional statements, Conditional Statements
conditional operators, Conditional Statements
for loops, Conditional Statements
if/else, Conditional Statements
while loops, Conditional Statements
SystemTap handler constructs
command-line arguments, Command-Line Arguments
global, Variables
variable notations, Command-Line Arguments
variables, Variables
systemtap-runtime package, Installing SystemTap
systemtap-testsuite package
sample scripts, Useful SystemTap Scripts

T

tallying function calls
examples of SystemTap scripts, Counting Function Calls Made
tallying virtual file system reads (VFS reads)
incrementing associated values
array operations, Incrementing Associated Values
Tapsets
definition of, Tapsets
target kernel
cross-instrumentation, Generating Instrumentation for Other Computers
target system
cross-instrumentation, Generating Instrumentation for Other Computers
target system and host system
configuration, Generating Instrumentation for Other Computers
target variables, Target Variables
pretty printing, Pretty Printing Target Variables
typecasting, Typecasting
user-space, Accessing User-Space Target Variables
variable availability, Checking Target Variable Availablility
target()
functions, Systemtap Handler/Body
target-symbol expression, unresolved
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
TCP connections (incoming), monitoring
examples of SystemTap scripts, Monitoring Incoming TCP Connections
TCP packets, monitoring
examples of SystemTap scripts, Monitoring TCP Packets
testing for array membership
conditional statements, using arrays in
array operations, Using Arrays in Conditional Statements
testing, initial, Initial Testing
thread_indent()
functions, Systemtap Handler/Body
thread_indent(), sample usage
examples of SystemTap scripts, Call Graph Tracing
tid()
functions, Systemtap Handler/Body
time of I/O
examples of SystemTap scripts, Tracking I/O Time For Each File Read or Write
time spent in kernel/user space, determining
examples of SystemTap scripts, Determining Time Spent in Kernel and User Space
timer events
Events, Event
timer.ms(), sample usage
examples of SystemTap scripts, Counting Function Calls Made
timer.s(), sample usage
examples of SystemTap scripts, Monitoring Polling Applications, Tracking Most Frequently Used System Calls
timestamp deltas, computing for
reading values from arrays
array operations, Reading Values From Arrays
timestamps, association thereof to process names
assigning associated values
array operations, Assigning an Associated Value
tracepoint, Event, Monitoring Network Packets Drops in Kernel
tracing call graph
examples of SystemTap scripts, Call Graph Tracing
tracing functions called in network socket code
examples of SystemTap scripts, Tracing Functions Called in Network Socket Code
tracing incoming/outgoing function calls
examples of SystemTap scripts, Call Graph Tracing
tracking cumulative I/O
examples of SystemTap scripts, Track Cumulative IO
trigger function
examples of SystemTap scripts, Call Graph Tracing
type mismatch for identifier
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
typographical script error
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors

U

uid()
functions, Systemtap Handler/Body
uname -m, Generating Instrumentation for Other Computers
uname -r, Installing Required Kernel Information RPMs
understainding SystemTap errors
runtime errors/warnings, Run Time Errors and Warnings
aggregate element not found, Run Time Errors and Warnings
aggregation overflow, Run Time Errors and Warnings
copy fault, Run Time Errors and Warnings
division by 0, Run Time Errors and Warnings
MAXACTION exceeded, Run Time Errors and Warnings
MAXNESTING exceeded, Run Time Errors and Warnings
number of errors: N, skipped probes: M, Run Time Errors and Warnings
pointer dereference fault, Run Time Errors and Warnings
Understanding How SystemTap Works, Understanding How SystemTap Works
architecture, Architecture
event types, Understanding How SystemTap Works
events and handlers, Understanding How SystemTap Works
SystemTap sessions, Architecture
understanding SystemTap errors
parse/semantics error, Parse and Semantic Errors
embedded code in unprivileged script, Parse and Semantic Errors
expected symbol/array index expression, Parse and Semantic Errors
grammatical/typographical script error, Parse and Semantic Errors
guru mode, Parse and Semantic Errors
invalid values to variables/arrays, Parse and Semantic Errors
libdwfl failure, Parse and Semantic Errors
no match for probe point, Parse and Semantic Errors
non-global arrays, Parse and Semantic Errors
probe mismatch, Parse and Semantic Errors
type mismatch for identifier, Parse and Semantic Errors
unresolved function call, Parse and Semantic Errors
unresolved target-symbol expression, Parse and Semantic Errors
unresolved type for identifier, Parse and Semantic Errors
variable modified during 'foreach', Parse and Semantic Errors
unique keys
introduction
arrays, Associative Arrays
unprivileged script, embedded code in
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
unresolved function call
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
unresolved target-symbol expression
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
unresolved type for identifier
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
unsafe embedded code in unprivileged script
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
Usage
options, stap, Running SystemTap Scripts
running SystemTap scripts, Running SystemTap Scripts
standard input, running scripts from, Running SystemTap Scripts
stap, Running SystemTap Scripts
stapdev, Running SystemTap Scripts
staprun, Running SystemTap Scripts
stapusr, Running SystemTap Scripts
useful examples of SystemTap scripts, Useful SystemTap Scripts
user and kernel space, determining time spent in
examples of SystemTap scripts, Determining Time Spent in Kernel and User Space
using arrays in simple computations
reading values from arrays
array operations, Reading Values From Arrays
Using SystemTap, Using SystemTap
usrdev2kerndev()
examples of SystemTap scripts, I/O Monitoring (By Device)

V

values, assignment of
array operations, Assigning an Associated Value
variable modified during 'foreach'
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
variable notations
SystemTap handler constructs
handlers, Command-Line Arguments
variables
SystemTap handler constructs
handlers, Variables
variables (local)
name, Systemtap Handler/Body
sample usage
$count, Tracking I/O Time For Each File Read or Write
$return, Summarizing Disk Read/Write Traffic, Track Cumulative IO
VFS reads, tallying of
incrementing associated values
array operations, Incrementing Associated Values
vfs.file_operation
Events, Event
virtual file system reads (cumulative), tallying
processing multiple elements in an array
array operations, Processing Multiple Elements in an Array
virtual file system reads (non-cumulative), tallying
clearing arrays/array elements
array operations, Clearing/Deleting Arrays and Array Elements

W

while loops
conditional statements
handlers, Conditional Statements
whole device number (usage as a command-line argument)
examples of SystemTap scripts, I/O Monitoring (By Device)
wildcards in events, Event
writes/reads to a file, monitoring
examples of SystemTap scripts, Monitoring Reads and Writes to a File
+Index

Product SiteDocumentation Site

  • SystemTap Beginners Guide

Index

Symbols

$count
sample usage
local variables, Tracking I/O Time For Each File Read or Write
$return
sample usage
local variables, Summarizing Disk Read/Write Traffic, Track Cumulative IO
@avg (integer extractor)
computing for statistical aggregates
array operations, Computing for Statistical Aggregates
@count (integer extractor)
computing for statistical aggregates
array operations, Computing for Statistical Aggregates
@max (integer extractor)
computing for statistical aggregates
array operations, Computing for Statistical Aggregates
@min (integer extractor)
computing for statistical aggregates
array operations, Computing for Statistical Aggregates
@sum (integer extractor)
computing for statistical aggregates
array operations, Computing for Statistical Aggregates

A

adding values to statistical aggregates
computing for statistical aggregates
array operations, Computing for Statistical Aggregates
advantages of cross-instrumentation, Generating Instrumentation for Other Computers
aggregate element not found
runtime errors/warnings
understainding SystemTap errors, Runtime Errors and Warnings
aggregates (statistical)
array operations, Computing for Statistical Aggregates
aggregation overflow
runtime errors/warnings
understainding SystemTap errors, Runtime Errors and Warnings
algebraic formulas using arrays
reading values from arrays
array operations, Reading Values From Arrays
architecture notation, determining, Generating Instrumentation for Other Computers
architecture of SystemTap, Architecture
array locals not supported
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
array operations
assigning associated values, Assigning an Associated Value
associating timestamps to process names, Assigning an Associated Value
associative arrays, Array Operations in SystemTap
clearing arrays/array elements, Clearing/Deleting Arrays and Array Elements
delete operator, Clearing/Deleting Arrays and Array Elements
multiple array operations within the same probe, Clearing/Deleting Arrays and Array Elements
virtual file system reads (non-cumulative), tallying, Clearing/Deleting Arrays and Array Elements
computing for statistical aggregates, Computing for Statistical Aggregates
@avg (integer extractor), Computing for Statistical Aggregates
@count (integer extractor), Computing for Statistical Aggregates
@max (integer extractor), Computing for Statistical Aggregates
@min (integer extractor), Computing for Statistical Aggregates
@sum (integer extractor), Computing for Statistical Aggregates
adding values to statistical aggregates, Computing for Statistical Aggregates
count (operator), Computing for Statistical Aggregates
extracting data collected by statistical aggregates, Computing for Statistical Aggregates
conditional statements, using arrays in, Using Arrays in Conditional Statements
testing for array membership, Using Arrays in Conditional Statements
deleting arrays and array elements, Clearing/Deleting Arrays and Array Elements
incrementing associated values, Incrementing Associated Values
tallying virtual file system reads (VFS reads), Incrementing Associated Values
multiple elements in an array, Processing Multiple Elements in an Array
processing multiple elements in an array, Processing Multiple Elements in an Array
cumulative virtual file system reads, tallying, Processing Multiple Elements in an Array
foreach, Processing Multiple Elements in an Array
iterations, processing elements in an array as, Processing Multiple Elements in an Array
limiting the output of foreach, Processing Multiple Elements in an Array
ordering the output of foreach, Processing Multiple Elements in an Array
reading values from arrays, Reading Values From Arrays
computing for timestamp deltas, Reading Values From Arrays
empty unique keys, Reading Values From Arrays
using arrays in simple computations, Reading Values From Arrays
arrays, Associative Arrays
(see also associative arrays)
assigning associated values
array operations, Assigning an Associated Value
associating timestamps to process names, Assigning an Associated Value
associating timestamps to process names
array operations, Assigning an Associated Value
associated values
introduction
arrays, Associative Arrays
associating timestamps to process names
assigning associated values
array operations, Assigning an Associated Value
associative arrays
introduction, Associative Arrays
associated values, Associative Arrays
example, Associative Arrays
index expression, Associative Arrays
key pairs, Associative Arrays
syntax, Associative Arrays
unique keys, Associative Arrays
asynchronous events
Events, Event

B

begin
Events, Event
building instrumentation modules from SystemTap scripts, Generating Instrumentation for Other Computers
building kernel modules from SystemTap scripts, Generating Instrumentation for Other Computers

C

call graph tracing
examples of SystemTap scripts, Call Graph Tracing
capabilities of SystemTap
Introduction, SystemTap Capabilities
changes to file attributes, monitoring
examples of SystemTap scripts, Monitoring Changes to File Attributes
clearing arrays/array elements
array operations, Clearing/Deleting Arrays and Array Elements
delete operator, Clearing/Deleting Arrays and Array Elements
multiple array operations within the same probe, Clearing/Deleting Arrays and Array Elements
virtual file system reads (non-cumulative), tallying, Clearing/Deleting Arrays and Array Elements
command-line arguments
SystemTap handler constructs
handlers, Command-Line Arguments
compiling instrumentation/kernel modules from SystemTap scripts, Generating Instrumentation for Other Computers
components
SystemTap scripts
introduction, SystemTap Scripts
computing for statistical aggregates
array operations, Computing for Statistical Aggregates
@avg (integer extractor), Computing for Statistical Aggregates
@count (integer extractor), Computing for Statistical Aggregates
@max (integer extractor), Computing for Statistical Aggregates
@min (integer extractor), Computing for Statistical Aggregates
@sum (integer extractor), Computing for Statistical Aggregates
adding values to statistical aggregates, Computing for Statistical Aggregates
count (operator), Computing for Statistical Aggregates
extracting data collected by statistical aggregates, Computing for Statistical Aggregates
computing for timestamp deltas
reading values from arrays
array operations, Reading Values From Arrays
conditional operators
conditional statements
handlers, Conditional Statements
conditional statements, using arrays in
array operations, Using Arrays in Conditional Statements
testing for array membership, Using Arrays in Conditional Statements
CONFIG_HZ, computing for, Variables
contended user-space locks (futex contentions), identifying
examples of SystemTap scripts, Identifying Contended User-Space Locks
copy fault
runtime errors/warnings
understainding SystemTap errors, Runtime Errors and Warnings
count operator
computing for statistical aggregates
array (operator), Computing for Statistical Aggregates
counting function calls
examples of SystemTap scripts, Counting Function Calls Made
CPU ticks
examples of SystemTap scripts, Determining Time Spent in Kernel and User Space
cpu()
functions, SystemTap Handler/Body
cross-compiling, Generating Instrumentation for Other Computers
cross-instrumentation
advantages of, Generating Instrumentation for Other Computers
building kernel modules from SystemTap scripts, Generating Instrumentation for Other Computers
configuration
host system and target system, Generating Instrumentation for Other Computers
generating instrumentation from SystemTap scripts, Generating Instrumentation for Other Computers
host system, Generating Instrumentation for Other Computers
instrumentation module, Generating Instrumentation for Other Computers
target kernel, Generating Instrumentation for Other Computers
target system, Generating Instrumentation for Other Computers
ctime()
functions, SystemTap Handler/Body
ctime(), example of usage
script examples, Summarizing Disk Read/Write Traffic
cumulative I/O, tracking
examples of SystemTap scripts, Track Cumulative IO
cumulative virtual file system reads, tallying
processing multiple elements in an array
array operations, Processing Multiple Elements in an Array

D

delete operator
clearing arrays/array elements
array operations, Clearing/Deleting Arrays and Array Elements
determining architecture notation, Generating Instrumentation for Other Computers
determining the kernel version, Installing Required Kernel Information Packages Manually
determining time spent in kernel and user space
examples of SystemTap scripts, Determining Time Spent in Kernel and User Space
device I/O, monitoring
examples of SystemTap scripts, I/O Monitoring (By Device)
device number of a file (integer format)
examples of SystemTap scripts, Monitoring Reads and Writes to a File
disk I/O traffic, summarizing
script examples, Summarizing Disk Read/Write Traffic
division by 0
runtime errors/warnings
understainding SystemTap errors, Runtime Errors and Warnings
documentation goals
Introduction, Documentation Goals

E

embedded code in unprivileged script
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
empty unique keys
reading values from arrays
array operations, Reading Values From Arrays
end
Events, Event
errors
parse/semantics error, Parse and Semantic Errors
embedded code in unprivileged script, Parse and Semantic Errors
expected symbol/array index expression, Parse and Semantic Errors
grammatical/typographical script error, Parse and Semantic Errors
guru mode, Parse and Semantic Errors
invalid values to variables/arrays, Parse and Semantic Errors
libdwfl failure, Parse and Semantic Errors
no match for probe point, Parse and Semantic Errors
non-global arrays, Parse and Semantic Errors
probe mismatch, Parse and Semantic Errors
type mismatch for identifier, Parse and Semantic Errors
unresolved function call, Parse and Semantic Errors
unresolved target-symbol expression, Parse and Semantic Errors
unresolved type for identifier, Parse and Semantic Errors
variable modified during 'foreach', Parse and Semantic Errors
runtime errors/warnings, Runtime Errors and Warnings
aggregate element not found, Runtime Errors and Warnings
aggregation overflow, Runtime Errors and Warnings
copy fault, Runtime Errors and Warnings
division by 0, Runtime Errors and Warnings
MAXACTION exceeded, Runtime Errors and Warnings
MAXNESTING exceeded, Runtime Errors and Warnings
number of errors: N, skipped probes: M, Runtime Errors and Warnings
pointer dereference fault, Runtime Errors and Warnings
event types
Understanding How SystemTap Works, Understanding How SystemTap Works
Events
asynchronous events, Event
begin, Event
end, Event
examples of synchronous and asynchronous events, Event
introduction, Event
kernel.function("function"), Event
kernel.trace("tracepoint"), Event
module("module"), Event
synchronous events, Event
syscall.system_call, Event
timer events, Event
user-space, User-Space Events
vfs.file_operation, Event
wildcards, Event
events and handlers, Understanding How SystemTap Works
events wildcards, Event
example
introduction
arrays, Associative Arrays
example of multiple command-line arguments
examples of SystemTap scripts, Call Graph Tracing
examples of synchronous and asynchronous events
Events, Event
examples of SystemTap scripts, Useful SystemTap Scripts
call graph tracing, Call Graph Tracing
CPU ticks, Determining Time Spent in Kernel and User Space
ctime(), example of usage, Summarizing Disk Read/Write Traffic
determining time spent in kernel and user space, Determining Time Spent in Kernel and User Space
file device number (integer format), Monitoring Reads and Writes to a File
futex (lock) contentions, Identifying Contended User-Space Locks
futex system call, Identifying Contended User-Space Locks
identifying contended user-space locks (futex contentions), Identifying Contended User-Space Locks
if/else conditionals, alternative syntax, Network Profiling
inode number, Monitoring Reads and Writes to a File
monitoring changes to file attributes, Monitoring Changes to File Attributes
monitoring device I/O, I/O Monitoring (By Device)
monitoring I/O block time, Periodically Print I/O Block Time
monitoring I/O time, Tracking I/O Time For Each File Read or Write
monitoring incoming TCP connections, Monitoring Incoming TCP Connections
monitoring polling applications, Monitoring Polling Applications
monitoring reads and writes to a file, Monitoring Reads and Writes to a File
monitoring system calls, Tracking Most Frequently Used System Calls
monitoring system calls (volume per process), Tracking System Call Volume Per Process
monitoring TCP packets, Monitoring TCP Packets
multiple command-line arguments, example of, Call Graph Tracing
net/socket.c, tracing functions from, Tracing Functions Called in Network Socket Code
network profiling, Network Profiling, Monitoring Network Packets Drops in Kernel
stat -c, determining file device number (integer format), Monitoring Reads and Writes to a File
stat -c, determining whole device number, I/O Monitoring (By Device)
summarizing disk I/O traffic, Summarizing Disk Read/Write Traffic
tallying function calls, Counting Function Calls Made
thread_indent(), sample usage, Call Graph Tracing
timer.ms(), sample usage, Counting Function Calls Made
timer.s(), sample usage, Monitoring Polling Applications, Tracking Most Frequently Used System Calls
tracing functions called in network socket code, Tracing Functions Called in Network Socket Code
tracking cumulative I/O, Track Cumulative IO
trigger function, Call Graph Tracing
usrdev2kerndev(), I/O Monitoring (By Device)
whole device number (usage as a command-line argument), I/O Monitoring (By Device)
exceeded MAXACTION
runtime errors/warnings
understainding SystemTap errors, Runtime Errors and Warnings
exceeded MAXNESTING
runtime errors/warnings
understainding SystemTap errors, Runtime Errors and Warnings
exit()
functions, SystemTap Handler/Body
expected symbol/array index expression
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
extracting data collected by statistical aggregates
computing for statistical aggregates
array operations, Computing for Statistical Aggregates

F

feedback
contact information for this manual, We Need Feedback!
file attributes, monitoring changes to
examples of SystemTap scripts, Monitoring Changes to File Attributes
file device number (integer format)
examples of SystemTap scripts, Monitoring Reads and Writes to a File
file reads/writes, monitoring
examples of SystemTap scripts, Monitoring Reads and Writes to a File
flight recorder mode, SystemTap Flight Recorder Mode
file mode, File Flight Recorder
in-memory mode, In-memory Flight Recorder
for loops
conditional statements
handlers, Conditional Statements
foreach
processing multiple elements in an array
array operations, Processing Multiple Elements in an Array
format
introduction
arrays, Associative Arrays
format and syntax
printf(), SystemTap Handler/Body
SystemTap handler constructs
handlers, Variables
SystemTap scripts
introduction, SystemTap Scripts
format specifiers
printf(), SystemTap Handler/Body
format strings
printf(), SystemTap Handler/Body
function call (unresolved)
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
function calls (incoming/outgoing), tracing
examples of SystemTap scripts, Call Graph Tracing
function calls, tallying
examples of SystemTap scripts, Counting Function Calls Made
functions, SystemTap Handler/Body
cpu(), SystemTap Handler/Body
ctime(), SystemTap Handler/Body
gettimeofday_s(), SystemTap Handler/Body
pp(), SystemTap Handler/Body
SystemTap scripts
introduction, SystemTap Scripts
target(), SystemTap Handler/Body
thread_indent(), SystemTap Handler/Body
tid(), SystemTap Handler/Body
uid(), SystemTap Handler/Body
functions (used in handlers)
exit(), SystemTap Handler/Body
functions called in network socket code, tracing
examples of SystemTap scripts, Tracing Functions Called in Network Socket Code
futex (lock) contentions
examples of SystemTap scripts, Identifying Contended User-Space Locks
futex contention, definition
examples of SystemTap scripts, Identifying Contended User-Space Locks
futex contentions, identifying
examples of SystemTap scripts, Identifying Contended User-Space Locks
futex system call
examples of SystemTap scripts, Identifying Contended User-Space Locks

G

gettimeofday_s()
functions, SystemTap Handler/Body
global
SystemTap handler constructs
handlers, Variables
goals, documentation
Introduction, Documentation Goals
grammatical/typographical script error
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
guru mode
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors

H

handler functions, SystemTap Handler/Body
handlers
conditional statements, Conditional Statements
conditional operators, Conditional Statements
for loops, Conditional Statements
if/else, Conditional Statements
while loops, Conditional Statements
introduction, SystemTap Handler/Body
SystemTap handler constructs, Basic SystemTap Handler Constructs
command-line arguments, Command-Line Arguments
global, Variables
syntax and format, Basic SystemTap Handler Constructs
variable notations, Command-Line Arguments
variables, Variables
target variables, Target Variables
handlers and events, Understanding How SystemTap Works
SystemTap scripts
introduction, SystemTap Scripts
heaviest disk reads/writes, identifying
script examples, Summarizing Disk Read/Write Traffic
host system
cross-instrumentation, Generating Instrumentation for Other Computers
host system and target system
cross-instrumentation
configuration, Generating Instrumentation for Other Computers

I

I/O block time, monitoring
examples of SystemTap scripts, Periodically Print I/O Block Time
I/O monitoring (by device)
examples of SystemTap scripts, I/O Monitoring (By Device)
I/O time, monitoring
examples of SystemTap scripts, Tracking I/O Time For Each File Read or Write
I/O traffic, summarizing
script examples, Summarizing Disk Read/Write Traffic
identifier type mismatch
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
identifying contended user-space locks (futex contentions)
examples of SystemTap scripts, Identifying Contended User-Space Locks
identifying heaviest disk reads/writes
script examples, Summarizing Disk Read/Write Traffic
if/else
conditional statements
handlers, Conditional Statements
if/else conditionals, alternative syntax
examples of SystemTap scripts, Network Profiling
if/else statements, using arrays in
array operations, Using Arrays in Conditional Statements
incoming TCP connections, monitoring
examples of SystemTap scripts, Monitoring Incoming TCP Connections
incoming/outgoing function calls, tracing
examples of SystemTap scripts, Call Graph Tracing
incrementing associated values
array operations, Incrementing Associated Values
tallying virtual file system reads (VFS reads), Incrementing Associated Values
index expression
introduction
arrays, Associative Arrays
initial testing, Initial Testing
inode number
examples of SystemTap scripts, Monitoring Reads and Writes to a File
Installation
initial testing, Initial Testing
kernel information packages, Installing Required Kernel Information Packages Manually
kernel version, determining the, Installing Required Kernel Information Packages Manually
required packages, Installing Required Kernel Information Packages Manually
Setup and Installation, Installation and Setup
systemtap package, Installing SystemTap
systemtap-runtime package, Installing SystemTap
instrumentation module
cross-instrumentation, Generating Instrumentation for Other Computers
instrumentation modules from SystemTap scripts, building, Generating Instrumentation for Other Computers
integer extractors
computing for statistical aggregates
array operations, Computing for Statistical Aggregates
Introduction
capabilities of SystemTap, SystemTap Capabilities
documentation goals, Documentation Goals
goals, documentation, Documentation Goals
limitations of SystemTap, Limitations of SystemTap
performance monitoring, Introduction
invalid division
runtime errors/warnings
understainding SystemTap errors, Runtime Errors and Warnings
invalid values to variables/arrays
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
iterations, processing elements in an array as
processing multiple elements in an array
array operations, Processing Multiple Elements in an Array

K

kernel and user space, determining time spent in
examples of SystemTap scripts, Determining Time Spent in Kernel and User Space
kernel information packages, Installing Required Kernel Information Packages Manually
kernel modules from SystemTap scripts, building, Generating Instrumentation for Other Computers
kernel version, determining the, Installing Required Kernel Information Packages Manually
kernel.function("function")
Events, Event
kernel.trace("tracepoint")
Events, Event
key pairs
introduction
arrays, Associative Arrays

L

libdwfl failure
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
limitations of SystemTap
Introduction, Limitations of SystemTap
limiting the output of foreach
processing multiple elements in an array
array operations, Processing Multiple Elements in an Array
local variables
name, SystemTap Handler/Body
sample usage
$count, Tracking I/O Time For Each File Read or Write
$return, Summarizing Disk Read/Write Traffic, Track Cumulative IO

M

MAXACTION exceeded
runtime errors/warnings
understainding SystemTap errors, Runtime Errors and Warnings
MAXNESTING exceeded
runtime errors/warnings
understainding SystemTap errors, Runtime Errors and Warnings
membership (in array), testing for
conditional statements, using arrays in
array operations, Using Arrays in Conditional Statements
module("module")
Events, Event
monitoring changes to file attributes
examples of SystemTap scripts, Monitoring Changes to File Attributes
monitoring cumulative I/O
examples of SystemTap scripts, Track Cumulative IO
monitoring device I/O
examples of SystemTap scripts, I/O Monitoring (By Device)
monitoring I/O block time
examples of SystemTap scripts, Periodically Print I/O Block Time
monitoring I/O time
examples of SystemTap scripts, Tracking I/O Time For Each File Read or Write
monitoring incoming TCP connections
examples of SystemTap scripts, Monitoring Incoming TCP Connections
monitoring polling applications
examples of SystemTap scripts, Monitoring Polling Applications
monitoring reads and writes to a file
examples of SystemTap scripts, Monitoring Reads and Writes to a File
monitoring system calls
examples of SystemTap scripts, Tracking Most Frequently Used System Calls
monitoring system calls (volume per process)
examples of SystemTap scripts, Tracking System Call Volume Per Process
monitoring TCP packets
examples of SystemTap scripts, Monitoring TCP Packets
multiple array operations within the same probe
clearing arrays/array elements
array operations, Clearing/Deleting Arrays and Array Elements
multiple command-line arguments, example of
examples of SystemTap scripts, Call Graph Tracing
multiple elements in an array
array operations, Processing Multiple Elements in an Array

N

name
local variables, SystemTap Handler/Body
net/socket.c, tracing functions from
examples of SystemTap scripts, Tracing Functions Called in Network Socket Code
network profiling
examples of SystemTap scripts, Network Profiling, Monitoring Network Packets Drops in Kernel
network socket code, tracing functions called in
examples of SystemTap scripts, Tracing Functions Called in Network Socket Code
network traffic, monitoring
examples of SystemTap scripts, Network Profiling, Monitoring Network Packets Drops in Kernel
no match for probe point
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
non-global arrays
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
number of errors: N, skipped probes: M
runtime errors/warnings
understainding SystemTap errors, Runtime Errors and Warnings

O

operations
assigning associated values
associating timestamps to process names, Assigning an Associated Value
associative arrays, Array Operations in SystemTap
clearing arrays/array elements, Clearing/Deleting Arrays and Array Elements
delete operator, Clearing/Deleting Arrays and Array Elements
multiple array operations within the same probe, Clearing/Deleting Arrays and Array Elements
virtual file system reads (non-cumulative), tallying, Clearing/Deleting Arrays and Array Elements
computing for statistical aggregates, Computing for Statistical Aggregates
@avg (integer extractor), Computing for Statistical Aggregates
@count (integer extractor), Computing for Statistical Aggregates
@max (integer extractor), Computing for Statistical Aggregates
@min (integer extractor), Computing for Statistical Aggregates
@sum (integer extractor), Computing for Statistical Aggregates
adding values to statistical aggregates, Computing for Statistical Aggregates
count (operator), Computing for Statistical Aggregates
extracting data collected by statistical aggregates, Computing for Statistical Aggregates
conditional statements, using arrays in, Using Arrays in Conditional Statements
testing for array membership, Using Arrays in Conditional Statements
deleting arrays and array elements, Clearing/Deleting Arrays and Array Elements
incrementing associated values, Incrementing Associated Values
tallying virtual file system reads (VFS reads), Incrementing Associated Values
multiple elements in an array, Processing Multiple Elements in an Array
processing multiple elements in an array, Processing Multiple Elements in an Array
cumulative virtual file system reads, tallying, Processing Multiple Elements in an Array
foreach, Processing Multiple Elements in an Array
iterations, processing elements in an array as, Processing Multiple Elements in an Array
limiting the output of foreach, Processing Multiple Elements in an Array
ordering the output of foreach, Processing Multiple Elements in an Array
reading values from arrays, Reading Values From Arrays
computing for timestamp deltas, Reading Values From Arrays
empty unique keys, Reading Values From Arrays
using arrays in simple computations, Reading Values From Arrays
options, stap
Usage, Running SystemTap Scripts
ordering the output of foreach
processing multiple elements in an array
array operations, Processing Multiple Elements in an Array
overflow of aggregation
runtime errors/warnings
understainding SystemTap errors, Runtime Errors and Warnings

P

packages required to run SystemTap, Installing Required Kernel Information Packages Manually
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
embedded code in unprivileged script, Parse and Semantic Errors
expected symbol/array index expression, Parse and Semantic Errors
grammatical/typographical script error, Parse and Semantic Errors
guru mode, Parse and Semantic Errors
invalid values to variables/arrays, Parse and Semantic Errors
libdwfl failure, Parse and Semantic Errors
no match for probe point, Parse and Semantic Errors
non-global arrays, Parse and Semantic Errors
probe mismatch, Parse and Semantic Errors
type mismatch for identifier, Parse and Semantic Errors
unresolved function call, Parse and Semantic Errors
unresolved target-symbol expression, Parse and Semantic Errors
unresolved type for identifier, Parse and Semantic Errors
variable modified during 'foreach', Parse and Semantic Errors
performance monitoring
Introduction, Introduction
pointer dereference fault
runtime errors/warnings
understainding SystemTap errors, Runtime Errors and Warnings
polling applications, monitoring
examples of SystemTap scripts, Monitoring Polling Applications
pp()
functions, SystemTap Handler/Body
printf()
format specifiers, SystemTap Handler/Body
format strings, SystemTap Handler/Body
syntax and format, SystemTap Handler/Body
printing I/O activity (cumulative)
examples of SystemTap scripts, Track Cumulative IO
printing I/O block time (periodically)
examples of SystemTap scripts, Periodically Print I/O Block Time
probe mismatch
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
probe point (no match for)
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
probes
SystemTap scripts
introduction, SystemTap Scripts
processing multiple elements in an array
array operations, Processing Multiple Elements in an Array
cumulative virtual file system reads, tallying
array operations, Processing Multiple Elements in an Array
foreach
array operations, Processing Multiple Elements in an Array
limiting the output of foreach
array operations, Processing Multiple Elements in an Array
ordering the output of foreach
array operations, Processing Multiple Elements in an Array
profiling the network
examples of SystemTap scripts, Network Profiling, Monitoring Network Packets Drops in Kernel

R

reading values from arrays
array operations, Reading Values From Arrays
empty unique keys, Reading Values From Arrays
using arrays in simple computations, Reading Values From Arrays
computing for timestamp deltas
array operations, Reading Values From Arrays
reads/writes to a file, monitoring
examples of SystemTap scripts, Monitoring Reads and Writes to a File
required packages, Installing Required Kernel Information Packages Manually
RPMs required to run SystemTap, Installing Required Kernel Information Packages Manually
running scripts from standard input, Running SystemTap Scripts
running SystemTap scripts
Usage, Running SystemTap Scripts
runtime errors/warnings
understainding SystemTap errors, Runtime Errors and Warnings
aggregate element not found, Runtime Errors and Warnings
aggregation overflow, Runtime Errors and Warnings
copy fault, Runtime Errors and Warnings
division by 0, Runtime Errors and Warnings
MAXACTION exceeded, Runtime Errors and Warnings
MAXNESTING exceeded, Runtime Errors and Warnings
number of errors: N, skipped probes: M, Runtime Errors and Warnings
pointer dereference fault, Runtime Errors and Warnings

S

script examples
call graph tracing, Call Graph Tracing
CPU ticks, Determining Time Spent in Kernel and User Space
ctime(), example of usage, Summarizing Disk Read/Write Traffic
determining time spent in kernel and user space, Determining Time Spent in Kernel and User Space
file device number (integer format), Monitoring Reads and Writes to a File
futex (lock) contentions, Identifying Contended User-Space Locks
futex system call, Identifying Contended User-Space Locks
identifying contended user-space locks (futex contentions), Identifying Contended User-Space Locks
if/else conditionals, alternative syntax, Network Profiling
inode number, Monitoring Reads and Writes to a File
monitoring changes to file attributes, Monitoring Changes to File Attributes
monitoring device I/O, I/O Monitoring (By Device)
monitoring I/O block time, Periodically Print I/O Block Time
monitoring I/O time, Tracking I/O Time For Each File Read or Write
monitoring incoming TCP connections, Monitoring Incoming TCP Connections
monitoring polling applications, Monitoring Polling Applications
monitoring reads and writes to a file, Monitoring Reads and Writes to a File
monitoring system calls, Tracking Most Frequently Used System Calls
monitoring system calls (volume per process), Tracking System Call Volume Per Process
monitoring TCP packets, Monitoring TCP Packets
multiple command-line arguments, example of, Call Graph Tracing
net/socket.c, tracing functions from, Tracing Functions Called in Network Socket Code
network profiling, Network Profiling, Monitoring Network Packets Drops in Kernel
stat -c, determining file device number (integer format), Monitoring Reads and Writes to a File
stat -c, determining whole device number, I/O Monitoring (By Device)
summarizing disk I/O traffic, Summarizing Disk Read/Write Traffic
tallying function calls, Counting Function Calls Made
thread_indent(), sample usage, Call Graph Tracing
timer.ms(), sample usage, Counting Function Calls Made
timer.s(), sample usage, Monitoring Polling Applications, Tracking Most Frequently Used System Calls
tracing functions called in network socket code, Tracing Functions Called in Network Socket Code
tracking cumulative I/O, Track Cumulative IO
trigger function, Call Graph Tracing
usrdev2kerndev(), I/O Monitoring (By Device)
whole device number (usage as a command-line argument), I/O Monitoring (By Device)
scripts
introduction, SystemTap Scripts
components, SystemTap Scripts
events and handlers, SystemTap Scripts
format and syntax, SystemTap Scripts
functions, SystemTap Scripts
probes, SystemTap Scripts
statement blocks, SystemTap Scripts
sessions, SystemTap, Architecture
Setup and Installation, Installation and Setup
Stack backtrace
user-space, User-Space Stack Backtraces
standard input, running scripts from
Usage, Running SystemTap Scripts
stap
Usage, Running SystemTap Scripts
stap options, Running SystemTap Scripts
stapdev
Usage, Running SystemTap Scripts
staprun
Usage, Running SystemTap Scripts
stapusr
Usage, Running SystemTap Scripts
stat -c, determining file device number (integer format)
examples of SystemTap scripts, Monitoring Reads and Writes to a File
stat -c, determining whole device number
examples of SystemTap scripts, I/O Monitoring (By Device)
statement blocks
SystemTap scripts
introduction, SystemTap Scripts
statistical aggregates
array operations, Computing for Statistical Aggregates
summarizing disk I/O traffic
script examples, Summarizing Disk Read/Write Traffic
synchronous events
Events, Event
syntax
introduction
arrays, Associative Arrays
syntax and format
printf(), SystemTap Handler/Body
SystemTap handler constructs
handlers, Basic SystemTap Handler Constructs
SystemTap scripts
introduction, SystemTap Scripts
syscall.system_call
Events, Event
system calls volume (per process), monitoring
examples of SystemTap scripts, Tracking System Call Volume Per Process
system calls, monitoring
examples of SystemTap scripts, Tracking Most Frequently Used System Calls
SystemTap architecture, Architecture
SystemTap handlers
SystemTap handler constructs, Basic SystemTap Handler Constructs
syntax and format, Basic SystemTap Handler Constructs
systemtap package, Installing SystemTap
SystemTap script functions, SystemTap Handler/Body
SystemTap scripts
introduction, SystemTap Scripts
components, SystemTap Scripts
events and handlers, SystemTap Scripts
format and syntax, SystemTap Scripts
functions, SystemTap Scripts
probes, SystemTap Scripts
statement blocks, SystemTap Scripts
useful examples, Useful SystemTap Scripts
SystemTap scripts, how to run, Running SystemTap Scripts
SystemTap sessions, Architecture
SystemTap statements
conditional statements, Conditional Statements
conditional operators, Conditional Statements
for loops, Conditional Statements
if/else, Conditional Statements
while loops, Conditional Statements
SystemTap handler constructs
command-line arguments, Command-Line Arguments
global, Variables
variable notations, Command-Line Arguments
variables, Variables
systemtap-runtime package, Installing SystemTap
systemtap-testsuite package
sample scripts, Useful SystemTap Scripts

T

tallying function calls
examples of SystemTap scripts, Counting Function Calls Made
tallying virtual file system reads (VFS reads)
incrementing associated values
array operations, Incrementing Associated Values
Tapsets
definition of, Tapsets
target kernel
cross-instrumentation, Generating Instrumentation for Other Computers
target system
cross-instrumentation, Generating Instrumentation for Other Computers
target system and host system
configuration, Generating Instrumentation for Other Computers
target variables, Target Variables
pretty printing, Pretty Printing Target Variables
typecasting, Typecasting
user-space, Accessing User-Space Target Variables
variable availability, Checking Target Variable Availability
target()
functions, SystemTap Handler/Body
target-symbol expression, unresolved
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
TCP connections (incoming), monitoring
examples of SystemTap scripts, Monitoring Incoming TCP Connections
TCP packets, monitoring
examples of SystemTap scripts, Monitoring TCP Packets
testing for array membership
conditional statements, using arrays in
array operations, Using Arrays in Conditional Statements
testing, initial, Initial Testing
thread_indent()
functions, SystemTap Handler/Body
thread_indent(), sample usage
examples of SystemTap scripts, Call Graph Tracing
tid()
functions, SystemTap Handler/Body
time of I/O
examples of SystemTap scripts, Tracking I/O Time For Each File Read or Write
time spent in kernel/user space, determining
examples of SystemTap scripts, Determining Time Spent in Kernel and User Space
timer events
Events, Event
timer.ms(), sample usage
examples of SystemTap scripts, Counting Function Calls Made
timer.s(), sample usage
examples of SystemTap scripts, Monitoring Polling Applications, Tracking Most Frequently Used System Calls
timestamp deltas, computing for
reading values from arrays
array operations, Reading Values From Arrays
timestamps, association thereof to process names
assigning associated values
array operations, Assigning an Associated Value
tracepoint, Event, Monitoring Network Packets Drops in Kernel
tracing call graph
examples of SystemTap scripts, Call Graph Tracing
tracing functions called in network socket code
examples of SystemTap scripts, Tracing Functions Called in Network Socket Code
tracing incoming/outgoing function calls
examples of SystemTap scripts, Call Graph Tracing
tracking cumulative I/O
examples of SystemTap scripts, Track Cumulative IO
trigger function
examples of SystemTap scripts, Call Graph Tracing
type mismatch for identifier
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
typographical script error
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors

U

uid()
functions, SystemTap Handler/Body
uname -m, Generating Instrumentation for Other Computers
uname -r, Installing Required Kernel Information Packages Manually
understainding SystemTap errors
runtime errors/warnings, Runtime Errors and Warnings
aggregate element not found, Runtime Errors and Warnings
aggregation overflow, Runtime Errors and Warnings
copy fault, Runtime Errors and Warnings
division by 0, Runtime Errors and Warnings
MAXACTION exceeded, Runtime Errors and Warnings
MAXNESTING exceeded, Runtime Errors and Warnings
number of errors: N, skipped probes: M, Runtime Errors and Warnings
pointer dereference fault, Runtime Errors and Warnings
Understanding How SystemTap Works, Understanding How SystemTap Works
architecture, Architecture
event types, Understanding How SystemTap Works
events and handlers, Understanding How SystemTap Works
SystemTap sessions, Architecture
understanding SystemTap errors
parse/semantics error, Parse and Semantic Errors
embedded code in unprivileged script, Parse and Semantic Errors
expected symbol/array index expression, Parse and Semantic Errors
grammatical/typographical script error, Parse and Semantic Errors
guru mode, Parse and Semantic Errors
invalid values to variables/arrays, Parse and Semantic Errors
libdwfl failure, Parse and Semantic Errors
no match for probe point, Parse and Semantic Errors
non-global arrays, Parse and Semantic Errors
probe mismatch, Parse and Semantic Errors
type mismatch for identifier, Parse and Semantic Errors
unresolved function call, Parse and Semantic Errors
unresolved target-symbol expression, Parse and Semantic Errors
unresolved type for identifier, Parse and Semantic Errors
variable modified during 'foreach', Parse and Semantic Errors
unique keys
introduction
arrays, Associative Arrays
unprivileged script, embedded code in
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
unresolved function call
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
unresolved target-symbol expression
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
unresolved type for identifier
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
unsafe embedded code in unprivileged script
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
Usage
options, stap, Running SystemTap Scripts
running SystemTap scripts, Running SystemTap Scripts
standard input, running scripts from, Running SystemTap Scripts
stap, Running SystemTap Scripts
stapdev, Running SystemTap Scripts
staprun, Running SystemTap Scripts
stapusr, Running SystemTap Scripts
useful examples of SystemTap scripts, Useful SystemTap Scripts
user and kernel space, determining time spent in
examples of SystemTap scripts, Determining Time Spent in Kernel and User Space
using arrays in simple computations
reading values from arrays
array operations, Reading Values From Arrays
Using SystemTap, Using SystemTap
usrdev2kerndev()
examples of SystemTap scripts, I/O Monitoring (By Device)

V

values, assignment of
array operations, Assigning an Associated Value
variable modified during 'foreach'
parse/semantics error
understanding SystemTap errors, Parse and Semantic Errors
variable notations
SystemTap handler constructs
handlers, Command-Line Arguments
variables
SystemTap handler constructs
handlers, Variables
variables (local)
name, SystemTap Handler/Body
sample usage
$count, Tracking I/O Time For Each File Read or Write
$return, Summarizing Disk Read/Write Traffic, Track Cumulative IO
VFS reads, tallying of
incrementing associated values
array operations, Incrementing Associated Values
vfs.file_operation
Events, Event
virtual file system reads (cumulative), tallying
processing multiple elements in an array
array operations, Processing Multiple Elements in an Array
virtual file system reads (non-cumulative), tallying
clearing arrays/array elements
array operations, Clearing/Deleting Arrays and Array Elements

W

while loops
conditional statements
handlers, Conditional Statements
whole device number (usage as a command-line argument)
examples of SystemTap scripts, I/O Monitoring (By Device)
wildcards in events, Event
writes/reads to a file, monitoring
examples of SystemTap scripts, Monitoring Reads and Writes to a File
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/mainsect-disk.html b/SystemTap_Beginners_Guide/mainsect-disk.html index 8bfa872f..b89420b3 100644 --- a/SystemTap_Beginners_Guide/mainsect-disk.html +++ b/SystemTap_Beginners_Guide/mainsect-disk.html @@ -1,10 +1,9 @@ - -5.2. Disk

Product SiteDocumentation Site

5.2. Disk

+5.2. Disk

Product SiteDocumentation Site

5.2. Disk

The following sections showcase scripts that monitor disk and I/O activity. -

5.2.1. Summarizing Disk Read/Write Traffic

+

5.2.1. Summarizing Disk Read/Write Traffic

This section describes how to identify which processes are performing the heaviest disk reads/writes to the system. -
disktop.stp
+
disktop.stp
#!/usr/bin/env stap 
 #
@@ -80,7 +79,7 @@ probe end{
 
disktop.stp outputs the top ten processes responsible for the heaviest reads/writes to disk. Example 5.6, “disktop.stp Sample Output” displays a sample output for this script, and includes the following data per listed process: -
  • +
    • UID — user ID. A user ID of 0 refers to the root user.
    • PID — the ID of the listed process. @@ -94,11 +93,11 @@ probe end{ T — the type of action performed by the listed process; W refers to write, while R refers to read.
    • BYTES — the amount of data read to or written from disk. -
    +
The time and date in the output of disktop.stp is returned by the functions ctime() and gettimeofday_s(). ctime() derives calendar time in terms of seconds passed since the Unix epoch (January 1, 1970). gettimeofday_s() counts the actual number of seconds since Unix epoch, which gives a fairly accurate human-readable timestamp for the output. -
- In this script, the $return is a local variable that stores the actual number of bytes each process reads or writes from the virtual file system. $return can only be used in return probes (e.g. vfs.read.return and vfs.read.return). -
Example 5.6. disktop.stp Sample Output
[...]
+	
+ In this script, the $return is a local variable that stores the actual number of bytes each process reads or writes from the virtual file system. $return can only be used in return probes (for example, vfs.read.return and vfs.read.return). +

Example 5.6. disktop.stp Sample Output

[...]
 Mon Sep 29 03:38:28 2008 , Average:  19Kb/sec, Read: 7Kb, Write: 89Kb
 
 UID      PID     PPID                       CMD   DEVICE    T    BYTES
@@ -110,4 +109,4 @@ Mon Sep 29 03:38:38 2008 , Average:   1Kb/sec, Read: 7Kb, Write: 1Kb
 
 UID      PID     PPID                       CMD   DEVICE    T    BYTES
 0     2758     2757           pam_timestamp_c     sda5    R         8064
-0     2885        1                     cupsd     sda5    W         1678

+0 2885 1 cupsd sda5 W 1678

\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/mainsect-profiling.html b/SystemTap_Beginners_Guide/mainsect-profiling.html index 79cf5e72..9d7dc815 100644 --- a/SystemTap_Beginners_Guide/mainsect-profiling.html +++ b/SystemTap_Beginners_Guide/mainsect-profiling.html @@ -1,10 +1,9 @@ - -5.3. Profiling

Product SiteDocumentation Site

5.3. Profiling

+5.3. Profiling

Product SiteDocumentation Site

5.3. Profiling

The following sections showcase scripts that profile kernel activity by monitoring function calls. -

5.3.1. Counting Function Calls Made

- This section describes how to identify how many times the system called a specific kernel function in a 30-second sample. Depending on your use of wildcards, you can also use this script to target multiple kernel functions. -
functioncallcount.stp
+

5.3.1. Counting Function Calls Made

+ This section describes how to identify how many times the system called a specific kernel function in a 30-second sample. Depending on the use of wildcards, you can also use this script to target multiple kernel functions. +
functioncallcount.stp
#! /usr/bin/env stap
 # The following line command will probe all the functions
@@ -27,9 +26,9 @@ probe end {
 
functioncallcount.stp takes the targeted kernel function as an argument. The argument supports wildcards, which enables you to target multiple kernel functions up to a certain extent. -
+
The output of functioncallcount.stp contains the name of the function called and how many times it was called during the sample time (in alphabetical order). Example 5.13, “functioncallcount.stp Sample Output” contains an excerpt from the output of stap functioncallcount.stp "*@mm/*.c": -
Example 5.13. functioncallcount.stp Sample Output
[...]
+	

Example 5.13. functioncallcount.stp Sample Output

[...]
 __vma_link 97
 __vma_link_file 66
 __vma_link_list 97
@@ -56,4 +55,4 @@ atomic_add_negative 97
 atomic_dec_and_test 5153
 atomic_inc 470
 atomic_inc_and_test 1
-[...]

+[...]

\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/paracallgraph.html b/SystemTap_Beginners_Guide/paracallgraph.html index b7d66f85..6e84e220 100644 --- a/SystemTap_Beginners_Guide/paracallgraph.html +++ b/SystemTap_Beginners_Guide/paracallgraph.html @@ -1,8 +1,7 @@ - -5.3.2. Call Graph Tracing

Product SiteDocumentation Site

5.3.2. Call Graph Tracing

+5.3.2. Call Graph Tracing

Product SiteDocumentation Site

5.3.2. Call Graph Tracing

This section describes how to trace incoming and outgoing function calls. -
para-callgraph.stp
+
para-callgraph.stp
#! /usr/bin/env stap
 
@@ -29,17 +28,17 @@ probe $2.return {
 probe $1.call   { trace(1, $$parms) }
 probe $1.return { trace(-1, $$return) }
 
-
+
para-callgraph.stp takes two command-line arguments: -
  • +
    • The function/s whose entry/exit call you'd like to trace ($1).
    • A second optional trigger function ($2), which enables or disables tracing on a per-thread basis. Tracing in each thread will continue as long as the trigger function has not exited yet. -
    - para-callgraph.stp uses thread_indent(); as such, its output contains the timestamp, process name, and thread ID of $1 (i.e. the probe function you are tracing). For more information about thread_indent(), refer to its entry in SystemTap Functions. +
+ para-callgraph.stp uses thread_indent(); as such, its output contains the timestamp, process name, and thread ID of $1 (that is, the probe function you are tracing). For more information about thread_indent(), refer to its entry in SystemTap Functions.
The following example contains an excerpt from the output for stap para-callgraph.stp 'kernel.function("*@fs/*.c")' 'kernel.function("sys_read")': -
Example 5.14. para-callgraph.stp Sample Output
[...]
+	

Example 5.14. para-callgraph.stp Sample Output

[...]
    267 gnome-terminal(2921): <-do_sync_read return=0xfffffffffffffff5
    269 gnome-terminal(2921):<-vfs_read return=0xfffffffffffffff5
      0 gnome-terminal(2921):->fput file=0xffff880111eebbc0
@@ -52,4 +51,4 @@ probe $1.return { trace(-1, $$return) }
     12 gnome-terminal(2921): ->do_sync_read filp=0xffff8801116ce980 buf=0xc86504 len=0x1000 ppos=0xffff88010544df48
     15 gnome-terminal(2921): <-do_sync_read return=0xfffffffffffffff5
     18 gnome-terminal(2921):<-vfs_read return=0xfffffffffffffff5
-     0 gnome-terminal(2921):->fput file=0xffff8801116ce980

+ 0 gnome-terminal(2921):->fput file=0xffff8801116ce980

\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/pr01s02.html b/SystemTap_Beginners_Guide/pr01s02.html index bd1c1b3f..7ab3cf8c 100644 --- a/SystemTap_Beginners_Guide/pr01s02.html +++ b/SystemTap_Beginners_Guide/pr01s02.html @@ -1,9 +1,8 @@ - -2. We Need Feedback!

Product SiteDocumentation Site

2. We Need Feedback!

+2. We Need Feedback!

Product SiteDocumentation Site

2. We Need Feedback!

If you find a typographical error in this manual, or if you have thought of a way to make this manual better, we would love to hear from you! Please submit a report in Bugzilla: http://sourceware.org/bugzilla/ against the product systemtap.
When submitting a report, be sure to include the specific file or URL the report refers to and the manual's identifier: SystemTap_Beginners_Guide
If you have a suggestion for improving the documentation, try to be as specific as possible when describing it. If you have found an error, please include the section number and some of the surrounding text so we can find it easily. -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/references.html b/SystemTap_Beginners_Guide/references.html index 3a278475..316e8e2d 100644 --- a/SystemTap_Beginners_Guide/references.html +++ b/SystemTap_Beginners_Guide/references.html @@ -1,23 +1,22 @@ - -Chapter 7. References

Product SiteDocumentation Site

Chapter 7. References

- This chapter enumerates other references for more information about SystemTap. It is advisable that you refer to these sources in the course of writing advanced probes and tapsets. -
SystemTap Wiki
- The SystemTap Wiki is a collection of links and articles related to the deployment, usage, and development of SystemTap. You can find it at http://sourceware.org/systemtap/wiki/HomePage. -
SystemTap Tutorial
- Much of the content in this book comes from the SystemTap Tutorial. The SystemTap Tutorial is a more appropriate reference for users with intermediate to advanced knowledge of C++ and kernel development, and can be found at http://sourceware.org/systemtap/tutorial/. -
man stapprobes
- The stapprobes man page enumerates a variety of probe points supported by SystemTap, along with additional aliases defined by the SystemTap tapset library. The bottom of the man page includes a list of other man pages enumerating similar probe points for specific system components, such as tapset::scsi, tapset::kprocess, tapset::signal, etc. -
man stapfuncs
- The stapfuncs man page enumerates numerous functions supported by the SystemTap tapset library, along with the prescribed syntax for each one. Note, however, that this is not a complete list of all supported functions; there are more undocumented functions available. -
SystemTap Tapset Reference Manual
- The SystemTap Tapset Reference Manual at http://sourceware.org/systemtap/tapsets/ describes the individual predefined functions and probe points of the tapsets greater detail. -
SystemTap Language Reference
- This document is a comprehensive reference of SystemTap's language constructs and syntax. It is recommended for users with a rudimentary to intermediate knowledge of C++ and other similar programming languages. The SystemTap Language Reference is available to all users at http://sourceware.org/systemtap/langref/ -
Tapset Developers Guide
- Once you have sufficient proficiency in writing SystemTap scripts, you can then try your hand out on writing your own tapsets. The Tapset Developers Guide describes how to add functions to your tapset library. -
Test Suite
- The systemtap-testsuite package allows you to test the entire SystemTap toolchain without having to build from source. In addition, it also contains numerous examples of SystemTap scripts you can study and test; some of these scripts are also documented in Chapter 5, Useful SystemTap Scripts. +Chapter 7. References

Product SiteDocumentation Site

Chapter 7. References

+ This chapter enumerates other references for more information about SystemTap. Refer to these sources in the course of writing advanced probes and tapsets. +
SystemTap Wiki
+ The SystemTap Wiki is a collection of links and articles related to the deployment, usage, and development of SystemTap. You can find it at http://sourceware.org/systemtap/wiki/HomePage. +
SystemTap Tutorial
+ Much of the content in this book comes from the SystemTap Tutorial. The SystemTap Tutorial is a more appropriate reference for users with intermediate to advanced knowledge of C++ and kernel development, and you can find it at http://sourceware.org/systemtap/tutorial/. +
man stapprobes
+ The stapprobes(3stap) man page enumerates a variety of probe points supported by SystemTap, along with additional aliases defined by the SystemTap tapset library. The bottom part of the man page includes a list of other man pages enumerating similar probe points for specific system components, such as tapset::scsi, tapset::kprocess, tapset::signal, and so on. +
man stapfuncs
+ The stapfuncs(3stap) man page enumerates numerous functions supported by the SystemTap tapset library, along with the prescribed syntax for each of them. Note, however, that it does not provide a complete list of all supported functions; there are more undocumented functions available. +
SystemTap Tapset Reference Manual
+ The SystemTap Tapset Reference Manual describes the individual predefined functions and probe points of the tapsets in greater detail. You can find it at http://sourceware.org/systemtap/tapsets/. +
SystemTap Language Reference
+ The SystemTap Language Reference is a comprehensive reference of SystemTap's language constructs and syntax. It is recommended for users with a rudimentary to intermediate knowledge of C++ and other similar programming languages, and is available to all users at http://sourceware.org/systemtap/langref/. +
Tapset Developers Guide
+ Once you have sufficient proficiency in writing SystemTap scripts, you can try to write your own tapsets. The Tapset Developers Guide describes how to add functions to your tapset library. +
Test Suite
+ The systemtap-testsuite package allows you to test the entire SystemTap toolchain without having to build it from source code. In addition, it also contains numerous examples of SystemTap scripts to study and test; some of these scripts are also documented in Chapter 5, Useful SystemTap Scripts.
- By default, the example scripts included in systemtap-testsuite are located in /usr/share/systemtap/testsuite/systemtap.examples. -
+ By default, the example scripts included in systemtap-testsuite are located in the /usr/share/systemtap/testsuite/systemtap.examples/ directory. +
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/runtimeerror.html b/SystemTap_Beginners_Guide/runtimeerror.html index 2b9a63de..972c26a4 100644 --- a/SystemTap_Beginners_Guide/runtimeerror.html +++ b/SystemTap_Beginners_Guide/runtimeerror.html @@ -1,21 +1,20 @@ - -6.2. Run Time Errors and Warnings

Product SiteDocumentation Site

6.2. Run Time Errors and Warnings

+6.2. Runtime Errors and Warnings

Product SiteDocumentation Site

6.2. Runtime Errors and Warnings

Runtime errors and warnings occur when the SystemTap instrumentation has been installed and is collecting data on the system. -
WARNING: Number of errors: N, skipped probes: M
- Errors and/or skipped probes occurred during this run. Both N and M are the counts of the number of probes that were not executed due to conditions such as too much time required to execute event handlers over an interval of time. -
division by 0
- The script code performed an invalid division. -
aggregate element not found
- A statistics extractor function other than @count was invoked on an aggregate that has not had any values accumulated yet. This is similar to a division by zero. -
aggregation overflow
- An array containing aggregate values contains too many distinct key pairs at this time. -
MAXNESTING exceeded
- Too many levels of function call nesting were attempted. The default nesting of function calls allowed is 10. -
MAXACTION exceeded
- The probe handler attempted to execute too many statements in the probe handler. The default number of actions allowed in a probe handler is 1000. -
kernel/user string copy fault at ADDR
- The probe handler attempted to copy a string from kernel or user-space at an invalid address (ADDR). -
pointer dereference fault
- There was a fault encountered during a pointer dereference operation such as a target variable evaluation. -
+

WARNING: Number of errors: N, skipped probes: M

+ Errors and/or skipped probes occurred during this run. Both N and M are the counts of the number of probes that were not executed due to conditions such as too much time required to execute event handlers over an interval of time. +

division by 0

+ The script code performed an invalid division. +

aggregate element not found

+ A statistics extractor function other than @count was invoked on an aggregate that has not had any values accumulated yet. This is similar to a division by zero. +

aggregation overflow

+ An array containing aggregate values contains too many distinct key pairs at this time. +

MAXNESTING exceeded

+ Too many levels of function call nesting were attempted. The default nesting of function calls allowed is 10. +

MAXACTION exceeded

+ The probe handler attempted to execute too many statements in the probe handler. The default number of actions allowed in a probe handler is 1000. +

kernel/user string copy fault at ADDR

+ The probe handler attempted to copy a string from kernel or user space at an invalid address (ADDR). +

pointer dereference fault

+ There was a fault encountered during a pointer dereference operation such as a target variable evaluation. +
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/scriptconstructions.html b/SystemTap_Beginners_Guide/scriptconstructions.html index a9d49f36..ab9ce81a 100644 --- a/SystemTap_Beginners_Guide/scriptconstructions.html +++ b/SystemTap_Beginners_Guide/scriptconstructions.html @@ -1,12 +1,11 @@ - -3.3. Basic SystemTap Handler Constructs

Product SiteDocumentation Site

3.3. Basic SystemTap Handler Constructs

+3.3. Basic SystemTap Handler Constructs

Product SiteDocumentation Site

3.3. Basic SystemTap Handler Constructs

SystemTap supports the use of several basic constructs in handlers. The syntax for most of these handler constructs are mostly based on C and awk syntax. This section describes several of the most useful SystemTap handler constructs, which should provide you with enough information to write simple yet useful SystemTap scripts. -

3.3.1. Variables

+

3.3.1. Variables

Variables can be used freely throughout a handler; simply choose a name, assign a value from a function or expression to it, and use it in an expression. SystemTap automatically identifies whether a variable should be typed as a string or integer, based on the type of the values assigned to it. For instance, if you use set the variable foo to gettimeofday_s() (as in foo = gettimeofday_s()), then foo is typed as a number and can be printed in a printf() with the integer format specifier (%d). -
+
Note, however, that by default variables are only local to the probe they are used in. This means that variables are initialized, used and disposed at each probe handler invocation. To share a variable between probes, declare the variable name using global outside of the probes. Consider the following example: -
Example 3.8. timer-jiffies.stp
global count_jiffies, count_ms
+		

Example 3.8. timer-jiffies.stp

global count_jiffies, count_ms
 probe timer.jiffies(100) { count_jiffies ++ }
 probe timer.ms(100) { count_ms ++ }
 probe timer.ms(12345)
@@ -15,10 +14,10 @@ probe timer.ms(12345)
   printf ("jiffies:ms ratio %d:%d => CONFIG_HZ=%d\n",
     count_jiffies, count_ms, hz)
   exit ()
-}

+}

Example 3.8, “timer-jiffies.stp” computes the CONFIG_HZ setting of the kernel using timers that count jiffies and milliseconds, then computing accordingly. The global statement allows the script to use the variables count_jiffies and count_ms (set in their own respective probes) to be shared with probe timer.ms(12345). -

Note

- The ++ notation in Example 3.8, “timer-jiffies.stp” (i.e. count_jiffies ++ and count_ms ++) is used to increment the value of a variable by 1. In the following probe, count_jiffies is incremented by 1 every 100 jiffies: +

Note

+ The ++ notation in Example 3.8, “timer-jiffies.stp” (that is, count_jiffies ++ and count_ms ++) is used to increment the value of a variable by 1. In the following probe, count_jiffies is incremented by 1 every 100 jiffies:
probe timer.jiffies(100) { count_jiffies ++ }
In this instance, SystemTap understands that count_jiffies is an integer. Because no initial value was assigned to count_jiffies, its initial value is zero by default. -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/scripts.html b/SystemTap_Beginners_Guide/scripts.html index be44135f..dcbfb591 100644 --- a/SystemTap_Beginners_Guide/scripts.html +++ b/SystemTap_Beginners_Guide/scripts.html @@ -1,10 +1,9 @@ - -3.2. SystemTap Scripts

Product SiteDocumentation Site

3.2. SystemTap Scripts

+3.2. SystemTap Scripts

Product SiteDocumentation Site

3.2. SystemTap Scripts

For the most part, SystemTap scripts are the foundation of each SystemTap session. SystemTap scripts instruct SystemTap on what type of information to collect, and what to do once that information is collected. -
+
As stated in Chapter 3, Understanding How SystemTap Works, SystemTap scripts are made up of two components: events and handlers. Once a SystemTap session is underway, SystemTap monitors the operating system for the specified events and executes the handlers as they occur. -

Note

+

Note

An event and its corresponding handler is collectively called a probe. A SystemTap script can have multiple probes.
A probe's handler is commonly referred to as a probe body. @@ -12,63 +11,63 @@ In terms of application development, using events and handlers is similar to instrumenting the code by inserting diagnostic print statements in a program's sequence of commands. These diagnostic print statements allow you to view a history of commands executed once the program is run.
SystemTap scripts allow insertion of the instrumentation code without recompilation of the code and allows more flexibility with regard to handlers. Events serve as the triggers for handlers to run; handlers can be specified to record specified data and print it in a certain manner. -
Format
+
Format
SystemTap scripts use the file extension .stp, and contains probes written in the following format:
probe	event {statements}
SystemTap supports multiple events per probe; multiple events are delimited by a comma (,). If multiple events are specified in a single probe, SystemTap will execute the handler when any of the specified events occur. -
+
Each probe has a corresponding statement block. This statement block is enclosed in braces ({ }) and contains the statements to be executed per event. SystemTap executes these statements in sequence; special separators or terminators are generally not necessary between multiple statements. -

Note

+

Note

Statement blocks in SystemTap scripts follow the same syntax and semantics as the C programming language. A statement block can be nested within another statement block. -
- Systemtap allows you to write functions to factor out code to be used by a number of probes. Thus, rather than repeatedly writing the same series of statements in multiple probes, you can just place the instructions in a function, as in: +
+ SystemTap allows you to write functions to factor out code to be used by a number of probes. Thus, rather than repeatedly writing the same series of statements in multiple probes, you can just place the instructions in a function, as in:
function function_name(arguments) {statements}
 probe event {function_name(arguments)}
The statements in function_name are executed when the probe for event executes. The arguments are optional values passed into the function. -

Important

+

Important

Section 3.2, “SystemTap Scripts” is designed to introduce readers to the basics of SystemTap scripts. To understand SystemTap scripts better, it is advisable that you refer to Chapter 5, Useful SystemTap Scripts; each section therein provides a detailed explanation of the script, its events, handlers, and expected output. -

3.2.1. Event

+

3.2.1. Event

SystemTap events can be broadly classified into two types: synchronous and asynchronous. -
Synchronous Events
+
Synchronous Events
A synchronous event occurs when any process executes an instruction at a particular location in kernel code. This gives other events a reference point from which more contextual data may be available. -
+
Examples of synchronous events include: -
syscall.system_call
+
syscall.system_call
The entry to the system call system_call. If the exit from a syscall is desired, appending a .return to the event monitor the exit of the system call instead. For example, to specify the entry and exit of the system call close, use syscall.close and syscall.close.return respectively. -
vfs.file_operation
+
vfs.file_operation
The entry to the file_operation event for Virtual File System (VFS). Similar to syscall event, appending a .return to the event monitors the exit of the file_operation operation. -
kernel.function("function")
- The entry to the kernel function function. For example, kernel.function("sys_open") refers to the "event" that occurs when the kernel function sys_open is called by any thread in the system. To specify the return of the kernel function sys_open, append the return string to the event statement; i.e. kernel.function("sys_open").return. -
+
kernel.function("function")
+ The entry to the kernel function function. For example, kernel.function("sys_open") refers to the "event" that occurs when the kernel function sys_open is called by any thread in the system. To specify the return of the kernel function sys_open, append the return string to the event statement; that is, kernel.function("sys_open").return. +
When defining probe events, you can use asterisk (*) for wildcards. You can also trace the entry or exit of a function in a kernel source file. Consider the following example: -
Example 3.1. wildcards.stp
probe kernel.function("*@net/socket.c") { }
+					

Example 3.1. wildcards.stp

probe kernel.function("*@net/socket.c") { }
 probe kernel.function("*@net/socket.c").return { }

In the previous example, the first probe's event specifies the entry of ALL functions in the kernel source file net/socket.c. The second probe specifies the exit of all those functions. Note that in this example, there are no statements in the handler; as such, no information will be collected or displayed. -
kernel.trace("tracepoint")
+
kernel.trace("tracepoint")
The static probe for tracepoint. Recent kernels (2.6.30 and newer) include instrumentation for specific events in the kernel. These events are statically marked with tracepoints. One example of a tracepoint available in systemtap is kernel.trace("kfree_skb") which indicates each time a network buffer is freed in the kernel. -
module("module").function("function")
+
module("module").function("function")
Allows you to probe functions within modules. For example: -
Example 3.2. moduleprobe.stp
probe module("ext3").function("*") { }
+					

Example 3.2. moduleprobe.stp

probe module("ext3").function("*") { }
 probe module("ext3").function("*").return { }

The first probe in Example 3.2, “moduleprobe.stp” points to the entry of all functions for the ext3 module. The second probe points to the exits of all functions for that same module; the use of the .return suffix is similar to kernel.function(). Note that the probes in Example 3.2, “moduleprobe.stp” do not contain statements in the probe handlers, and as such will not print any useful data (as in Example 3.1, “wildcards.stp”).
A system's kernel modules are typically located in /lib/modules/kernel_version, where kernel_version refers to the currently loaded kernel version. Modules use the file name extension .ko. -
Asynchronous Events
+
Asynchronous Events
Asynchronous events are not tied to a particular instruction or location in code. This family of probe points consists mainly of counters, timers, and similar constructs.
Examples of asynchronous events include: -
begin
- The startup of a SystemTap session; i.e. as soon as the SystemTap script is run. -
end
+
begin
+ The startup of a SystemTap session; that is, as soon as the SystemTap script is run. +
end
The end of a SystemTap session. -
timer events
+
timer events
An event that specifies a handler to be executed periodically. For example: -
Example 3.3. timer-s.stp
probe timer.s(4)
+					

Example 3.3. timer-s.stp

probe timer.s(4)
 {
   printf("hello world\n")
 }

- Example 3.3, “timer-s.stp” is an example of a probe that prints hello world every 4 seconds. Note that you can also use the following timer events: -
  • + Example 3.3, “timer-s.stp” is an example of a probe that prints hello world every 4 seconds. It is also possible to use the following timer events: +
    • timer.ms(milliseconds)
    • timer.us(microseconds) @@ -80,6 +79,6 @@ probe module("ext3").function("*").return { }

    timer.jiffies(jiffies)
When used in conjunction with other probes that collect information, timer events allows you to print out get periodic updates and see how that information changes over time. -

Important

+

Important

SystemTap supports the use of a large collection of probe events. For more information about supported events, refer to man stapprobes. The SEE ALSO section of man stapprobes also contains links to other man pages that discuss supported events for specific subsystems and components. -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/syscallsbyprocpidsect.html b/SystemTap_Beginners_Guide/syscallsbyprocpidsect.html index 837f8d81..04d956d8 100644 --- a/SystemTap_Beginners_Guide/syscallsbyprocpidsect.html +++ b/SystemTap_Beginners_Guide/syscallsbyprocpidsect.html @@ -1,8 +1,7 @@ - -5.3.6. Tracking System Call Volume Per Process

Product SiteDocumentation Site

5.3.6. Tracking System Call Volume Per Process

+5.3.6. Tracking System Call Volume Per Process

Product SiteDocumentation Site

5.3.6. Tracking System Call Volume Per Process

This section illustrates how to determine which processes are performing the highest volume of system calls. In previous sections, we've described how to monitor the top system calls used by the system over time (Section 5.3.5, “Tracking Most Frequently Used System Calls”). We've also described how to identify which applications use a specific set of "polling suspect" system calls the most (Section 5.3.4, “Monitoring Polling Applications”). Monitoring the volume of system calls made by each process provides more data in investigating your system for polling processes and other resource hogs. -
syscalls_by_proc.stp
+
syscalls_by_proc.stp
#! /usr/bin/env stap
 
@@ -35,7 +34,7 @@ probe end {
 
syscalls_by_proc.stp lists the top 20 processes performing the highest number of system calls. It also lists how many system calls each process performed during the time period. Refer to Example 5.18, “topsys.stp Sample Output” for a sample output. -
Example 5.18. topsys.stp Sample Output
Collecting data... Type Ctrl-C to exit and display results
+	

Example 5.18. topsys.stp Sample Output

Collecting data... Type Ctrl-C to exit and display results
 #SysCalls  Process Name
 1577       multiload-apple
 692        synergyc
@@ -51,8 +50,8 @@ probe end {
 78         gnome-screensav
 66         scim-launcher
 [...]

- If you prefer the output to display the process IDs instead of the process names, use the following script instead. -
syscalls_by_pid.stp
+ To display the process IDs instead of the process names, use the following script instead. +
syscalls_by_pid.stp
#! /usr/bin/env stap
 
@@ -88,4 +87,4 @@ probe end {
 	
probe timer.s(5)
 {
 	exit()
-}
+}
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/systemtapscript-handler.html b/SystemTap_Beginners_Guide/systemtapscript-handler.html index b6a83610..30daab3f 100644 --- a/SystemTap_Beginners_Guide/systemtapscript-handler.html +++ b/SystemTap_Beginners_Guide/systemtapscript-handler.html @@ -1,27 +1,26 @@ - -3.2.2. Systemtap Handler/Body

Product SiteDocumentation Site

3.2.2. Systemtap Handler/Body

+3.2.2. SystemTap Handler/Body

Product SiteDocumentation Site

3.2.2. SystemTap Handler/Body

Consider the following sample script: -
Example 3.4. helloworld.stp
probe begin
+		

Example 3.4. helloworld.stp

probe begin
 {
   printf ("hello world\n")
   exit ()
 }

- In Example 3.4, “helloworld.stp”, the event begin (i.e. the start of the session) triggers the handler enclosed in { }, which simply prints hello world followed by a new-line, then exits. -

Note

+ In Example 3.4, “helloworld.stp”, the event begin (that is, the start of the session) triggers the handler enclosed in { }, which simply prints hello world followed by a new-line, then exits. +

Note

SystemTap scripts continue to run until the exit() function executes. If the users wants to stop the execution of the script, it can interrupted manually with Ctrl+C. -
printf ( ) Statements
+
printf ( ) Statements
The printf () statement is one of the simplest functions for printing data. printf () can also be used to display data using a wide variety of SystemTap functions in the following format:
		printf ("format string\n", arguments)
-
- The format string specifies how arguments should be printed. The format string of Example 3.4, “helloworld.stp” simply instructs SystemTap to print hello world, and contains no format specifiers. -
+
+ The format string specifies how arguments should be printed. The format string of Example 3.4, “helloworld.stp” instructs SystemTap to print hello world, and contains no format specifiers. +
You can use the format specifiers %s (for strings) and %d (for numbers) in format strings, depending on your list of arguments. Format strings can have multiple format specifiers, each matching a corresponding argument; multiple arguments are delimited by a comma (,). -

Note

+

Note

Semantically, the SystemTap printf function is very similar to its C language counterpart. The aforementioned syntax and format for SystemTap's printf function is identical to that of the C-style printf.
To illustrate this, consider the following probe example: -
Example 3.5. variables-in-printf-statements.stp
probe syscall.open
+		

Example 3.5. variables-in-printf-statements.stp

probe syscall.open
 {
   printf ("%s(%d) open\n", execname(), pid())
 }

@@ -33,31 +32,31 @@ hald(2360) open df(3433) open df(3433) open df(3433) open -hald(2360) open
SystemTap Functions
+hald(2360) open
SystemTap Functions
SystemTap supports a wide variety of functions that can be used as printf () arguments. Example 3.5, “variables-in-printf-statements.stp” uses the SystemTap functions execname() (name of the process that called a kernel function/performed a system call) and pid() (current process ID).
The following is a list of commonly-used SystemTap functions: -
tid()
+
tid()
The ID of the current thread. -
uid()
+
uid()
The ID of the current user. -
cpu()
+
cpu()
The current CPU number. -
gettimeofday_s()
+
gettimeofday_s()
The number of seconds since UNIX epoch (January 1, 1970). -
ctime()
+
ctime()
Convert number of seconds since UNIX epoch to date. -
pp()
+
pp()
A string describing the probe point currently being handled. -
thread_indent()
- This particular function is quite useful, providing you with a way to better organize your print results. The function takes one argument, an indentation delta, which indicates how many spaces to add or remove from a thread's "indentation counter". It then returns a string with some generic trace data along with an appropriate number of indentation spaces. +
thread_indent()
+ This particular function is quite useful in providing you with a way to better organize your print results. The function takes one argument, an indentation delta, which indicates how many spaces to add or remove from a thread's "indentation counter". It then returns a string with some generic trace data along with an appropriate number of indentation spaces.
The generic data included in the returned string includes a timestamp (number of microseconds since the first call to thread_indent() by the thread), a process name, and the thread ID. This allows you to identify what functions were called, who called them, and the duration of each function call.
If call entries and exits immediately precede each other, it is easy to match them. However, in most cases, after a first function call entry is made several other call entries and exits may be made before the first call exits. The indentation counter helps you match an entry with its corresponding exit by indenting the next function call if it is not the exit of the previous one.
Consider the following example on the use of thread_indent(): -
Example 3.6. thread_indent.stp
probe kernel.function("*@net/socket.c").call
+					

Example 3.6. thread_indent.stp

probe kernel.function("*@net/socket.c").call
 {
   printf ("%s -> %s\n", thread_indent(1), probefunc())
 }
@@ -83,7 +82,7 @@ probe kernel.function("*@net/socket.c").return
 4732 ftp(7223):  <- sys_socket
 4775 ftp(7223): <- sys_socketcall
This sample output contains the following information: -
  • +
    • The time (in microseconds) since the initial thread_indent() call for the thread (included in the string from thread_indent()).
    • The process name (and its corresponding ID) that made the function call (included in the string from thread_indent()). @@ -91,17 +90,17 @@ probe kernel.function("*@net/socket.c").return An arrow signifying whether the call was an entry (<-) or an exit (->); the indentations help you match specific function call entries with their corresponding exits.
    • The name of the function called by the process. -
name
+
name
Identifies the name of a specific system call. This variable can only be used in probes that use the event syscall.system_call. -
target()
+
target()
Used in conjunction with stap script -x process ID or stap script -c command. If you want to specify a script to take an argument of a process ID or command, use target() as the variable in the script to refer to it. For example: -
Example 3.7. targetexample.stp
probe syscall.* {
+					

Example 3.7. targetexample.stp

probe syscall.* {
   if (pid() == target())
-    printf("%s/n", name)
+    printf("%s\n", name)
 }

When Example 3.7, “targetexample.stp” is run with the argument -x process ID, it watches all system calls (as specified by the event syscall.*) and prints out the name of all system calls made by the specified process.
- This has the same effect as specifying if (pid() == process ID) each time you wish to target a specific process. However, using target() makes it easier for you to re-use the script, giving you the ability to simply pass a process ID as an argument each time you wish to run the script (e.g. stap targetexample.stp -x process ID). + This has the same effect as specifying if (pid() == process ID) each time you wish to target a specific process. However, using target() makes it easier for you to re-use the script, giving you the ability to pass a process ID as an argument each time you wish to run the script (that is, stap targetexample.stp -x process ID).
For more information about supported SystemTap functions, refer to man stapfuncs. -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/targetavailable.html b/SystemTap_Beginners_Guide/targetavailable.html index d495e981..537199cd 100644 --- a/SystemTap_Beginners_Guide/targetavailable.html +++ b/SystemTap_Beginners_Guide/targetavailable.html @@ -1,10 +1,9 @@ - -3.3.2.3. Checking Target Variable Availablility

Product SiteDocumentation Site

3.3.2.3. Checking Target Variable Availablility

+3.3.2.3. Checking Target Variable Availability

Product SiteDocumentation Site

3.3.2.3. Checking Target Variable Availability

As code evolves the target variables available may change. The @defined makes it easier to handle those variations in the available target variables. The @defined provides a test to see if a particular target variable is available. The result of this test can be used to select the appropriate expression.
The Example 3.10, “Testing target variable available Example” from the memory.stp tapset provides an probe event alias. Some version of the kernel functions being probed have an argument $flags. When available, the $flags argument is used to generate the local variable write_access. The versions of the probed functions that do not have the $flags argument have a $write argument and that is used instead for the local variable write_access. -
Example 3.10. Testing target variable available Example
probe vm.pagefault = kernel.function("__handle_mm_fault@mm/memory.c") ?,
+			

Example 3.10. Testing target variable available Example

probe vm.pagefault = kernel.function("__handle_mm_fault@mm/memory.c") ?,
                      kernel.function("handle_mm_fault@mm/memory.c") ?
 {
         name = "pagefault"
@@ -12,4 +11,4 @@
 			? $flags & FAULT_FLAG_WRITE : $write_access)
 	address =  $address
 }
-

+

\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/targetvariables.html b/SystemTap_Beginners_Guide/targetvariables.html index 1599d9fa..41b6f0a4 100644 --- a/SystemTap_Beginners_Guide/targetvariables.html +++ b/SystemTap_Beginners_Guide/targetvariables.html @@ -1,6 +1,5 @@ - -3.3.2. Target Variables

Product SiteDocumentation Site

3.3.2. Target Variables

+3.3.2. Target Variables

Product SiteDocumentation Site

3.3.2. Target Variables

The probe events that map to actual locations in the code (for example kernel.function("function") and kernel.statement("statement")) allow the use of target variables to obtain the value of variables visible at that location in the code. You can use the -L option to list the target variable available at a probe point. If the debug information is installed for the running kernel, you can run the following command to find out what target variables are available for the vfs_read function:
stap -L 'kernel.function("vfs_read")'
This will yield something similar to the following: @@ -23,38 +22,38 @@ stap -e 'probe kernel.function("vfs_read") { current files_stat max_files: 386070
For pointers to base types such as integers and strings there are a number of functions listed below to access kernel-space data. The first argument for each functions is the pointer to the data item. Similar functions are described in Section 4.2, “Accessing User-Space Target Variables” for accessing target variables in user-space code. -
kernel_char(address)
+
kernel_char(address)
Obtain the character at address from kernel memory. -
kernel_short(address)
+
kernel_short(address)
Obtain the short at address from kernel memory. -
kernel_int(address)
+
kernel_int(address)
Obtain the int at address from kernel memory. -
kernel_long(address)
+
kernel_long(address)
Obtain the long at address from kernel memory -
kernel_string(address)
+
kernel_string(address)
Obtain the string at address from kernel memory. -
kernel_string_n(address, n)
+
kernel_string_n(address, n)
Obtain the string at address from the kernel memory and limits the string to n bytes. -

3.3.2.1. Pretty Printing Target Variables

+

3.3.2.1. Pretty Printing Target Variables

SystemTap scripts are often used to observe what is happening within the code. In many cases just printing the values of the various context variables is sufficient. SystemTap makes a number operations available that can generate printable strings for target variables: -
$$vars
+
$$vars
Expands to a character string that is equivalent to sprintf("parm1=%x ... parmN=%x var1=%x ... varN=%x", parm1, ..., parmN, var1, ..., varN) for each variable in scope at the probe point. Some values may be printed as “=?” if their run-time location cannot be found. -
$$locals
+
$$locals
Expands to a subset of $$vars containing only the local variables. -
$$parms
+
$$parms
Expands to a subset of $$vars containing only the function parameters. -
$$return
+
$$return
Is available in return probes only. It expands to a string that is equivalent to sprintf("return=%x", $return) if the probed function has a return value, or else an empty string.
Below is a command-line script that prints the values of the parameters passed into the function vfs_read:
stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms); exit(); }'
There are four parameters passed into vfs_read: file, buf, count, and pos. The $$parms generates a string for the parameters passed into the function. In this case all but the count parameter are pointers. The following is an example of the output from the previous command-line script:
file=0xffff8800b40d4c80 buf=0x7fff634403e0 count=0x2004 pos=0xffff8800af96df48
- Having the address a pointer points to may not be useful. You might be more interested in the fields of the data structure the pointer points to. You can use the the “$” suffix to pretty print the data structure. The following command-line example uses the pretty printing suffix to print more details about the data structures passed into the function vfs_read: + Having the address a pointer points to may not be useful. Instead the fields of the data structure the pointer points to may be of more use. Use the “$” suffix to pretty print the data structure. The following command-line example uses the pretty printing suffix to print more details about the data structures passed into the function vfs_read:
stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms$); exit(); }'
The previous command line will generate something similar to the following with the fields of the data structure included in the output:
file={.f_u={...}, .f_path={...}, .f_op=0xffffffffa06e1d80, .f_lock={...}, .f_count={...}, .f_flags=34818, .f_mode=31, .f_pos=0, .f_owner={...}, .f_cred=0xffff88013148fc80, .f_ra={...}, .f_version=0, .f_security=0xffff8800b8dce560, .private_data=0x0, .f_ep_links={...}, .f_mapping=0xffff880037f8fdf8} buf="" count=8196 pos=-131938753921208
With the “$” suffix fields that are composed of data structures are not expanded. The “$$” suffix will print the values contained within the nested data structures. Below is an example using the “$$” suffix:
stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms$$); exit(); }'
- The “$$” suffix, like all strings, is limited to the maximum string size. Below is a represenative output from the previous command-line script, which is truncated because of the string size limit: -
file={.f_u={.fu_list={.next=0xffff8801336ca0e8, .prev=0xffff88012ded0840}, .fu_rcuhead={.next=0xffff8801336ca0e8, .func=0xffff88012ded0840}}, .f_path={.mnt=0xffff880132fc97c0, .dentry=0xffff88001a889cc0}, .f_op=0xffffffffa06f64c0, .f_lock={.raw_lock={.slock=196611}}, .f_count={.counter=2}, .f_flags=34818, .f_mode=31, .f_pos=0, .f_owner={.lock={.raw_lock={.lock=16777216}}, .pid=0x0, .pid_type=0, .uid=0, .euid=0, .signum=0}, .f_cred=0xffff880130129a80, .f_ra={.start=0, .size=0, .async_size=0, .ra_pages=32, .
+ The “$$” suffix, like all strings, is limited to the maximum string size. Below is a representative output from the previous command-line script, which is truncated because of the string size limit: +
file={.f_u={.fu_list={.next=0xffff8801336ca0e8, .prev=0xffff88012ded0840}, .fu_rcuhead={.next=0xffff8801336ca0e8, .func=0xffff88012ded0840}}, .f_path={.mnt=0xffff880132fc97c0, .dentry=0xffff88001a889cc0}, .f_op=0xffffffffa06f64c0, .f_lock={.raw_lock={.slock=196611}}, .f_count={.counter=2}, .f_flags=34818, .f_mode=31, .f_pos=0, .f_owner={.lock={.raw_lock={.lock=16777216}}, .pid=0x0, .pid_type=0, .uid=0, .euid=0, .signum=0}, .f_cred=0xffff880130129a80, .f_ra={.start=0, .size=0, .async_size=0, .ra_pages=32, .
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/threadtimessect.html b/SystemTap_Beginners_Guide/threadtimessect.html index 4d76c35f..521aa760 100644 --- a/SystemTap_Beginners_Guide/threadtimessect.html +++ b/SystemTap_Beginners_Guide/threadtimessect.html @@ -1,8 +1,7 @@ - -5.3.3. Determining Time Spent in Kernel and User Space

Product SiteDocumentation Site

5.3.3. Determining Time Spent in Kernel and User Space

+5.3.3. Determining Time Spent in Kernel and User Space

Product SiteDocumentation Site

5.3.3. Determining Time Spent in Kernel and User Space

This section illustrates how to determine the amount of time any given thread is spending in either kernel or user-space. -
thread-times.stp
+
thread-times.stp
#! /usr/bin/env stap
 
@@ -40,11 +39,11 @@ probe timer.s(5), end {
   delete tids
 }
 
-
+
thread-times.stp lists the top 20 processes currently taking up CPU time within a 5-second sample, along with the total number of CPU ticks made during the sample. The output of this script also notes the percentage of CPU time each process used, as well as whether that time was spent in kernel space or user space.
Example 5.15, “thread-times.stp Sample Output” contains a 5-second sample of the output for thread-times.stp: -
Example 5.15. thread-times.stp Sample Output
  tid   %user %kernel (of 20002 ticks)
+	

Example 5.15. thread-times.stp Sample Output

  tid   %user %kernel (of 20002 ticks)
     0   0.00%  87.88%
 32169   5.24%   0.03%
  9815   3.33%   0.36%
@@ -64,4 +63,4 @@ probe timer.s(5), end {
  3883   0.00%   0.00%
  3775   0.00%   0.00%
  3943   0.00%   0.00%
- 3873   0.00%   0.00%

+ 3873 0.00% 0.00%

\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/timeoutssect.html b/SystemTap_Beginners_Guide/timeoutssect.html index ab940fd5..d2b4b35d 100644 --- a/SystemTap_Beginners_Guide/timeoutssect.html +++ b/SystemTap_Beginners_Guide/timeoutssect.html @@ -1,8 +1,7 @@ - -5.3.4. Monitoring Polling Applications

Product SiteDocumentation Site

5.3.4. Monitoring Polling Applications

+5.3.4. Monitoring Polling Applications

Product SiteDocumentation Site

5.3.4. Monitoring Polling Applications

This section describes how to identify and monitor which applications are polling. Doing so allows you to track unnecessary or excessive polling, which can help you pinpoint areas for improvement in terms of CPU usage and power savings. -
timeout.stp
+
timeout.stp
#! /usr/bin/env stap
 # Copyright (C) 2009 Red Hat, Inc.
@@ -109,7 +108,7 @@ probe timer.s(1) {
 
timeout.stp tracks how many times each of the following system calls completed due to time expiring rather than due to an actual event occurring: -
  • +
    • poll
    • select @@ -123,7 +122,7 @@ probe timer.s(1) { nanosleep
    • signal -
    Example 5.16. timeout.stp Sample Output
      uid |   poll  select   epoll  itimer   futex nanosle  signal| process
    +			

Example 5.16. timeout.stp Sample Output

  uid |   poll  select   epoll  itimer   futex nanosle  signal| process
 28937 | 148793       0       0    4727   37288       0       0| firefox
 22945 |      0   56949       0       1       0       0       0| scim-bridge
     0 |      0       0       0   36414       0       0       0| swapper
@@ -145,4 +144,4 @@ probe timer.s(1) {
 29548 |      0    1440       0       0       0       0       0| httpd
  1862 |      0       0       0       0       0    1438       0| iscsid

You can increase the sample time by editing the second probe (timer.s(1)). The output of timeout.stp contains the name and UID of the top 20 polling applications, along with how many times each application performed each polling system call (over time). Example 5.16, “timeout.stp Sample Output” contains an excerpt of the script. In this particular example firefox is doing an excessive amount of polling due to a plugin module. -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/topsyssect.html b/SystemTap_Beginners_Guide/topsyssect.html index 8fbddcdb..6d3642df 100644 --- a/SystemTap_Beginners_Guide/topsyssect.html +++ b/SystemTap_Beginners_Guide/topsyssect.html @@ -1,8 +1,7 @@ - -5.3.5. Tracking Most Frequently Used System Calls

Product SiteDocumentation Site

5.3.5. Tracking Most Frequently Used System Calls

+5.3.5. Tracking Most Frequently Used System Calls

Product SiteDocumentation Site

5.3.5. Tracking Most Frequently Used System Calls

timeout.stp from Section 5.3.4, “Monitoring Polling Applications” helps you identify which applications are polling by examining a small subset of system calls ( poll, select, epoll, itimer, futex, nanosleep, and signal). However, in some systems, an excessive number of system calls outside that small subset might be responsible for time spent in the kernel. If you suspect that an application is using system calls excessively, you need to identify the most frequently used system calls on the system. To do this, use topsys.stp. -
topsys.stp
+
topsys.stp
#! /usr/bin/env stap
 #
@@ -13,13 +12,13 @@
 global syscalls_count
 
 probe syscall.* {
-  syscalls_count[name]++
+  syscalls_count[name] <<< 1
 }
 
 function print_systop () {
   printf ("%25s %10s\n", "SYSCALL", "COUNT")
   foreach (syscall in syscalls_count- limit 20) {
-    printf("%25s %10d\n", syscall, syscalls_count[syscall])
+    printf("%25s %10d\n", syscall, @count(syscalls_count[syscall]))
   }
   delete syscalls_count
 }
@@ -31,7 +30,7 @@ probe timer.s(5) {
 
topsys.stp lists the top 20 system calls used by the system per 5-second interval. It also lists how many times each system call was used during that period. Refer to Example 5.17, “topsys.stp Sample Output” for a sample output. -
Example 5.17. topsys.stp Sample Output
--------------------------------------------------------------
+	

Example 5.17. topsys.stp Sample Output

--------------------------------------------------------------
                   SYSCALL      COUNT
              gettimeofday       1857
                      read       1821
@@ -53,4 +52,4 @@ probe timer.s(5) {
                      time         81
                 sigreturn         72
                     fstat         66
---------------------------------------------------------------

+--------------------------------------------------------------

\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/traceio2sect.html b/SystemTap_Beginners_Guide/traceio2sect.html index 96392eb8..315fa98b 100644 --- a/SystemTap_Beginners_Guide/traceio2sect.html +++ b/SystemTap_Beginners_Guide/traceio2sect.html @@ -1,8 +1,7 @@ - -5.2.4. I/O Monitoring (By Device)

Product SiteDocumentation Site

5.2.4. I/O Monitoring (By Device)

+5.2.4. I/O Monitoring (By Device)

Product SiteDocumentation Site

5.2.4. I/O Monitoring (By Device)

This section describes how to monitor I/O activity on a specific device. -
traceio2.stp
+
traceio2.stp
#! /usr/bin/env stap
 
@@ -24,18 +23,18 @@ probe vfs.write, vfs.read
             execname(), pid(), probefunc(), dev)
 }
 
-
- traceio2.stp takes 1 argument: the whole device number. To get this number, use stat -c "0x%D" directory, where directory is located in the device you wish to monitor. -
+
+ traceio2.stp takes 1 argument: the whole device number. To get this number, use stat -c "0x%D" directory, where directory is located in the device to be monitored. +
The usrdev2kerndev() function converts the whole device number into the format understood by the kernel. The output produced by usrdev2kerndev() is used in conjunction with the MKDEV(), MINOR(), and MAJOR() functions to determine the major and minor numbers of a specific device.
- The output of traceio2.stp includes the name and ID of any process performing a read/write, the function it is performing (i.e. vfs_read or vfs_write), and the kernel device number. + The output of traceio2.stp includes the name and ID of any process performing a read/write, the function it is performing (that is, vfs_read or vfs_write), and the kernel device number.
The following example is an excerpt from the full output of stap traceio2.stp 0x805, where 0x805 is the whole device number of /home. /home resides in /dev/sda5, which is the device we wish to monitor. -
Example 5.9. traceio2.stp Sample Output
[...]
+	

Example 5.9. traceio2.stp Sample Output

[...]
 synergyc(3722) vfs_read 0x800005
 synergyc(3722) vfs_read 0x800005
 cupsd(2889) vfs_write 0x800005
 cupsd(2889) vfs_write 0x800005
 cupsd(2889) vfs_write 0x800005
-[...]

+[...]

\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/traceiosect.html b/SystemTap_Beginners_Guide/traceiosect.html index 459d2325..3509e67e 100644 --- a/SystemTap_Beginners_Guide/traceiosect.html +++ b/SystemTap_Beginners_Guide/traceiosect.html @@ -1,8 +1,7 @@ - -5.2.3. Track Cumulative IO

Product SiteDocumentation Site

5.2.3. Track Cumulative IO

+5.2.3. Track Cumulative IO

Product SiteDocumentation Site

5.2.3. Track Cumulative IO

This section describes how to track the cumulative amount of I/O to the system. -
traceio.stp
+
traceio.stp
#! /usr/bin/env stap
 # traceio.stp
@@ -19,13 +18,17 @@
 global reads, writes, total_io
 
 probe vfs.read.return {
-  reads[pid(),execname()] += $return
-  total_io[pid(),execname()] += $return
+  if ($return > 0) {
+    reads[pid(),execname()] += $return
+    total_io[pid(),execname()] += $return
+  }
 }
 
 probe vfs.write.return {
-  writes[pid(),execname()] += $return
-  total_io[pid(),execname()] += $return
+  if ($return > 0) {
+    writes[pid(),execname()] += $return
+    total_io[pid(),execname()] += $return
+  }
 }
 
 function humanreadable(bytes) {
@@ -52,9 +55,9 @@ probe timer.s(1) {
 
traceio.stp prints the top ten executables generating I/O traffic over time. In addition, it also tracks the cumulative amount of I/O reads and writes done by those ten executables. This information is tracked and printed out in 1-second intervals, and in descending order. -
+
Note that traceio.stp also uses the local variable $return, which is also used by disktop.stp from Section 5.2.1, “Summarizing Disk Read/Write Traffic”. -
Example 5.8. traceio.stp Sample Output
[...]
+	

Example 5.8. traceio.stp Sample Output

[...]
            Xorg r:   583401 KiB w:        0 KiB
        floaters r:       96 KiB w:     7130 KiB
 multiload-apple r:      538 KiB w:      537 KiB
@@ -75,4 +78,4 @@ pam_timestamp_c r:      138 KiB w:        0 KiB
           snmpd r:       46 KiB w:        0 KiB
           pcscd r:       28 KiB w:        0 KiB
      irqbalance r:       27 KiB w:        4 KiB
-          cupsd r:        4 KiB w:       18 KiB

+ cupsd r: 4 KiB w: 18 KiB

\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/typecasting.html b/SystemTap_Beginners_Guide/typecasting.html index eed4e964..bedcbd26 100644 --- a/SystemTap_Beginners_Guide/typecasting.html +++ b/SystemTap_Beginners_Guide/typecasting.html @@ -1,11 +1,10 @@ - -3.3.2.2. Typecasting

Product SiteDocumentation Site

3.3.2.2. Typecasting

+3.3.2.2. Typecasting

Product SiteDocumentation Site

3.3.2.2. Typecasting

In most cases SystemTap can determine a variable's type from the debug information. However, code may use void pointers for variables (for example memory allocation routines) and typing information is not available. Also the typing information available within a probe handler is not available within a function; SystemTap functions arguments use a long in place of a typed pointer. SystemTap's @cast operator (first available in SystemTap 0.9) can be used to indicate the correct type of the object.
- The Example 3.9, “Casting Example” is from the task.stp tapset. The function returns the value of the state field from a task_struct pointed to by the long task. The first argument of the @cast operator, task, is the pointer to the object. The second argument is the type to cast the object to, task_struct. The third arument lists what file that the type definition information comes from and is optional. With the @cast operator the various fields of this particular task_struct task can be accessed; in this example the state field is obtained. -
Example 3.9. Casting Example
function task_state:long (task:long)
+				The Example 3.9, “Casting Example” is from the task.stp tapset. The function returns the value of the state field from a task_struct pointed to by the long task. The first argument of the @cast operator, task, is the pointer to the object. The second argument is the type to cast the object to, task_struct. The third argument lists what file that the type definition information comes from and is optional. With the @cast operator the various fields of this particular task_struct task can be accessed; in this example the state field is obtained.
+			

Example 3.9. Casting Example

function task_state:long (task:long)
 {
     return @cast(task, "task_struct", "kernel<linux/sched.h>")->state
 }
-

+

\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/understanding-how-systemtap-works.html b/SystemTap_Beginners_Guide/understanding-how-systemtap-works.html index 3333db7d..522d8fa1 100644 --- a/SystemTap_Beginners_Guide/understanding-how-systemtap-works.html +++ b/SystemTap_Beginners_Guide/understanding-how-systemtap-works.html @@ -1,14 +1,13 @@ - -Chapter 3. Understanding How SystemTap Works

Product SiteDocumentation Site

Chapter 3. Understanding How SystemTap Works

+Chapter 3. Understanding How SystemTap Works

Product SiteDocumentation Site

Chapter 3. Understanding How SystemTap Works

SystemTap allows users to write and reuse simple scripts to deeply examine the activities of a running Linux system. These scripts can be designed to extract data, filter it, and summarize it quickly (and safely), enabling the diagnosis of complex performance (or even functional) problems. -
+
The essential idea behind a SystemTap script is to name events, and to give them handlers. When SystemTap runs the script, SystemTap monitors for the event; once the event occurs, the Linux kernel then runs the handler as a quick sub-routine, then resumes. -
+
There are several kind of events; entering/exiting a function, timer expiration, session termination, etc. A handler is a series of script language statements that specify the work to be done whenever the event occurs. This work normally includes extracting data from the event context, storing them into internal variables, and printing results. -

3.1. Architecture

+

3.1. Architecture

A SystemTap session begins when you run a SystemTap script. This session occurs in the following fashion: -
Procedure 3.1. SystemTap Session
  1. +

    Procedure 3.1. SystemTap Session

    1. First, SystemTap checks the script against the existing tapset library (normally in /usr/share/systemtap/tapset/ for any tapsets used. SystemTap will then substitute any located tapsets with their corresponding definitions in the tapset library.
    2. SystemTap then translates the script to C, running the system C compiler to create a kernel module from it. The tools that perform this step are contained in the systemtap package (refer to Section 2.1.1, “Installing SystemTap” for more information). @@ -20,4 +19,4 @@ Once the SystemTap session is terminated, the probes are disabled, and the kernel module is unloaded.
    This sequence is driven from a single command-line program: stap. This program is SystemTap's main front-end tool. For more information about stap, refer to man stap (once SystemTap is properly installed on your machine). -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/understanding-tapsets.html b/SystemTap_Beginners_Guide/understanding-tapsets.html index a53ac45b..7265a1e4 100644 --- a/SystemTap_Beginners_Guide/understanding-tapsets.html +++ b/SystemTap_Beginners_Guide/understanding-tapsets.html @@ -1,11 +1,10 @@ - -3.6. Tapsets

Product SiteDocumentation Site

3.6. Tapsets

+3.6. Tapsets

Product SiteDocumentation Site

3.6. Tapsets

Tapsets are scripts that form a library of pre-written probes and functions to be used in SystemTap scripts. When a user runs a SystemTap script, SystemTap checks the script's probe events and handlers against the tapset library; SystemTap then loads the corresponding probes and functions before translating the script to C (refer to Section 3.1, “Architecture” for information on what transpires in a SystemTap session).
Like SystemTap scripts, tapsets use the file name extension .stp. The standard library of tapsets is located in /usr/share/systemtap/tapset/ by default. However, unlike SystemTap scripts, tapsets are not meant for direct execution; rather, they constitute the library from which other scripts can pull definitions.
- Simply put, the tapset library is an abstraction layer designed to make it easier for users to define events and functions. In a manner of speaking, tapsets provide useful aliases for functions that users may want to specify as an event; knowing the proper alias to use is, for the most part, easier than remembering specific kernel functions that might vary between kernel versions. + The tapset library is an abstraction layer designed to make it easier for users to define events and functions. Tapsets provide useful aliases for functions that users may want to specify as an event; knowing the proper alias to use is, for the most part, easier than remembering specific kernel functions that might vary between kernel versions.
Several handlers and functions in Section 3.2.1, “Event” and SystemTap Functions are defined in tapsets. For example, thread_indent() is defined in indent.stp. -
+
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/useful-systemtap-scripts.html b/SystemTap_Beginners_Guide/useful-systemtap-scripts.html index 14d4028c..e11e9556 100644 --- a/SystemTap_Beginners_Guide/useful-systemtap-scripts.html +++ b/SystemTap_Beginners_Guide/useful-systemtap-scripts.html @@ -1,12 +1,11 @@ - -Chapter 5. Useful SystemTap Scripts

Product SiteDocumentation Site

Chapter 5. Useful SystemTap Scripts

+Chapter 5. Useful SystemTap Scripts

Product SiteDocumentation Site

Chapter 5. Useful SystemTap Scripts

This chapter enumerates several SystemTap scripts you can use to monitor and investigate different subsystems. All of these scripts are available at /usr/share/systemtap/testsuite/systemtap.examples/ once you install the systemtap-testsuite RPM. -

5.1. Network

+

5.1. Network

The following sections showcase scripts that trace network-related functions and build a profile of network activity. -

5.1.1. Network Profiling

+

5.1.1. Network Profiling

This section describes how to profile network activity. nettop.stp provides a glimpse into how much network traffic each process is generating on a machine. -
nettop.stp
+
nettop.stp
#! /usr/bin/env stap
 
@@ -57,22 +56,22 @@ probe timer.ms(5000), end, error
   print_activity()
 }
 
-
+
Note that function print_activity() uses the following expressions:
n_xmit ? @sum(ifxmit[pid, dev, exec, uid])/1024 : 0
 n_recv ? @sum(ifrecv[pid, dev, exec, uid])/1024 : 0
- These expressions are if/else conditionals. The first statement is simply a more concise way of writing the following psuedo code: + These expressions are if/else conditionals. The first statement is a more concise way of writing the following psuedo code:
if n_recv != 0 then
   @sum(ifrecv[pid, dev, exec, uid])/1024
 else
   0
nettop.stp tracks which processes are generating network traffic on the system, and provides the following information about each process: -
  • +
    • PID — the ID of the listed process.
    • UID — user ID. A user ID of 0 refers to the root user.
    • - DEV — which ethernet device the process used to send / receive data (e.g. eth0, eth1) + DEV — which ethernet device the process used to send / receive data (for example, eth0, eth1)
    • XMIT_PK — number of packets transmitted by the process
    • @@ -83,7 +82,7 @@ else RECV_KB — amount of data received by the service, in kilobytes
    nettop.stp provides network profile sampling every 5 seconds. You can change this setting by editing probe timer.ms(5000) accordingly. Example 5.1, “nettop.stp Sample Output” contains an excerpt of the output from nettop.stp over a 20-second period: -
    Example 5.1. nettop.stp Sample Output
    [...]
    +	

    Example 5.1. nettop.stp Sample Output

    [...]
       PID   UID DEV     XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND
         0     0 eth0          0       5       0       0 swapper
     11178     0 eth0          2       0       0       0 synergyc
    @@ -106,9 +105,9 @@ else
     11178     0 eth0         43       1       3       0 synergyc
     11362     0 eth0          0       7       0       0 firefox
      3897     0 eth0          0       1       0       0 multiload-apple
    -[...]

    5.1.2. Tracing Functions Called in Network Socket Code

    +[...]

5.1.2. Tracing Functions Called in Network Socket Code

This section describes how to trace functions called from the kernel's net/socket.c file. This task helps you identify, in finer detail, how each process interacts with the network at the kernel level. -
socket-trace.stp
+
socket-trace.stp
#! /usr/bin/env stap
 
@@ -121,7 +120,7 @@ probe kernel.function("*@net/socket.c").return {
 
socket-trace.stp is identical to Example 3.6, “thread_indent.stp”, which was earlier used in SystemTap Functions to illustrate how thread_indent() works. -
Example 5.2. socket-trace.stp Sample Output
[...]
+	

Example 5.2. socket-trace.stp Sample Output

[...]
 0 Xorg(3611): -> sock_poll
 3 Xorg(3611): <- sock_poll
 0 Xorg(3611): -> sock_poll
@@ -142,9 +141,9 @@ probe kernel.function("*@net/socket.c").return {
 35 scim-bridge(3883): <- sys_socketcall
 [...]

Example 5.2, “socket-trace.stp Sample Output” contains a 3-second excerpt of the output for socket-trace.stp. For more information about the output of this script as provided by thread_indent(), refer to SystemTap Functions Example 3.6, “thread_indent.stp”. -

5.1.3. Monitoring Incoming TCP Connections

+

5.1.3. Monitoring Incoming TCP Connections

This section illustrates how to monitor incoming TCP connections. This task is useful in identifying any unauthorized, suspicious, or otherwise unwanted network access requests in real time. -
tcp_connections.stp
+
tcp_connections.stp
#! /usr/bin/env stap
 
@@ -163,7 +162,7 @@ probe kernel.function("tcp_accept").return?,
 
While tcp_connections.stp is running, it will print out the following information about any incoming TCP connections accepted by the system in real time: -
  • +
    • Current UID
    • CMD - the command accepting the connection @@ -173,11 +172,11 @@ probe kernel.function("tcp_accept").return?, Port used by the connection
    • IP address from which the TCP connection originated -
    Example 5.3. tcp_connections.stp Sample Output
    UID            CMD    PID   PORT        IP_SOURCE
    +			

Example 5.3. tcp_connections.stp Sample Output

UID            CMD    PID   PORT        IP_SOURCE
 0             sshd   3165     22      10.64.0.227
-0             sshd   3165     22      10.64.0.227

5.1.4. Monitoring TCP Packets

+0 sshd 3165 22 10.64.0.227

5.1.4. Monitoring TCP Packets

This section illustrates how to monitor TCP packets received by the system. This is useful in analyzing network traffic generated by applications running on the system. -
tcpdumplike.stp
+
tcpdumplike.stp
	#! /usr/bin/env stap
 
@@ -189,6 +188,11 @@ probe begin, timer.s(1) {
   printf("-----------------------------------------------------------------\n")
 }
 
+probe udp.recvmsg /* ,udp.sendmsg */ {
+  printf(" %15s %15s  %5d  %5d  UDP\n",
+         saddr, daddr, sport, dport)
+}
+
 probe tcp.receive {
   printf(" %15s %15s  %5d  %5d  %d  %d  %d  %d  %d  %d\n",
          saddr, daddr, sport, dport, urg, ack, psh, rst, syn, fin)
@@ -196,7 +200,7 @@ probe tcp.receive {
 
While tcpdumplike.stp is running, it will print out the following information about any received TCP packets in real time: -
  • +
    • Source and destination IP address (saddr, daddr, respectively)
    • Source and destination ports (sport, dport, respectively) @@ -204,7 +208,7 @@ probe tcp.receive { Packet flags
    To determine the flags used by the packet, tcpdumplike.stp uses the following functions: -
    • +
      • urg - urgent
      • ack - acknowledgement @@ -218,7 +222,7 @@ probe tcp.receive { fin - finished
      The aforementioned functions return 1 or 0 to specify whether the packet uses the corresponding flag. -
      Example 5.4. tcpdumplike.stp Sample Output
      -----------------------------------------------------------------
      +	

      Example 5.4. tcpdumplike.stp Sample Output

      -----------------------------------------------------------------
              Source IP         Dest IP  SPort  DPort  U  A  P  R  S  F
       -----------------------------------------------------------------
         209.85.229.147       10.0.2.15     80  20373  0  1  1  0  0  0
      @@ -232,10 +236,9 @@ probe tcp.receive {
         209.85.229.147       10.0.2.15     80  21141  0  1  1  0  0  0
         209.85.229.147       10.0.2.15     80  21141  0  1  1  0  0  0
         209.85.229.118       10.0.2.15     80  63433  0  1  1  0  0  0
      -[...]

      5.1.5. Monitoring Network Packets Drops in Kernel

      - - The network stack in Linux can discard packets for various reasons. Some Linux kernels include a tracepoint, kernel.trace("kfree_skb"), which easily tracks where packets are discarded. dropwatch.stp uses kernel.trace("kfree_skb") to trace packet discards; the script summarizes which locations discard packets every five-second interval. -
      dropwatch.stp
      +[...]

    5.1.5. Monitoring Network Packets Drops in Kernel

    + The network stack in Linux can discard packets for various reasons. Some Linux kernels include a tracepoint, kernel.trace("kfree_skb"), which easily tracks where packets are discarded. dropwatch.stp uses kernel.trace("kfree_skb") to trace packet discards; the script summarizes which locations discard packets every five-second interval. +
    dropwatch.stp
    #! /usr/bin/env stap
     
    @@ -268,14 +271,14 @@ probe timer.sec(5)
     }
     
    - The kernel.trace("kfree_skb") traces which places in the kernel drop network packets. The kernel.trace("kfree_skb") has two arguments: a pointer to the buffer being freed ($skb) and the location in kernel code the buffer is being freed ($location). The dropwatch.stp script provides the function containing $location where possible. The information to map $location back to the function is not in the instrumentation by default. On Systemtap 1.4 the --all-modules option will include the required mapping information and the following command can be used to run the script: + The kernel.trace("kfree_skb") traces which places in the kernel drop network packets. The kernel.trace("kfree_skb") has two arguments: a pointer to the buffer being freed ($skb) and the location in kernel code the buffer is being freed ($location). The dropwatch.stp script provides the function containing $location where possible. The information to map $location back to the function is not in the instrumentation by default. On SystemTap 1.4 the --all-modules option will include the required mapping information and the following command can be used to run the script:
    stap --all-modules dropwatch.stp
    - On older versions of Systemtap you can use the following command to emulate the --all-modules option: + On older versions of SystemTap you can use the following command to emulate the --all-modules option:
    stap -dkernel \
     `cat /proc/modules | awk 'BEGIN { ORS = " " } {print "-d"$1}'` \
     dropwatch.stp
    Running the dropwatch.stp script 15 seconds would result in output similar in Example 5.5, “dropwatch.stp Sample Output”. The output lists the number of misses for each tracepoint location with either the function name or the address. -
    Example 5.5. dropwatch.stp Sample Output
    Monitoring for dropped packets
    +	

    Example 5.5. dropwatch.stp Sample Output

    Monitoring for dropped packets
     
     1762 packets dropped at unix_stream_recvmsg
     4 packets dropped at tun_do_read
    @@ -295,4 +298,4 @@ Stopping dropped packet monitor
     ffffffff8149a420 t unix_dgram_poll
     ffffffff8149a5e0 t unix_stream_recvmsg
     ffffffff8149ad00 t unix_find_other
    -[...]
    +[...]
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/userspace-probing.html b/SystemTap_Beginners_Guide/userspace-probing.html index d8876bd4..309cede9 100644 --- a/SystemTap_Beginners_Guide/userspace-probing.html +++ b/SystemTap_Beginners_Guide/userspace-probing.html @@ -1,35 +1,37 @@ - -Chapter 4. User-Space Probing

Product SiteDocumentation Site

Chapter 4. User-Space Probing

- SystemTap initially focused on kernel-space probing. However, there are many instances where user-space probing can help diagnose a problem. SystemTap 0.6 added support to allow probing user-space processes. SystemTap includes support for probing the entry into and return from a function in user-space processes, probing predefined markers in user-space code, and monitoring user-process events. +Chapter 4. User-space Probing

Product SiteDocumentation Site

Chapter 4. User-space Probing

+ SystemTap initially focused on kernel-space probing. Because there are many instances where user-space probing can help diagnose a problem, SystemTap 0.6 added support to allow probing user-space processes. SystemTap can probe the entry into and return from a function in user-space processes, probe predefined markers in user-space code, and monitor user-process events.
- The SystemTap user-space probing requires the utrace kernel extensions which provide an API for tracking various user-space events. More details about the utrace infrastructure are available at http://sourceware.org/systemtap/wiki/utrace. The following command determines whether the currently running Linux kernel provides the needed utrace support: -
grep CONFIG_UTRACE /boot/config-`uname -r`
- If the Linux kernel support user-space probing, the following output is printed: -
CONFIG_UTRACE=y
- The SystemTap user-space probing also needs the uprobes kernel module. If the uprobes kernel module is not available, you will see an error message like the following when attempting to run a script that requires the uprobes kernel module: -
SystemTap's version of uprobes is out of date.
-As root, or a member of the 'root' group, run
-"make -C /usr/share/systemtap/runtime/uprobes".
-Pass 4: compilation failed.  Try again with another '--vp 0001' option.
- If this occurs, you need to generate a uprobes.ko module for the kernel as directed. -

4.1. User-Space Events

- All user-space event probes begin with process. The process events can be limited to a specific running process by specifying the process ID. The process events can also be limited to monitoring a particular executable by specifying the path to executable (PATH). SystemTap makes use of the PATH environment variable, so both the name used on the command-line to start the executable and the absolute path to the executable can be used. Several of user-space probe events limit their scope to a particular executable name (PATH) because SystemTap must use debug information to statically analyzed where to places the probes, but for many user-space probes events the process ID and executable name are optional. Any process event in the list below that include process ID or the path to the executable must include those arguments. The process ID and path to the executable are optional for the process events that do not list them: -
process("PATH").function("function")
- The entry to the user-space function function for the executable PATH. This event is the user-space analogue of the kernel.function("function") event. It allows wildcards for the function function and .return suffix. -
process("PATH").statement("statement")
+ SystemTap requires the uprobes module to perform user-space probing. If your Linux kernel is version 3.5 or higher, it already includes uprobes. To verify that the current kernel supports uprobes natively, run the following command: +
grep CONFIG_UPROBES /boot/config-`uname -r`
+ If uprobes is integrated, the output of this command is as follows: +
CONFIG_UPROBES=y
+ If you are running a kernel prior to version 3.5, SystemTap automatically builds the uprobes module. However, you also need the utrace kernel extensions required by the SystemTap user-space probing to track various user-space events. More details about the utrace infrastructure are available at http://sourceware.org/systemtap/wiki/utrace. To determine whether the currently running Linux kernel provides the needed utrace support, type the following at a shell prompt: +
grep CONFIG_UTRACE /boot/config-`uname -r`
+ If the Linux kernel supports user-space probing, the command produces the following output: +
CONFIG_UTRACE=y

4.1. User-Space Events

+ All user-space event probes begin with process. You can limit the process events to a specific running process by specifying the process ID. You can also limit the process events to monitor a particular executable by specifying the path to the executable (PATH). SystemTap makes use of the PATH environment variable, which allows you to use both the name used on the command-line to start the executable and the absolute path to the executable. +
+ Several of the user-space probe events limit their scope to a particular executable name (PATH), because SystemTap must use debug information to statically analyze where to place the probes. But for many user-space probe events, the process ID and executable name are optional. Any process event in the list below that include process ID or the path to the executable must include those arguments. The process ID and path to the executable are optional for the process events that do not list them: +
process("PATH").function("function")
+ The entry to the user-space function function for the executable PATH. This event is the user-space analogue of the kernel.function("function") event. It allows wildcards for the function function and .return suffix. +
process("PATH").statement("statement")
The earliest instruction in the code for statement. This is the user-space analogue of kernel.statement("statement"). -
process("PATH").mark("marker")
- The static probe point marker defined in PATH. Wildcards can be used for marker to specify mutiple marks with a single probe. The static probe points may also have numbered arguments ($1, $2, etc.) available to the probe. A variety of user-space packages such as Java include these static probe points. Most packages that provide static probe points also provide aliases for the raw user-space mark events. Below is one such alias for the x86_64 Java hotspot JVM: -
probe hotspot.gc_begin =
-  process("/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server/libjvm.so").mark("gc__begin")
process.begin
- User-space process is created. This can be limited to a particular process ID or a full path to the executable. -
process.thread.begin
- User-space thread is created. This can be limited to a particular process ID or a full path to the executable. -
process.end
- User-space process died. This can be limited to a particular process ID or a full path to the executable. -
process.thread.end
- User-space thread is destroyed. This can be limited to a particular process ID or a full path to the executable. -
process.syscall
- User-space process makes a system call. The system call number is available via $syscall context variable, and the fist six arguments are available via $arg1 through $arg6. The ".return" suffix will place the probe at the return from the system call. For the "syscall.return" the return value is available through the $return context variable. This can be limited to a particular process ID or a full path to the executable. -
+
process("PATH").mark("marker")
+ The static probe point marker defined in PATH. You can use wildcards for marker to specify multiple marks with a single probe. The static probe points may also have numbered arguments ($1, $2, and so on) available to the probe. +
+ A variety of user-space packages such as Java include these static probe points. Most packages that provide static probe points also provide aliases for the raw user-space mark events. Below is one such alias for the x86_64 Java hotspot JVM: +
probe hotspot.gc_begin =
+  process("/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server/libjvm.so").mark("gc__begin")
process.begin
+ A user-space process is created. You can limit this to a particular process ID or a full path to the executable. +
process.thread.begin
+ A user-space thread is created. You can limit this to a particular process ID or a full path to the executable. +
process.end
+ A user-space process dies. You can limit this to a particular process ID or a full path to the executable. +
process.thread.end
+ A user-space thread is destroyed. You can limit this to a particular process ID or a full path to the executable. +
process.syscall
+ A user-space process makes a system call. The system call number is available in the $syscall context variable, and the fist six arguments are available in $arg1 through $arg6. The .return suffix places the probe at the return from the system call. For syscall.return, the return value is available through the $return context variable. +
+ You can limit this to a particular process ID or a full path to the executable. +
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/using-systemtap.html b/SystemTap_Beginners_Guide/using-systemtap.html index e22318bf..3070aa9f 100644 --- a/SystemTap_Beginners_Guide/using-systemtap.html +++ b/SystemTap_Beginners_Guide/using-systemtap.html @@ -1,63 +1,64 @@ - -Chapter 2. Using SystemTap

Product SiteDocumentation Site

Chapter 2. Using SystemTap

- This chapter instructs users how to install SystemTap, and provides an introduction on how to run SystemTap scripts. -

2.1. Installation and Setup

- To deploy SystemTap, you need to install the SystemTap packages along with the corresponding set of -devel, -debuginfo and -debuginfo-common packages for your kernel. If your system has multiple kernels installed, and you wish to use SystemTap on more than one kernel kernel, you will need to install the -devel and -debuginfo packages for each of those kernel versions. +Chapter 2. Using SystemTap

Product SiteDocumentation Site

Chapter 2. Using SystemTap

+ This chapter documents how to install SystemTap in the system and explains how to use the stap utility to run SystemTap scripts. +

2.1. Installation and Setup

+ To deploy SystemTap, install the SystemTap packages along with the corresponding set of -devel, -debuginfo, and -debuginfo-common packages for your kernel. If your system has multiple kernels installed and you intend to use SystemTap on more than one of them, also install the -devel and -debuginfo packages for each of those kernel versions.
- These procedures will be discussed in detail in the following sections. -

Important

- Many users confuse -debuginfo with -debug. Remember that the deployment of SystemTap requires the installation of the -debuginfo package of the kernel, not the -debug version of the kernel. -

2.1.1. Installing SystemTap

- To deploy Systemtap, you will need to to install the following RPMs: -
  • - systemtap + The following sections discuss the installation procedures in greater detail. +

    Important

    + Many users confuse -debuginfo with -debug. Remember that the deployment of SystemTap requires the installation of the -debuginfo package of the kernel, not the -debug version of the kernel. +

    2.1.1. Installing SystemTap

    + To deploy SystemTap, install the following RPM packages: +
    • + systemtap
    • - systemtap-runtime + systemtap-runtime
    - Assuming that yum is installed in the system, these two rpms can be installed with yum install systemtap systemtap-runtime. Note that before you can use SystemTap, you will still need to install the required kernel information RPMs. -

    2.1.2. Installing Required Kernel Information RPMs

    - SystemTap needs information about the kernel in order to place instrumentation in it (i.e. probe it). This information also allows SystemTap to generate the code for the instrumentation. This information is contained in the matching -devel, -debuginfo, and -debuginfo-common packages for your kernel. The necessary -devel and -debuginfo packages for the ordinary "vanilla" kernel are as follows: -
    • - kernel-debuginfo + To do so, run the following command as root: +
      yum install systemtap systemtap-runtime
      + Note that before using SystemTap, you still need to install the required kernel information packages. On modern systems, run the following command as root to install these packages: +
      stap-prep
      + If this command does not work, try manual installation as described below. +

    2.1.2. Installing Required Kernel Information Packages Manually

    + SystemTap needs information about the kernel in order to place instrumentation in it (in other words, probe it). This information also allows SystemTap to generate the code for the instrumentation. +
    + The required information is contained in the matching -devel, -debuginfo, and -debuginfo-common packages for your kernel. The necessary -devel and -debuginfo packages for the ordinary "vanilla" kernel are as follows: +
    • + kernel-debuginfo
    • - kernel-debuginfo-common + kernel-debuginfo-common
    • - kernel-devel + kernel-devel
    - Likewise, the necessary packages for the PAE kernel would be kernel-PAE-debuginfo, kernel-PAE-debuginfo-common, and kernel-PAE-devel. -
    + Likewise, the necessary packages for the PAE kernel are kernel-PAE-debuginfo, kernel-PAE-debuginfo-common, and kernel-PAE-devel. +
    To determine what kernel your system is currently using, use:
    uname -r
    - For example, if you wish to use SystemTap on kernel version 2.6.18-53.el5 on an i686 machine, then you would need to download and install the following RPMs: -
    • - kernel-debuginfo-2.6.18-53.1.13.el5.i686.rpm + For example, if you intend to use SystemTap on kernel version 2.6.18-53.el5 on an i686 machine, download and install the following RPM packages: +
      • + kernel-debuginfo-2.6.18-53.1.13.el5.i686.rpm
      • - kernel-debuginfo-common-2.6.18-53.1.13.el5.i686.rpm + kernel-debuginfo-common-2.6.18-53.1.13.el5.i686.rpm
      • - kernel-devel-2.6.18-53.1.13.el5.i686.rpm -

      Important

      - The version, variant, and architecture of the -devel, -debuginfo and -debuginfo-common packages must match the kernel you wish to probe with SystemTap exactly. + kernel-devel-2.6.18-53.1.13.el5.i686.rpm +

    Important

    + The version, variant, and architecture of the -devel, -debuginfo and -debuginfo-common packages must match the kernel you wish to probe with SystemTap exactly.
    - The easiest way to install the required kernel information packages is through yum install and debuginfo-install commands. debuginfo-install is included with later versions of the yum-utils package (for example, version 1.1.10), and also requires an appropriate yum repository from which to download and install -debuginfo/-debuginfo-common packages. You can install the required -devel, -debuginfo, and -debuginfo-common packages for your kernel. + The easiest way to install the required kernel information packages is through yum install and debuginfo-install commands. The debuginfo-install command is included with later versions of the yum-utils package (for example, version 1.1.10) and also requires an appropriate yum repository from which to download and install -debuginfo and -debuginfo-common packages. You can install the required -devel, -debuginfo, and -debuginfo-common packages for your kernel.
    - With the appropriate software repositories are enabled, install the corresponding packages for a specific kernel using yum with the following commands: -
    • - yum install kernelname-devel-version -
    • - debuginfo-install kernelname-version -
    - Replace kernelname with the appropriate kernel variant name (for example, kernel-PAE), and version with the target kernel's version. For example, to install the required kernel information packages for the kernel-PAE-2.6.18-53.1.13.el5 kernel, run: -
    • - yum install kernel-PAE-devel-2.6.18-53.1.13.el5 -
    • - debuginfo-install kernel-PAE-2.6.18-53.1.13.el5 -
    - Once you have manually downloaded the required packages to the machine, install the RPMs by running rpm --force -ivh package_names. -

    2.1.3. Initial Testing

    - If you are currently using the kernel you wish to probe with SystemTap, you can immediately test whether the deployment was successful. If not, you will need to reboot and load the appropriate kernel. + When the appropriate software repositories are enabled, install the corresponding packages for a specific kernel with the following commands: +
    yum install kernelname-devel-version
    +debuginfo-install kernelname-version
    + Replace kernelname with the appropriate kernel variant name (for example, kernel-PAE), and version with the target kernel's version. For example, to install the required kernel information packages for the kernel-PAE-2.6.18-53.1.13.el5 kernel, run: +
    yum install kernel-PAE-devel-2.6.18-53.1.13.el5
    +debuginfo-install kernel-PAE-2.6.18-53.1.13.el5
    + Once you have manually downloaded the required packages to the machine, run the following command as root to install them: +
    rpm --force -ivh package_names

    2.1.3. Initial Testing

    + If you are currently using the kernel you intend to probe with SystemTap, you can immediately test whether the deployment was successful. If not, you restart the system and load the appropriate kernel.
    - To start the test, run the command stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}'. This command simply instructs SystemTap to print read performed then exit properly once a virtual file system read is detected. If the SystemTap deployment was successful, you should get output similar to the following: + To start the test, run the following command: +
    stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}'
    + This command instructs SystemTap to print read performed and then exit properly once a virtual file system read is detected. If the SystemTap deployment was successful, it prints output similar to the following:
    Pass 1: parsed user script and 45 library script(s) in 340usr/0sys/358real ms.
     Pass 2: analyzed script: 1 probe(s), 1 function(s), 0 embed(s), 0 global(s) in 290usr/260sys/568real ms.
     Pass 3: translated to C into "/tmp/stapiArgLX/stap_e5886fa50499994e6a87aacdc43cd392_399.c" in 490usr/430sys/938real ms.
    @@ -65,5 +66,5 @@ Pass 4: compiled C into "stap_e5886fa50499994e6a87aacdc43cd392_399.ko" in 3310us
     Pass 5: starting run.
     read performed
     Pass 5: run completed in 10usr/40sys/73real ms.
    - The last three lines of the output (i.e. beginning with Pass 5) indicate that SystemTap was able to successfully create the instrumentation to probe the kernel, run the instrumentation, detect the event being probed (in this case, a virtual file system read), and execute a valid handler (print text then close it with no errors). -
+ The last three lines of the output (beginning with Pass 5) indicate that SystemTap was able to successfully create the instrumentation to probe the kernel, run the instrumentation, detect the event being probed (in this case, a virtual file system read), and execute a valid handler (print text then close it with no errors). +
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/using-usage.html b/SystemTap_Beginners_Guide/using-usage.html index cfeb9e00..e17f7eaf 100644 --- a/SystemTap_Beginners_Guide/using-usage.html +++ b/SystemTap_Beginners_Guide/using-usage.html @@ -1,64 +1,61 @@ - -2.3. Running SystemTap Scripts

Product SiteDocumentation Site

2.3. Running SystemTap Scripts

- SystemTap scripts are run through the command stap. stap can run SystemTap scripts from standard input or from file. -
- Running stap and staprun requires elevated privileges to the system. However, not all users can be granted root access just to run SystemTap. In some cases, for instance, you may want to allow a non-privileged user to run SystemTap instrumentation on his machine. -
- To allow ordinary users to run SystemTap without root access, add them to one of these user groups: -
stapdev
- Members of this group can use stap to run SystemTap scripts, or staprun to run SystemTap instrumentation modules. +2.3. Running SystemTap Scripts

Product SiteDocumentation Site

2.3. Running SystemTap Scripts

+ SystemTap is distributed with a number of command line tools that allow you to monitor the activities of the system. The stap command reads probing instructions from a SystemTap script, translates these instructions into C code, builds a kernel module, and loads it into the running Linux kernel. The staprun command runs SystemTap instrumentation, that is, a kernel module built from SystemTap scripts during a cross-instrumentation. +
+ Running stap and staprun requires elevated privileges to the system. Because not all users can be granted root access just to run SystemTap, you can allow a non-privileged user to run SystemTap instrumentation on their machine by adding them to one of the following user groups: +
stapdev
+ Members of this group can use the stap command to run SystemTap scripts, or staprun to run SystemTap instrumentation modules.
- Running stap involves compiling SystemTap scripts into kernel modules and loading them into the kernel. This requires elevated privileges to the system, which are granted to stapdev members. Unfortunately, such privileges also grant effective root access to stapdev members. As such, you should only grant stapdev group membership to users whom you can trust root access. -
stapusr
- Members of this group can only run staprun to run SystemTap instrumentation modules. In addition, they can only run those modules from /lib/modules/kernel_version/systemtap/. Note that this directory must be owned only by the root user, and must only be writable by the root user. + Running the stap command involves compiling SystemTap scripts into kernel modules and loading them into the kernel. This operation requires elevated privileges to the system, which are granted to stapdev members. Unfortunately, such privileges also grant effective root access to stapdev members. As a consequence, only grant stapdev group membership to users whom you can trust with root access. +
stapusr
+ Members of this group can only use the staprun command to run SystemTap instrumentation modules. In addition, they can only run modules from the /lib/modules/kernel_version/systemtap/ directory. Note that this directory must be owned only by the root user, and must only be writable by the root user.
+ The stap command reads a SystemTap script either from a file, or from standard input. To tell stap to read a SystemTap script from a file, specify the file name on the command line: +
stap file_name
+ To instruct stap to read a SystemTap script from standard input, use the - switch instead of the file name. Note that any command-line options you wish to use must be inserted before the - switch. For example, to make the output of the stap command more verbose, type: +
echo "probe timer.s(1) {exit()}" | stap -v -
Below is a list of commonly used stap options: -
-v
- Makes the output of the SystemTap session more verbose. You can repeat this option (for example, stap -vvv script.stp) to provide more details on the script's execution. This option is particularly useful if you encounter any errors in running the script. -
- For more information about common SystemTap script errors, refer to Chapter 6, Understanding SystemTap Errors. -
-o filename
- Sends the standard output to file (filename). -
-S size,count
- Limit files to size megabytes and limit the the number of files kept around to count. The file names will have a sequence number suffix. This option implements logrotate operations for SystemTap. -
-x process ID
- Sets the SystemTap handler function target() to the specified process ID. For more information about target(), refer to SystemTap Functions. -
-c 'command'
- Sets the SystemTap handler function target() to the specified command and runs the SystemTap instrumentation for the duration of the specified command. For more information about target(), refer to SystemTap Functions. -
-e 'script'
- Use script string rather than a file as input for systemtap translator. -
-F
- Use SystemTap's Flight recorder mode and make the script a background process. For more information about flight recorder mode, refer to Section 2.3.1, “SystemTap Flight Recorder Mode”. +
-v
+ Makes the output of the SystemTap session more verbose. You can repeat this option multiple times to provide more details on the script's execution, for example: +
stap -vvv script.stp
+ This option is particularly useful if you encounter any errors in running the script. For more information about common SystemTap script errors, refer to Chapter 6, Understanding SystemTap Errors. +
-o file_name
+ Sends the standard output to a file named file_name. +
-S size,count
+ Limits the maximum size of output files to size megabytes and the maximum number of stored files to count. This option implements logrotate operations for SystemTap and the resulting file names have a sequence number suffix. +
-x process_id
+ Sets the SystemTap handler function target() to the specified process ID. For more information about target(), refer to SystemTap Functions. +
-c 'command'
+ Sets the SystemTap handler function target() to the specified command and runs the SystemTap instrumentation for the duration of this command. For more information about target(), refer to SystemTap Functions. +
-e 'script'
+ Uses script rather than a file as input for the SystemTap translator. +
-F
+ Uses SystemTap's flight recorder mode and makes the script a background process. For more information about flight recorder mode, refer to Section 2.3.1, “SystemTap Flight Recorder Mode”.
- You can also instruct stap to run scripts from standard input using the switch -. To illustrate: -
Example 2.1. Running Scripts From Standard Input
echo "probe timer.s(1) {exit()}" | stap -

- Example 2.1, “Running Scripts From Standard Input” instructs stap to run the script passed by echo to standard input. Any stap options you wish to use should be inserted before the - switch; for instance, to make the example in Example 2.1, “Running Scripts From Standard Input” more verbose, the command would be: -
- echo "probe timer.s(1) {exit()}" | stap -v - -
- For more information about stap, refer to man stap. -
- To run SystemTap instrumentation (i.e. the kernel module built from SystemTap scripts during a cross-instrumentation), use staprun instead. For more information about staprun and cross-instrumentation, refer to Section 2.2, “Generating Instrumentation for Other Computers”. -

Note

- The stap options -v and -o also work for staprun. For more information about staprun, refer to man staprun. -

2.3.1. SystemTap Flight Recorder Mode

- SystemTap's flight recorder mode allows you to run a SystemTap script run for long periods and just focus on recent output. The flight recorder mode (the -F option) limits the amount of output generated. There are two variations of the flight recorder mode: in-memory and file mode. In both cases the SystemTap script runs as a background process. -

2.3.1.1. In-memory Flight Recorder

- When flight recorder mode (the -F option) is used without a file name SystemTap uses a buffer in kernel memory to store the output of the script. The SystemTap instrumentation module will load and the probes start running, the instrumentation will then detach and be put in the background. When the interesting event occurs, you can reattach to the instrumentation and see the recent output in the memory buffer and any continuing output. The following command starts a script using the flight recorder in-memory mode: -
stap -F iotime.stp
- Once the script starts, you will see a message like the following that provides the command to reconnect to the running script: + For more information about the stap command, refer to the stap(1) man page. For more information about the staprun command and cross-instrumentation, refer to Section 2.2, “Generating Instrumentation for Other Computers” or the staprun(8) man page. +

2.3.1. SystemTap Flight Recorder Mode

+ SystemTap's flight recorder mode allows you to run a SystemTap script for long periods of time and just focus on recent output. The flight recorder mode limits the amount of output generated. +
+ There are two variations of the flight recorder mode: in-memory and file mode. In both cases, the SystemTap script runs as a background process. +

2.3.1.1. In-memory Flight Recorder

+ When flight recorder mode is used without a file name, SystemTap uses a buffer in kernel memory to store the output of the script. Once the SystemTap instrumentation module is loaded and the probes start running, the instrumentation detaches and is put in the background. When the interesting event occurs, you can reattach to the instrumentation to see the recent output in the memory buffer and any continuing output. +
+ To run a SystemTap script by using the flight recorder in-memory mode, run the stap command with the -F command line option: +
stap -F iotime.stp
+ Once the script starts, stap prints a message similar to the following to provide you with the command to reconnect to the running script:
Disconnecting from systemtap module.
 To reconnect, type "staprun -A stap_5dd0073edcb1f13f7565d8c343063e68_19556"
- When the interesting event occurs, you reattach to the currently running script and output the recent data in the memory buffer and get continuing output with the following command: -
staprun -A stap_5dd0073edcb1f13f7565d8c343063e68_19556
- By default the kernel buffer is 1MB in size and it can be increased with the -s option specifying the size in megabytes (rounded up to the next power over 2) for the buffer. For example -s2 on the SystemTap command line would specify 2MB for the buffer. -

2.3.1.2. File Flight Recorder

- The flight recorder mode can also store data to files. The number and size of the files kept is controlled by the -S option followed by two numerical arguments separated by a comma. The first argument is the maximum size in megabytes for the each output file. The second argument is the number of recent files to keep. The file name is specified by the -o option followed by the name. SystemTap will add a number suffix to the file name to indicate the order of the files. The following will start SystemTap in file flight recorder mode with the output going to files named /tmp/iotime.log.[0-9]+ and each file 1MB or smaller and keeping latest two files: -
stap -F -o /tmp/pfaults.log -S 1,2  pfaults.stp
- The number printed by the command is the process ID. Sending a SIGTERM to the process will shutdown the SystemTap script and stop the data collection. For example if the previous command listed the 7590 as the process ID, the following command whould shutdown the systemtap script: -
kill -s SIGTERM 7590
- Only the most recent two file generated by the script are kept and the older files are been removed. Thus, ls -sh /tmp/pfaults.log.* shows the only two files: + When the interesting event occurs, run the following command to connect to the currently running script, output the recent data in the memory buffer, and get continuing output: +
staprun -A stap_5dd0073edcb1f13f7565d8c343063e68_19556
+ By default, the kernel buffer is 1MB in size. You can increase this value by using the -s option with the size in megabytes (rounded up to the next power over 2) for the buffer. For example, -s2 on the SystemTap command line would specify 2MB for the buffer. +

2.3.1.2. File Flight Recorder

+ The flight recorder mode can also store data to files. You can control the number and size of the files kept by using the -S option followed by two numerical arguments separated by a comma: the first argument is the maximum size in megabytes for the each output file, the second argument is the number of recent files to keep. To specify the file name, use the -o option followed by the name. SystemTap automatically adds a number suffix to the file name to indicate the order of the files. +
+ The following command starts SystemTap in file flight recorder mode with the output going to files named /tmp/iotime.log.[0-9]+, each file 1MB or smaller, and keeping latest two files: +
stap -F -o /tmp/pfaults.log -S 1,2 pfaults.stp
+ The command prints the process ID to standard output. Sending a SIGTERM to the process terminates the SystemTap script and stops the data collection. For example, if the previous command listed 7590 as the process ID, the following command would stop the SystemTap script: +
kill -s SIGTERM 7590
+ In this example, only the most recent two files generated by the script are kept: SystemTap automatically removes older files. As a result, the ls -sh /tmp/pfaults.log.* command lists two files:
1020K /tmp/pfaults.log.5    44K /tmp/pfaults.log.6
- One can look at the highest number file for the latest data, in this case /tmp/pfaults.log.6. -
+ To examine the latest data, read the file with the highest number, in this case /tmp/pfaults.log.6. +
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/ustack.html b/SystemTap_Beginners_Guide/ustack.html index a9f267aa..02688f0f 100644 --- a/SystemTap_Beginners_Guide/ustack.html +++ b/SystemTap_Beginners_Guide/ustack.html @@ -1,15 +1,14 @@ - -4.3. User-Space Stack Backtraces

Product SiteDocumentation Site

4.3. User-Space Stack Backtraces

- The probe point (pp) function indicates which particular event triggered the the SystemTap event handler. A probe on the entry into a function would list the function name. However, in many cases the same probe point event may be triggered by many different modules in the program; this is particularly true for functions in shared libraries. A SystemTap backtrace of the user-space stack can provide additional context on how the probe point event is triggered. +4.3. User-Space Stack Backtraces

Product SiteDocumentation Site

4.3. User-Space Stack Backtraces

+ The probe point (pp) function indicates which particular event triggered the SystemTap event handler. A probe on the entry into a function would list the function name. However, in many cases the same probe point event may be triggered by many different modules in the program; this is particularly true for functions in shared libraries. A SystemTap backtrace of the user-space stack can provide additional context on how the probe point event is triggered.
- The user-space stack backtrace generation is complicated by the compiler producing code optimized to eliminate stack frame pointers. However, the compiler also includes information in the debug information section to allow debugging tools to produce stack backtraces. SystemTap user-space stack backtrace mechanism makes use of that debug information to walk the stack to generate stack traces for 32-bit and 64-bit x86 processors; other processor architectures do not yet support the use of debug information to unwind the user-space stack. You will need to use the -d executable for the application executable and -ldd for shared libraries to ensure that the needed debug information is used to produce the user-space stack backtraces. + The user-space stack backtrace generation is complicated by the compiler producing code optimized to eliminate stack frame pointers. However, the compiler also includes information in the debug information section to allow debugging tools to produce stack backtraces. SystemTap user-space stack backtrace mechanism makes use of that debug information to walk the stack to generate stack traces for 32-bit and 64-bit x86 processors; other processor architectures do not yet support the use of debug information to unwind the user-space stack. To ensure that the needed debug information is used to produce the user-space stack backtraces, use the -d executable option for executables and -ldd for shared libraries.
- If you want to see how the function xmalloc function is being called by the command ls, you could use the user-space backtrack functions to provide that information. With the debuginfo for the ls command installed the following SystemTap command will provide a backtrace each time the xmalloc function is called: -
stap -d /bin/ls --ldd \
--e 'probe process("ls").function("xmalloc") {print_usyms(ubacktrace())}' \
--c "ls /"
- When the SystemTap script runs will have output similar to the following: + For example, you can use the user-space backtrack functions to see how the xmalloc function is being called by the ls command. With the debuginfo for the ls command installed, the following SystemTap command provides a backtrace each time the xmalloc function is called: +
stap -d /bin/ls --ldd \
+-e 'probe process("ls").function("xmalloc") {print_usyms(ubacktrace())}' \
+-c "ls /"
+ When executed, this command produces output similar to the following:
 bin	dev   lib	  media  net	     proc	sbin	 sys  var
 boot	etc   lib64	  misc	 op_session  profilerc	selinux  tmp
@@ -27,5 +26,5 @@ cgroup	home  lost+found  mnt	 opt	     root	srv	 usr
  0x3fa441ec5d : __libc_start_main+0xfd/0x1d0 [/lib64/libc-2.12.so]
  ...
 
- For more details on the functions available for user-space stack backtraces look at the ucontext-symbols.stp and ucontext-unwind.stp tapsets. The descriptions of the functions in those tapsets can also be found in the SystemTap Tapset Reference Manual. -
+ For more details on the functions available for user-space stack backtraces, refer to ucontext-symbols.stp and ucontext-unwind.stp tapsets. You can also find the description of the functions in the aforementioned tapsets in the SystemTap Tapset Reference Manual. +
\ No newline at end of file diff --git a/SystemTap_Beginners_Guide/utargetvariable.html b/SystemTap_Beginners_Guide/utargetvariable.html index 0b3e88f7..10a31c96 100644 --- a/SystemTap_Beginners_Guide/utargetvariable.html +++ b/SystemTap_Beginners_Guide/utargetvariable.html @@ -1,17 +1,18 @@ - -4.2. Accessing User-Space Target Variables

Product SiteDocumentation Site

4.2. Accessing User-Space Target Variables

- User-space target variables can be accessed in the same manner as described in Section 3.3.2, “Target Variables”. However, in Linux there are separate address spaces for the user and kernel code. When using "->" operator SystemTap will access the appropriate address space. For pointers to base types such as integers and strings there are a number of functions listed below to access user-space data. The first argument for each functions is the pointer to the data item. -
user_char(address)
- Obtain the character at address for the current user process. -
user_short(address)
- Obtain the short at address for the current user process. -
user_int(address)
- Obtain the int at address for the current user process. -
user_long(address)
- Obtain the long at address for the current user process. -
user_string(address)
- Obtain the string at address for the current user process. -
user_string_n(address, n)
- Obtain the string at address for the current user process and limits the string to n bytes. -
+4.2. Accessing User-Space Target Variables

Product SiteDocumentation Site

4.2. Accessing User-Space Target Variables

+ You can access user-space target variables in the same manner as described in Section 3.3.2, “Target Variables”. In Linux, however, there are separate address spaces for the user and kernel code. When using the -> operator, SystemTap accesses the appropriate address space. +
+ For pointers to base types such as integers and strings, there are a number of functions listed below to access user-space data. The first argument for each functions is the pointer to the data item. +
user_char(address)
+ Obtains the character at address for the current user process. +
user_short(address)
+ Obtains the short integer at address for the current user process. +
user_int(address)
+ Obtains the integer at address for the current user process. +
user_long(address)
+ Obtains the long integer at address for the current user process. +
user_string(address)
+ Obtains the string at address for the current user process. +
user_string_n(address, n)
+ Obtains the string at address for the current user process and limits the string to n bytes. +
\ No newline at end of file diff --git a/man/dtrace.1.html b/man/dtrace.1.html deleted file mode 100644 index 6078a561..00000000 --- a/man/dtrace.1.html +++ /dev/null @@ -1,208 +0,0 @@ - -Manpage of DTRACE - -

DTRACE

-Section: User Commands (1)
Index -Return to Main Contents
- -  -

NAME

- -dtrace - Dtrace compatibile user application static probe generation tool. -

- - - - -

-  -

SYNOPSIS

- -

-
- -dtrace -s file [OPTIONS] - -

-  -

DESCRIPTION

- -

-The dtrace command converts probe descriptions defined in file.d -into a probe header -file via the -h option -or a probe description file via the -G option. -

-  -

OPTIONS

- -

- -

-
-h - -
-generate a systemtap header file. -

-

-G - -
-generate a systemtap probe definition object file. -

-

-o file - -
-is the name of the output file. If the -G option is given then -the output file will be called file.o; if the -h option is -given then the output file will be called file.h. -

-

-C - -
-run the cpp preprocessor on the input file when the -h option -is given. -

-

-I file - -
-give this include path to cpp when the -C option is given. -

-

-k - -
-keep temporary files, for example the C language source for the --G option. -

-

--types - -
-generate probe argument typedef information when the -h -option is given. -

-

-  -

EXAMPLES

- -

-Systemtap is source compatible with dtrace user application static -probe support. -Given a file test.d containing: - -
- -

- -

-
-provider sdt_probes 
-{
-  probe test_0 (int type);
-  probe test_1 (struct astruct node);
-};
-struct astruct {int a; int b;};
-
-
- -
- - -

- -Then the command "dtrace -s test.d -G" will create the -probe definition file test.o and the command "dtrace -stest.d -h" will create the probe header file test.h -Subsequently the application can use the generated macros this way: - -
- -

- -

-
-#include "test.h"
- ...
-struct astruct s;
- ...
-SDT_PROBES_TEST_0(value);
- ...
-if (SDT_PROBES_TEST_1_ENABLED())
-    SDT_PROBES_TEST_1(expensive_function(s));
-
-
- -
- - -

- -

-  -

SEMAPHORES

- -

-Semaphores are flag variables used by probes as a way of bypassing -potentially costly processing to prepare arguments for probes that may -not even be active. They are automatically set/cleared by systemtap -when a relevant script is running, so the argument setup cost is only -paid when necessary. These semaphore variables are defined within the -the "test.o" object file, which must therefore be linked into an -application. -

- -Sometimes, semaphore variables are not necessary nor helpful. Skipping -them can simplfy the build process, by omitting the extra "test.o" -file. To skip dependence upon semaphore variables, include "<sys/sdt.h>" -within the application before "test.h": - -
- -

- -

-
-#include <sys/sdt.h>
-#include "test.h"
- ...
-struct astruct s;
- ...
-SDT_PROBES_TEST_0(value);
- ...
-if (SDT_PROBES_TEST_1_ENABLED())
-   SDT_PROBES_TEST_1(cheap_function(s));
-
-
- -
- - -

- -In this mode, the ENABLED() test is fixed at 1. -

-  -

SEE ALSO

- - -
-stap(1),
-stappaths(7)
-
-
-
-
- 

Index

-
-
NAME
-
SYNOPSIS
-
DESCRIPTION
-
OPTIONS
-
EXAMPLES
-
SEMAPHORES
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:25 GMT, March 18, 2014 - - diff --git a/man/error::buildid.7stap.html b/man/error::buildid.7stap.html deleted file mode 100644 index 716aeced..00000000 --- a/man/error::buildid.7stap.html +++ /dev/null @@ -1,117 +0,0 @@ - -Manpage of ERROR::BUILDID - -

ERROR::BUILDID

-Section: Misc. Reference Manual Pages (7stap)
Index -Return to Main Contents
- -  -

NAME

- -error::buildid - build-id verification failures -

- - - -

-

-  -

DESCRIPTION

- -

-Because systemtap's script translation / execution stages may be -executed at different times and places, it is sometimes necessary to -verify certain invariants. One such invariant is that if a script -was informed by translate-time analysis of executables, then those -same executables need to be used at run time. This checking -is done based upon the build-id, a binary hash that modern (post-2007) -compilers/toolchains add as an -NT_GNU_BUILD_ID - -ELF note to object files and executables. -Use the -readelf -n - -command to examine the build-ids of binaries, if you are interested. -

-

- -

-Only scripts are sensitive to executables' build-ids: generally those -that perform deep analysis of the binaries or their debuginfo. For example, -scripts that place -.function or .statement - -probes, or use stack backtrace-related tapset functions may be sensitive. -Other scripts that rely only on -process.mark or kernel.trace - -probes do not require debuginfo. See the DWARF DEBUGINFO section in the -stapprobes(3stap) - -man page. -

-

- -

-During translation, systemtap saves a copy of the relevant files' -build-ids within the compiled modules. At run-time, the modules -compare the saved ones to the actual run-time build-ids in memory. -The error message indicates that they did not match, so the module -will decline placing a probe that was computed based upon obsolete -data. This is important for safety, as placing them at an -inappropriate address could crash the programs. However, this is not -necessarily a fatal error, since probes unrelated to the mismatching -binaries may operate. -

-

- -

-A build-id mismatch could be caused by a few different situations. -The main one is where the executable versions or architecture were -different between the systemtap translation and execution -times/places. For example, one may run a stap-server on a slightly -different version of the OS distribution. Someone may have rebuilt a -new kernel image, but preserved the previous version numbers. The -kernel running on the workstation may be slightly different from the -version being targeted - perhaps due to a pending kernel upgrade -leaving different files on disk versus running in memory. If your OS -distribution uses separate debuginfo packages, the split .debug -files may not exactly match the main binaries. -

-

- -

-To disable build-id verification errors, if one is confident that they -are an artefact of build accidents rather than a real mismatch, one -might try the --DSTP_NO_BUILDID_CHECK - -option. -

-  -

SEE ALSO

- - -
-http://fedoraproject.org/wiki/Releases/FeatureBuildId,
-stap(1),
-stapprobes(3stap),
-warning::debuginfo(7stap),
-error::reporting(7stap)
-
-
-
- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/error::dwarf.7stap.html b/man/error::dwarf.7stap.html deleted file mode 100644 index 8031cb34..00000000 --- a/man/error::dwarf.7stap.html +++ /dev/null @@ -1,111 +0,0 @@ - -Manpage of ERROR::DWARF - -

ERROR::DWARF

-Section: Misc. Reference Manual Pages (7stap)
Index -Return to Main Contents
- -  -

NAME

- -error::dwarf - dwarf debuginfo quality problems -

-  -

DESCRIPTION

- -

-Systemtap sometimes relies on ELF/DWARF debuginfo for programs being -instrumented to locate places to probe, or context variables to -read/write, just like a symbolic debugger does. Even though -examination of the program's source code may show variables or lines -where probes may be desired, the compiler must preserve information -about them for systemtap (or a debugger such as gdb) to get pinpoint -access to the desired information. If a script requires such data, -but the compiler did not preserve enough of it, pass-2 errors may -result. -

- -Common conditions that trigger these problems include; -

-

-
compiler version
-Prior to GCC version 4.5, debuginfo quality was fairly limited. -Often developers were advised to build their programs with --O0 -g - -flags to disable optimization. GCC version 4.5 introduced -a facility called "variable-tracking assignments" that allows it -to generate high-quality debuginfo under full --O2 -g - -optimization. It is not perfect, but much better than before. -Note that, due to another gcc bug (PR51358) --O0 -g - -can actually sometimes make debuginfo quality worse than for --O2 -g. - -

-

function inlining
-Even modern gcc sometimes has problems with parameters for inlined functions. -It may be necessary to change the script to probe at a slightly different place -(try a -.statement() probe, instead of a .function() probe, - -somewhere a few source lines into the body of the inlined function. Or try -putting a probe at the call site of the inlined function. Or use the -if @defined($var) { ... } - -script language construct to test for the resolvability of the context -variable before using it. -

-

instruction reordering
-Heavily optimized code often smears the instructions from -multiple source statements together. This can leave systemtap with no place -to choose to place a probe, especially a statement probe specified by line -number. Systemtap may advise to try a nearby line number, but these may -not work well either. Consider placing a probe by a statement wildcard -or line number range. -

-

-  -

ALTERNATIVES

- -

-In order to reduce reliance on ELF/DWARF debuginfo, consider the use of -statically compiled-in instrumentation, such as kernel tracepoints, or -<sys/sdt.h> - -userspace markers. Such instrumentation hook sites are relatively low -cost (just one NOP instruction for sdt.h), and nearly guarantee the -availability of parameter data and a reliable probe site, -all without reliance on debuginfo. -

-  -

SEE ALSO

- - -
-stap(1),
-http://dwarfstd.org/,
-http://sourceware.org/systemtap/wiki/TipContextVariables,
-http://gcc.gnu.org/wiki/Var_Tracking_Assignments,
-warning::debuginfo(7stap),
-error::reporting(7stap)
-
-
-
- 

Index

-
-
NAME
-
DESCRIPTION
-
ALTERNATIVES
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/error::fault.7stap.html b/man/error::fault.7stap.html deleted file mode 100644 index c88f6f12..00000000 --- a/man/error::fault.7stap.html +++ /dev/null @@ -1,70 +0,0 @@ - -Manpage of ERROR::FAULT - -

ERROR::FAULT

-Section: Misc. Reference Manual Pages (7stap)
Index -Return to Main Contents
- -  -

NAME

- -error::fault - memory access faults -

- - - -

-

-  -

DESCRIPTION

- -

-Read or write faults can occur during the operation of a systemtap -script, if the script causes dereferencing of a pointer that turns out -to be invalid. This can be caused by using context variables that do -not happen to have valid values, or perhaps references to memory that -is unavailable at that moment due to paging. -

- -These fault conditions are benign because they are caught by the -systemtap runtime, which cleanly terminates the script. If quick -termination is not desired, consider using the ---skip-badvars or --suppress-handler-errors or -DMAXERRORS=NN - -stap options, or wrapping relevant parts of the probe handlers in a -try/catch - -block. -

- -It may be possible to adjust the target program, to make it more likely -that needed context variables are paged in when systemtap looks for them. -Consider adding some lightweight processing on the key variables, like a -strlen(foo) - -for a string, or iterating acrosse elements of an array or linked list, -or touching a few bytes of a heap-allocated block. The idea is to trigger -any page faults in the target program, before systemtap would need to (but can't). -  -

SEE ALSO

- - -
-stap(1),
-error::reporting(7stap)
-
-
-
- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/error::inode-uprobes.7stap.html b/man/error::inode-uprobes.7stap.html deleted file mode 100644 index f13bd4af..00000000 --- a/man/error::inode-uprobes.7stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of ERROR::INODE-UPROBES - -

ERROR::INODE-UPROBES

-Section: Misc. Reference Manual Pages (7stap)
Index -Return to Main Contents
- -  -

NAME

- -error::inode-uprobes - limitations of inode-uprobes -

-  -

DESCRIPTION

- -

-The uprobes kernel facility introduced in Linux 3.5 aims to supplant the -earlier out-of-tree utrace patch to enable user-space probing. There -have been some functional limitations in inode-uprobes that preclude -some systemtap constructs. Over time, we hope these regressions will -be corrected. -

-

-
function.return probes
-process.function().return - -probes require "return-probes" or "uretprobes" functionality, which was not -implemented in the builtin inode-uprobes until kernel 3.10. If you cannot -upgrade your kernel, consider using -process.statement() - -probes placed on source line numbers at the function's return statements. -

-

function.statement.absolute probes
-In utrace-equipped kernels, systemtap made it possible to address probes -by literal addresses in the process virtual memory address space. The -new inode-uprobes does not have this capability. -

-

-

-  -

SEE ALSO

- - -
-stap(1),
-http://kernelnewbies.org/Linux_3.5,
-http://sourceware.org/systemtap/wiki/utrace,
-error::reporting(7stap)
-
-
-
- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/error::pass1.7stap.html b/man/error::pass1.7stap.html deleted file mode 100644 index 8020673b..00000000 --- a/man/error::pass1.7stap.html +++ /dev/null @@ -1,93 +0,0 @@ - -Manpage of ERROR::PASS1 - -

ERROR::PASS1

-Section: Misc. Reference Manual Pages (7stap)
Index -Return to Main Contents
- -  -

NAME

- -error::pass1 - systemtap pass-1 errors -

-  -

DESCRIPTION

- -Errors that occur during pass 1 (parsing) usually mean -a basic syntax error of some sort occurred in the systemtap script. -There are several classes of problems possible: -

-

-
plain syntax error
-The systemtap script parser detects a large variety of errors, such as -missing operands, bad punctuation. It tries to list what kinds of tokens -it was expecting to see, and will show the region of the source code with -the problem. Please review the -stap(1) - -man page and/or the tutorial, to correct the script's syntax. -

-

grammar ambiguities
-There is at least one known ambiguity in the systemtap grammar. It relates -to the optionality of -; - -(semicolon) separators between statements, and the -++ and -- - -increment/decrement operators. If the parser indicates an error, consider -adding some explicit -; - -separators between nearby statements and try again. -

-

missing command line arguments
-A systemtap script that uses the -$N and @N - -constructs for substituting in command-line options may fail if not -enough options were given on the stap command line. -

-

compatibility changes
-Some versions of systemtap have changed the language incompatibly, -for example by adding the try/catch keywords for exception handling. -In such cases, rerun systemtap with the ---compatibility=VERSION - -option, substituting the last systemtap version where your script -was known to work. You may also check the release-history NEWS file -for compatibility changes. -

-

-  -

GATHERING MORE INFORMATION

- -Increasing the verbosity of pass-1 with an option such as ---vp 1 - -can help pinpoint the problem. -

-  -

SEE ALSO

- - -
-stap(1),
-error::reporting(7stap)
-
-
-
- 

Index

-
-
NAME
-
DESCRIPTION
-
GATHERING MORE INFORMATION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/error::pass2.7stap.html b/man/error::pass2.7stap.html deleted file mode 100644 index 2c72f079..00000000 --- a/man/error::pass2.7stap.html +++ /dev/null @@ -1,128 +0,0 @@ - -Manpage of ERROR::PASS2 - -

ERROR::PASS2

-Section: Misc. Reference Manual Pages (7stap)
Index -Return to Main Contents
- -  -

NAME

- -error::pass2 - systemtap pass-2 errors -

-  -

DESCRIPTION

- -Errors that occur during pass 2 (elaboration) can have a variety of causes. -Common types include: -

-

-
unavailable probe point classes
-Some types of probe points are only available on certain system versions, -architectures, and configurations. For example, user-space -process.* - -probes may require utrace or uprobes capability in the kernel for this -architecture. -

-

unavailable probe points
-Some probe points may be individually unavailable even when their class is -fine. For example, -kprobe.function(foobar) - -may fail if function -foobar - -does not exist in the kernel any more. Debugging or symbol data may be absent for -some types of -.function or .statement - -probes; check for availability of debuginfo. Try the -stap-prep - -program to download possibly-required debuginfo. -Use a wildcard parameter such as -stap -l 'kprobe.function(*foo*)' - -to locate still-existing variants. Use -! or ? - -probe point suffixes to denote optional / preferred-alternatives, to let -the working parts of a script continue. -

-

typos
-There might be a spelling error in the probe point name ("sycsall" vs. -"syscall"). Wildcard probes may not find a match at all in the -tapsets. Recheck the names using -stap -l PROBEPOINT. - -Another common mistake is to use the -. - -operator instead of the correct --> - -when dereferencing context variable subfields or pointers: -$foo->bar->baz - -even if in C one would say -foo->bar.baz. - -

-

unavailable context variables
-Systemtap scripts often wish to refer to variables from the context of the -probed programs using -$variable - -notation. These variables may not always be available, depending on versions -of the compiler, debugging/optimization flags used, architecture, etc. Use -stap -L PROBEPOINT - -to list available context variables for given probes. Use the -@defined() - -expression to test for the resolvability of a context variable expression. -Consider using the -stap --skip-badvars - -option to silently replace misbehaving context variable expressions with zero. -

-

-  -

GATHERING MORE INFORMATION

- -Increasing the verbosity of pass-2 with an option such as ---vp 02 - -can help pinpoint the problem. -

-  -

SEE ALSO

- - -
-stap(1),
-stap-prep(1),
-stapprobes(3stap),
-probe::*(3stap),
-error::dwarf(7stap),
-error::inode-uprobes(7stap),
-warning::debuginfo(7stap),
-error::reporting(7stap)
-
-
-
- 

Index

-
-
NAME
-
DESCRIPTION
-
GATHERING MORE INFORMATION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/error::pass3.7stap.html b/man/error::pass3.7stap.html deleted file mode 100644 index 3dbb93e5..00000000 --- a/man/error::pass3.7stap.html +++ /dev/null @@ -1,62 +0,0 @@ - -Manpage of ERROR::PASS3 - -

ERROR::PASS3

-Section: Misc. Reference Manual Pages (7stap)
Index -Return to Main Contents
- -  -

NAME

- -error::pass3 - systemtap pass-3 errors -

-  -

DESCRIPTION

- -Errors during pass 3 (translation) occur only rarely. -

-

-
unsupported code generation
-Some script language constructs are not available in every -probe point. For example, the -@perf() - -counter-reading function may only be used in -process.* - -probes. -

-

-  -

GATHERING MORE INFORMATION

- -Increasing the verbosity of pass-3 with an option such as ---vp 002 - -may help pinpoint the problem. -

-  -

SEE ALSO

- - -
-stap(1),
-stapprobes(3stap)
-error::reporting(7stap)
-
-
-
- 

Index

-
-
NAME
-
DESCRIPTION
-
GATHERING MORE INFORMATION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/error::pass4.7stap.html b/man/error::pass4.7stap.html deleted file mode 100644 index 1d6990e5..00000000 --- a/man/error::pass4.7stap.html +++ /dev/null @@ -1,85 +0,0 @@ - -Manpage of ERROR::PASS4 - -

ERROR::PASS4

-Section: Misc. Reference Manual Pages (7stap)
Index -Return to Main Contents
- -  -

NAME

- -error::pass4 - systemtap pass-4 errors -

-  -

DESCRIPTION

- -Errors that occur during pass 4 (compilation) have generally only a few -causes: -

-

-
kernel or OS version changes
-The systemtap runtime and embedded-C fragments in the tapset library -are designed to be portable across a wide range of OS versions. However, -incompatibilities can occur when some OS changes occur, such as kernel -modifications that change functions, types, or macros referenced -by systemtap. Upstream builds of systemtap are often quickly updated to -include relevant fixes, so try getting or making an updated build. -If the issue persists, report the problem to the systemtap developers. -

-

buggy embedded-C code
-Embedded-C code in your own guru-mode script cannot be checked by systemtap, -and is passed through verbatim to the compiler. Errors in such snippets of -code may be found during the pass-4 compiler invocation, though may be hard -to identify by the compiler errors. -

-

incompatible embedded-C code
-The interface standards between systemtap-generated code and embedded-C code -occasionally change. For example, before version 1.8, arguments were passed -using macros -THIS->foo and THIS->__retvalue - -but from version 1.8 onward, using -STAP_ARG_foo and STAP_RETVALUE. - -Adjust your embedded-C code to current standards, or use the -stap --compatible=VERSION - -option to make systemtap use a different one. -

-

-  -

GATHERING MORE INFORMATION

- -It may be necessary to run systemtap with --k or -p3 - -to examine the generated C code. Increasing the verbosity of pass-4 -with an option such as ---vp 0001 - -can also help pinpoint the problem. -

-  -

SEE ALSO

- - -
-stap(1),
-error::reporting(7stap)
-
-
-
- 

Index

-
-
NAME
-
DESCRIPTION
-
GATHERING MORE INFORMATION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/error::pass5.7stap.html b/man/error::pass5.7stap.html deleted file mode 100644 index 56c6541c..00000000 --- a/man/error::pass5.7stap.html +++ /dev/null @@ -1,129 +0,0 @@ - -Manpage of ERROR::PASS5 - -

ERROR::PASS5

-Section: Misc. Reference Manual Pages (7stap)
Index -Return to Main Contents
- -  -

NAME

- -error::pass5 - systemtap pass-5 errors -

-  -

DESCRIPTION

- -Errors that occur during pass 5 (execution) can have a variety of causes. -

-

-
exceptional events during script execution
-The systemtap translator and runtime include numerous error checks -that aim to protect the systems and the users from mistakes or -transient conditions. The script may deliberately call the -error() - -tapset function to signal a problem. Some memory needed for -accessing -$context - -variables may be temporarily unavailable. Consider using the -try/catch - -construct to wrap script fragments in exception-handling code. -Consider using the -stap --suppress-handler-errors - -or -stap --skip-badvars - -option. -

-

resource exhaustion
-One of several types of space or time resource limits may be -exceeded by the script, including system overload, too many tuples -to be stored in an array, etc. Some of the error messages identify -the constraint by macro name, which may be individually raised. -Consider using the -stap --suppress-handler-errors - -option. Extend or disable resource limits using the -stap -DLIMIT=NNNN - -option. - -

-

remote execution server problems
-If you use the -stap --remote - -option to direct a systemtap script to be executed somewhere else, -ensure that an SSH connection may be made to the remote host, and -that it has the current systemtap runtime installed & available. -

-

installation/permission problems
-It is possible that your installation of systemtap was not correctly -installed. For example, the -/usr/bin/staprun - -program may lack the necessary setuid permissions, or your invoking -userid might not have sufficient privileges (root, or -stapusr - -and related group memberships). Environment -variables may interfere with locating -/usr/libexec/.../stapio. - -

-

errors from target program
-The program invoked by the -stap -c CMD - -option may exit with a non-zero code. -

-

uncaught exceptions in the target program
-When using ---runtime=dyninst - -you may encounter an issue where the target program aborts with a -message like "terminate called after throwing an instance -of 'foo_exception'". This is unfortunately a limitation of Dyninst, -which sometimes prevents exceptions from properly unwinding through -instrumented code. -

-

-

-  -

GATHERING MORE INFORMATION

- -Increasing the verbosity of pass-5 -with an option such as ---vp 00001 - -can help pinpoint the problem. -

-  -

SEE ALSO

- - -
-stap(1),
-http://sourceware.org/systemtap/wiki/TipExhaustedResourceErrors,
-error::fault(7stap),
-error::reporting(7stap)
-
-
-
- 

Index

-
-
NAME
-
DESCRIPTION
-
GATHERING MORE INFORMATION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/error::process-tracking.7stap.html b/man/error::process-tracking.7stap.html deleted file mode 100644 index 9ad6ef1e..00000000 --- a/man/error::process-tracking.7stap.html +++ /dev/null @@ -1,128 +0,0 @@ - -Manpage of WARNING::PROCESS-TRACKING - -

WARNING::PROCESS-TRACKING

-Section: Misc. Reference Manual Pages (7stap)
Index -Return to Main Contents
- -  -

NAME

- -warning::process-tracking - process-tracking facilities are not available -

- - - -

-  -

DESCRIPTION

- -These errors and warnings occur when the kernel systemtap is running on -lacks support for user-space process tracking facilities. -

-  -

COMPILE-TIME ERROR

- -The error - -

- -
- -

-
-ERROR: user-space process-tracking facilities not available
-
-
- -
- - -

- -occurs when the script contains a uprobes probe point that the current -kernel does not support. -

-  -

RUNTIME WARNINGS

- -

- -The warning, - -

- -
- -

-
-WARNING: process-tracking facilities are not available in this kernel
-
-
- -
- - -

- -and the related message, - -

- -
- -

-
-WARNING: cannot track target in process '...'
-
-
- -
- - -

- -both occur at runtime when running on a kernel (generally an older -version) that has neither utrace functionality nor an acceptable -substitute. -

- -The script should still load and run. However, probes that rely on -availability of process-tracking facilities will silently fail to -trigger. -

-  -

RESOLVING THE ISSUE

- -If process-tracking functionality is absolutely necessary, either a -kernel version newer than 3.5 is needed, or an older version must be -compiled with appropriate utrace patches. -

-  -

SEE ALSO

- - -
-stap(1),
-error::reporting(7stap)
-
-
-
- 

Index

-
-
NAME
-
DESCRIPTION
-
-
COMPILE-TIME ERROR
-
RUNTIME WARNINGS
-
-
RESOLVING THE ISSUE
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/error::reporting.7stap.html b/man/error::reporting.7stap.html deleted file mode 100644 index 4b5773d2..00000000 --- a/man/error::reporting.7stap.html +++ /dev/null @@ -1,77 +0,0 @@ - -Manpage of ERROR::REPORTING - -

ERROR::REPORTING

-Section: Misc. Reference Manual Pages (7stap)
Index -Return to Main Contents
- -  -

NAME

- -error::reporting - systemtap error reporting -

-

-  -

COMMERCIAL SUPPORT

- -If you have a commercial support agreement with your OS distributor -that covers this software, we recommend getting your money's worth -by using their problem reporting systems first. -

-  -

COMMUNITY SUPPORT

- -Systemtap community & volunteer developers are eager to hear problem -reports, so they can improve the software. Various ways to contact them -include: -

-

-
public mailing list
-systemtap@sourceware.org -

-

public IRC
-#systemtap on irc.freenode.net, use fpaste.org for snippets of text -

-

public bugzilla
-http://sourceware.org/bugzilla/ -

-

-  -

INFORMATION TO COLLECT

- -In general, please include information about your platform, -systemtap version, your scripts & custom tapsets, systemtap -invocation, actual behavior / errors seen, and expected behavior. -The -stap-report - -script collects useful system/kernel information that helps describe -the OS environment; please include its output. -

-  -

SEE ALSO

- - -
-stap(1),
-stap-report(1),
-http://sourceware.org/systemtap/wiki/
-
-
-
-
- 

Index

-
-
NAME
-
COMMERCIAL SUPPORT
-
COMMUNITY SUPPORT
-
INFORMATION TO COLLECT
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/error::sdt.7stap.html b/man/error::sdt.7stap.html deleted file mode 100644 index acf6c75b..00000000 --- a/man/error::sdt.7stap.html +++ /dev/null @@ -1,120 +0,0 @@ - -Manpage of ERROR::SDT - -

ERROR::SDT

-Section: Misc. Reference Manual Pages (7stap)
Index -Return to Main Contents
- -  -

NAME

- -error::sdt - <sys/sdt.h> marker failures -

- - - -

-

-  -

DESCRIPTION

- -

-Systemtap's -<sys/sdt.h> - -probes are modeled after the dtrace USDT API, but are implemented -differently. They leave a only a NOP instruction in the userspace -program's text segment, and add an ELF note to the binary with -metadata. This metadata describes the marker's name and parameters. -This encoding is designed to be parseable by multiple tools (not just -systemtap: GDB, the GNU Debugger, also contains support). These allow -the tools to find parameters and their types, wherever they happen to -reside, even without DWARF debuginfo. -

-

- -

-The reason finding parameters is tricky is because the STAP_PROBE / -DTRACE_PROBE markers store an assembly language expression for each -operand, as a result of use of gcc inline-assembly directives. The -compiler is given a broad gcc operand constraint string ("nor") for -the operands, which usually works well. Usually, it does not force -the compiler to load the parameters into or out of registers, which -would slow down an instrumented program. However, some -instrumentation sites with some parameters do not work well with the -default "nor" constraint. -

-

-
unresolveable at run-time
-GCC may emit strings that an assembler could resolve (from the -context of compiling the original program), but a run-time tool -cannot. For example, the operand string might refer to a label of a -local symbol that is not emitted into the ELF object file at all, -which leaves no trace for the run-time. Reference to such parameters -from within systemtap can result in "SDT asm not understood" errors. -

-

too complicated expression
-GCC might synthesize very complicated assembly addressing modes from -complex C data types / pointer expressions. systemtap or gdb may not -be able to parse some valid but complicated expressions. Reference to -such parameters from within systemtap can result in "SDT asm not -understood" errors. -

-

overly restrictive constraint
-GCC might not be able to even compile the original program with the -default "nor" constraint due to shortage of registers or other -reasons. A compile-time gcc error such as "asm operand has impossible -constraints" may result. -

-

-

- -

-There are two general workarounds to this family of problems. -

-

-
change the constraints
-While compiling the original instrumented program, set the -STAP_SDT_ARG_CONSTRAINT - -macro to different constraint strings. See the GCC manual about -various options. For example, on many machine architectures, "r" forces -operands into registers, and "g" leaves operands essentially unconstrained. -

-

revert to debuginfo
-As long as the instrumented program compiles, it may be fine simply to -keep using <sys/sdt.h> but eschew extraction of a few individual -parameters. In the worst case, disable <sys/sdt.h> macros entirely to -eschew the compiled-in instrumentation. If DWARF debuginfo was -generated and preserved, a systemtap script could refer to the -underlying source context variables instead of the positional -STAP_PROBE parameters. -

-

-  -

SEE ALSO

- - -
-stap(1),
-stapprobes(3stap),
-error::dwarf(7stap),
-http://gcc.gnu.org/onlinedocs/gcc/Constraints.html,
-http://sourceware.org/systemtap/wiki/UserSpaceProbeImplementation,
-error::reporting(7stap)
-
-
-
- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/function::HZ.3stap.html b/man/function::HZ.3stap.html deleted file mode 100644 index 7bd995bb..00000000 --- a/man/function::HZ.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::HZ - -

FUNCTION::HZ

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::HZ - Kernel HZ -  -

SYNOPSIS

- -

-

-    HZ:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the value of the kernel HZ macro, which corresponds to the rate of increase of the jiffies value. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::MAJOR.3stap.html b/man/function::MAJOR.3stap.html deleted file mode 100644 index 93609571..00000000 --- a/man/function::MAJOR.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::MAJOR - -

FUNCTION::MAJOR

-Section: Device Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::MAJOR - Extract major device number from a kernel device number (kdev_t) -  -

SYNOPSIS

- -

-

-    MAJOR:long(dev:long)
-
- -  -

ARGUMENTS

- -

- -dev -

-Kernel device number to query. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::MINOR.3stap.html b/man/function::MINOR.3stap.html deleted file mode 100644 index d44a4ab3..00000000 --- a/man/function::MINOR.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::MINOR - -

FUNCTION::MINOR

-Section: Device Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::MINOR - Extract minor device number from a kernel device number (kdev_t) -  -

SYNOPSIS

- -

-

-    MINOR:long(dev:long)
-
- -  -

ARGUMENTS

- -

- -dev -

-Kernel device number to query. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::MKDEV.3stap.html b/man/function::MKDEV.3stap.html deleted file mode 100644 index bd240eaa..00000000 --- a/man/function::MKDEV.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::MKDEV - -

FUNCTION::MKDEV

-Section: Device Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::MKDEV - Creates a value that can be compared to a kernel device number (kdev_t) -  -

SYNOPSIS

- -

-

-    MKDEV:long(major:long,minor:long)
-
- -  -

ARGUMENTS

- -

- -major -

-Intended major device number. -
- -

- -minor -

-Intended minor device number. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::addr.3stap.html b/man/function::addr.3stap.html deleted file mode 100644 index 6fe41e0b..00000000 --- a/man/function::addr.3stap.html +++ /dev/null @@ -1,71 +0,0 @@ - -Manpage of FUNCTION::ADDR - -

FUNCTION::ADDR

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::addr - Address of the current probe point. -  -

SYNOPSIS

- -

-

-    addr:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns the instruction pointer from the current probe's register state. Not all probe types have registers though, in which case zero is returned. The returned address is suitable for use with functions like -symname -and -symdata. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::addr_to_node.3stap.html b/man/function::addr_to_node.3stap.html deleted file mode 100644 index 4193af5a..00000000 --- a/man/function::addr_to_node.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::ADDR_TO_NO - -

FUNCTION::ADDR_TO_NO

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::addr_to_node - Returns which node a given address belongs to within a NUMA system -  -

SYNOPSIS

- -

-

-    addr_to_node:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the address of the faulting memory access -
- -  -

DESCRIPTION

- -

- -This function accepts an address, and returns the node that the given address belongs to in a NUMA system. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ansi_clear_screen.3stap.html b/man/function::ansi_clear_screen.3stap.html deleted file mode 100644 index 9c383997..00000000 --- a/man/function::ansi_clear_screen.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::ANSI_CLEAR - -

FUNCTION::ANSI_CLEAR

-Section: Utility functions for using an (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ansi_clear_screen - Move cursor to top left and clear screen. -  -

SYNOPSIS

- -

-

-    ansi_clear_screen()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Sends ansi code for moving cursor to top left and then the ansi code for clearing the screen from the cursor position to the end. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ansi_cursor_hide.3stap.html b/man/function::ansi_cursor_hide.3stap.html deleted file mode 100644 index 4cc04231..00000000 --- a/man/function::ansi_cursor_hide.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::ANSI_CURSO - -

FUNCTION::ANSI_CURSO

-Section: Utility functions for using an (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ansi_cursor_hide - Hides the cursor. -  -

SYNOPSIS

- -

-

-    ansi_cursor_hide()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Sends ansi code for hiding the cursor. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ansi_cursor_move.3stap.html b/man/function::ansi_cursor_move.3stap.html deleted file mode 100644 index f78c8326..00000000 --- a/man/function::ansi_cursor_move.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::ANSI_CURSO - -

FUNCTION::ANSI_CURSO

-Section: Utility functions for using an (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ansi_cursor_move - Move cursor to new coordinates. -  -

SYNOPSIS

- -

-

-    ansi_cursor_move(x:long,y:long)
-
- -  -

ARGUMENTS

- -

- -x -

-Row to move the cursor to. -
- -

- -y -

-Colomn to move the cursor to. -
- -  -

DESCRIPTION

- -

- -Sends ansi code for positioning the cursor at row x and column y. Coordinates start at one, (1,1) is the top-left corner. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ansi_cursor_restore.3stap.html b/man/function::ansi_cursor_restore.3stap.html deleted file mode 100644 index 336c9193..00000000 --- a/man/function::ansi_cursor_restore.3stap.html +++ /dev/null @@ -1,69 +0,0 @@ - -Manpage of FUNCTION::ANSI_CURSO - -

FUNCTION::ANSI_CURSO

-Section: Utility functions for using an (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ansi_cursor_restore - Restores a previously saved cursor position. -  -

SYNOPSIS

- -

-

-    ansi_cursor_restore()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Sends ansi code for restoring the current cursor position previously saved with -ansi_cursor_save. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ansi_cursor_save.3stap.html b/man/function::ansi_cursor_save.3stap.html deleted file mode 100644 index 06241c83..00000000 --- a/man/function::ansi_cursor_save.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::ANSI_CURSO - -

FUNCTION::ANSI_CURSO

-Section: Utility functions for using an (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ansi_cursor_save - Saves the cursor position. -  -

SYNOPSIS

- -

-

-    ansi_cursor_save()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Sends ansi code for saving the current cursor position. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ansi_cursor_show.3stap.html b/man/function::ansi_cursor_show.3stap.html deleted file mode 100644 index 66577be3..00000000 --- a/man/function::ansi_cursor_show.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::ANSI_CURSO - -

FUNCTION::ANSI_CURSO

-Section: Utility functions for using an (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ansi_cursor_show - Shows the cursor. -  -

SYNOPSIS

- -

-

-    ansi_cursor_show()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Sends ansi code for showing the cursor. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ansi_new_line.3stap.html b/man/function::ansi_new_line.3stap.html deleted file mode 100644 index 3f1b3490..00000000 --- a/man/function::ansi_new_line.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::ANSI_NEW_L - -

FUNCTION::ANSI_NEW_L

-Section: Utility functions for using an (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ansi_new_line - Move cursor to new line. -  -

SYNOPSIS

- -

-

-    ansi_new_line()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Sends ansi code new line. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ansi_reset_color.3stap.html b/man/function::ansi_reset_color.3stap.html deleted file mode 100644 index 7a6f4b8d..00000000 --- a/man/function::ansi_reset_color.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::ANSI_RESET - -

FUNCTION::ANSI_RESET

-Section: Utility functions for using an (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ansi_reset_color - Resets Select Graphic Rendition mode. -  -

SYNOPSIS

- -

-

-    ansi_reset_color()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Sends ansi code to reset foreground, background and color attribute to default values. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ansi_set_color.3stap.html b/man/function::ansi_set_color.3stap.html deleted file mode 100644 index 7f28934a..00000000 --- a/man/function::ansi_set_color.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::ANSI_SET_C - -

FUNCTION::ANSI_SET_C

-Section: Utility functions for using an (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ansi_set_color - Set the ansi Select Graphic Rendition mode. -  -

SYNOPSIS

- -

-

-    ansi_set_color(fg:long)
-
- -  -

ARGUMENTS

- -

- -fg -

-Foreground color to set. -
- -  -

DESCRIPTION

- -

- -Sends ansi code for Select Graphic Rendition mode for the given forground color. Black (30), Blue (34), Green (32), Cyan (36), Red (31), Purple (35), Brown (33), Light Gray (37). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ansi_set_color2.3stap.html b/man/function::ansi_set_color2.3stap.html deleted file mode 100644 index 31a3765d..00000000 --- a/man/function::ansi_set_color2.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::ANSI_SET_C - -

FUNCTION::ANSI_SET_C

-Section: Utility functions for using an (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ansi_set_color2 - Set the ansi Select Graphic Rendition mode. -  -

SYNOPSIS

- -

-

-    ansi_set_color2(fg:long,bg:long)
-
- -  -

ARGUMENTS

- -

- -fg -

-Foreground color to set. -
- -

- -bg -

-Background color to set. -
- -  -

DESCRIPTION

- -

- -Sends ansi code for Select Graphic Rendition mode for the given forground color, Black (30), Blue (34), Green (32), Cyan (36), Red (31), Purple (35), Brown (33), Light Gray (37) and the given background color, Black (40), Red (41), Green (42), Yellow (43), Blue (44), Magenta (45), Cyan (46), White (47). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ansi_set_color3.3stap.html b/man/function::ansi_set_color3.3stap.html deleted file mode 100644 index 7a1d89ab..00000000 --- a/man/function::ansi_set_color3.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of FUNCTION::ANSI_SET_C - -

FUNCTION::ANSI_SET_C

-Section: Utility functions for using an (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ansi_set_color3 - Set the ansi Select Graphic Rendition mode. -  -

SYNOPSIS

- -

-

-    ansi_set_color3(fg:long,bg:long,attr:long)
-
- -  -

ARGUMENTS

- -

- -fg -

-Foreground color to set. -
- -

- -bg -

-Background color to set. -
- -

- -attr -

-Color attribute to set. -
- -  -

DESCRIPTION

- -

- -Sends ansi code for Select Graphic Rendition mode for the given forground color, Black (30), Blue (34), Green (32), Cyan (36), Red (31), Purple (35), Brown (33), Light Gray (37), the given background color, Black (40), Red (41), Green (42), Yellow (43), Blue (44), Magenta (45), Cyan (46), White (47) and the color attribute All attributes off (0), Intensity Bold (1), Underline Single (4), Blink Slow (5), Blink Rapid (6), Image Negative (7). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::asmlinkage.3stap.html b/man/function::asmlinkage.3stap.html deleted file mode 100644 index c0769eea..00000000 --- a/man/function::asmlinkage.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::ASMLINKAGE - -

FUNCTION::ASMLINKAGE

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::asmlinkage - Mark function as declared asmlinkage -  -

SYNOPSIS

- -

-

-    asmlinkage()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Call this function before accessing arguments using the *_arg functions if the probed kernel function was declared asmlinkage in the source. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::atomic_long_read.3stap.html b/man/function::atomic_long_read.3stap.html deleted file mode 100644 index 1583603b..00000000 --- a/man/function::atomic_long_read.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::ATOMIC_LON - -

FUNCTION::ATOMIC_LON

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::atomic_long_read - Retrieves an atomic long variable from kernel memory -  -

SYNOPSIS

- -

-

-    atomic_long_read:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-pointer to atomic long variable -
- -  -

DESCRIPTION

- -

- -Safely perform the read of an atomic long variable. This will be a NOP on kernels that do not have ATOMIC_LONG_INIT set on the kernel config. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::atomic_read.3stap.html b/man/function::atomic_read.3stap.html deleted file mode 100644 index 60872ef4..00000000 --- a/man/function::atomic_read.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::ATOMIC_REA - -

FUNCTION::ATOMIC_REA

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::atomic_read - Retrieves an atomic variable from kernel memory -  -

SYNOPSIS

- -

-

-    atomic_read:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-pointer to atomic variable -
- -  -

DESCRIPTION

- -

- -Safely perform the read of an atomic variable. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::backtrace.3stap.html b/man/function::backtrace.3stap.html deleted file mode 100644 index 963e7f0a..00000000 --- a/man/function::backtrace.3stap.html +++ /dev/null @@ -1,70 +0,0 @@ - -Manpage of FUNCTION::BACKTRACE - -

FUNCTION::BACKTRACE

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::backtrace - Hex backtrace of current kernel stack -  -

SYNOPSIS

- -

-

-    backtrace:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns a string of hex addresses that are a backtrace of the kernel stack. Output may be truncated as per maximum string length (MAXSTRINGLEN). See -ubacktrace -for user-space backtrace. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::bytes_to_string.3stap.html b/man/function::bytes_to_string.3stap.html deleted file mode 100644 index 79531980..00000000 --- a/man/function::bytes_to_string.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::BYTES_TO_S - -

FUNCTION::BYTES_TO_S

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::bytes_to_string - Human readable string for given bytes -  -

SYNOPSIS

- -

-

-    bytes_to_string:string(bytes:long)
-
- -  -

ARGUMENTS

- -

- -bytes -

-Number of bytes to translate. -
- -  -

DESCRIPTION

- -

- -Returns a string representing the number of bytes (up to 1024 bytes), the number of kilobytes (when less than 1024K) postfixed by 'K', the number of megabytes (when less than 1024M) postfixed by 'M' or the number of gigabytes postfixed by 'G'. If representing K, M or G, and the number is amount is less than 100, it includes a '.' plus the remainer. The returned string will be 5 characters wide (padding with whitespace at the front) unless negative or representing more than 9999G bytes. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::caller.3stap.html b/man/function::caller.3stap.html deleted file mode 100644 index 78e05430..00000000 --- a/man/function::caller.3stap.html +++ /dev/null @@ -1,69 +0,0 @@ - -Manpage of FUNCTION::CALLER - -

FUNCTION::CALLER

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::caller - Return name and address of calling function -  -

SYNOPSIS

- -

-

-    caller:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the address and name of the calling function. This is equivalent to calling: sprintf("s 0xx", symname(caller_addr), -caller_addr) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::caller_addr.3stap.html b/man/function::caller_addr.3stap.html deleted file mode 100644 index a87b5582..00000000 --- a/man/function::caller_addr.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::CALLER_ADD - -

FUNCTION::CALLER_ADD

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::caller_addr - Return caller address -  -

SYNOPSIS

- -

-

-    caller_addr:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the address of the calling function. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::callers.3stap.html b/man/function::callers.3stap.html deleted file mode 100644 index 7bfb963d..00000000 --- a/man/function::callers.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::CALLERS - -

FUNCTION::CALLERS

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::callers - Return first n elements of kernel stack backtrace -  -

SYNOPSIS

- -

-

-    callers:string(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-number of levels to descend in the stack (not counting the top level). If n is -1, print the entire stack. -
- -  -

DESCRIPTION

- -

- -This function returns a string of the first n hex addresses from the backtrace of the kernel stack. Output may be truncated as per maximum string length (MAXSTRINGLEN). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::cmdline_arg.3stap.html b/man/function::cmdline_arg.3stap.html deleted file mode 100644 index 7470f4a8..00000000 --- a/man/function::cmdline_arg.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::CMDLINE_AR - -

FUNCTION::CMDLINE_AR

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::cmdline_arg - Fetch a command line argument -  -

SYNOPSIS

- -

-

-    cmdline_arg:string(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-Argument to get (zero is the program itself) -
- -  -

DESCRIPTION

- -

- -Returns argument the requested argument from the current process or the empty string when there are not that many arguments or there is a problem retrieving the argument. Argument zero is traditionally the command itself. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::cmdline_args.3stap.html b/man/function::cmdline_args.3stap.html deleted file mode 100644 index 3914d243..00000000 --- a/man/function::cmdline_args.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of FUNCTION::CMDLINE_AR - -

FUNCTION::CMDLINE_AR

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::cmdline_args - Fetch command line arguments from current process -  -

SYNOPSIS

- -

-

-    cmdline_args:string(n:long,m:long,delim:string)
-
- -  -

ARGUMENTS

- -

- -n -

-First argument to get (zero is normally the program itself) -
- -

- -m -

-Last argument to get (or minus one for all arguments after n) -
- -

- -delim -

-String to use to separate arguments when more than one. -
- -  -

DESCRIPTION

- -

- -Returns arguments from the current process starting with argument number n, up to argument m. If there are less than n arguments, or the arguments cannot be retrieved from the current process, the empty string is returned. If m is smaller than n then all arguments starting from argument n are returned. Argument zero is traditionally the command itself. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::cmdline_str.3stap.html b/man/function::cmdline_str.3stap.html deleted file mode 100644 index a2b81207..00000000 --- a/man/function::cmdline_str.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::CMDLINE_ST - -

FUNCTION::CMDLINE_ST

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::cmdline_str - Fetch all command line arguments from current process -  -

SYNOPSIS

- -

-

-    cmdline_str:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns all arguments from the current process delimited by spaces. Returns the empty string when the arguments cannot be retrieved. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::commit.3stap.html b/man/function::commit.3stap.html deleted file mode 100644 index d1653058..00000000 --- a/man/function::commit.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of FUNCTION::COMMIT - -

FUNCTION::COMMIT

-Section: Speculation (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::commit - Write out all output related to a speculation buffer -  -

SYNOPSIS

- -

-

-    commit(id:long)
-
- -  -

ARGUMENTS

- -

- -id -

-of the buffer to store the information in -
- -  -

DESCRIPTION

- -

- -Output all the output for -id -in the order that it was entered into the speculative buffer by -speculative. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::cpu.3stap.html b/man/function::cpu.3stap.html deleted file mode 100644 index 9047ec49..00000000 --- a/man/function::cpu.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::CPU - -

FUNCTION::CPU

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::cpu - Returns the current cpu number -  -

SYNOPSIS

- -

-

-    cpu:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the current cpu number. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::cpu_clock_ms.3stap.html b/man/function::cpu_clock_ms.3stap.html deleted file mode 100644 index 18be337d..00000000 --- a/man/function::cpu_clock_ms.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::CPU_CLOCK_ - -

FUNCTION::CPU_CLOCK_

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::cpu_clock_ms - Number of milliseconds on the given cpu's clock -  -

SYNOPSIS

- -

-

-    cpu_clock_ms:long(cpu:long)
-
- -  -

ARGUMENTS

- -

- -cpu -

-Which processor's clock to read -
- -  -

DESCRIPTION

- -

- -This function returns the number of milliseconds on the given cpu's clock. This is always monotonic comparing on the same cpu, but may have some drift between cpus (within about a jiffy). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::cpu_clock_ns.3stap.html b/man/function::cpu_clock_ns.3stap.html deleted file mode 100644 index 03462fb7..00000000 --- a/man/function::cpu_clock_ns.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::CPU_CLOCK_ - -

FUNCTION::CPU_CLOCK_

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::cpu_clock_ns - Number of nanoseconds on the given cpu's clock -  -

SYNOPSIS

- -

-

-    cpu_clock_ns:long(cpu:long)
-
- -  -

ARGUMENTS

- -

- -cpu -

-Which processor's clock to read -
- -  -

DESCRIPTION

- -

- -This function returns the number of nanoseconds on the given cpu's clock. This is always monotonic comparing on the same cpu, but may have some drift between cpus (within about a jiffy). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::cpu_clock_s.3stap.html b/man/function::cpu_clock_s.3stap.html deleted file mode 100644 index 8d9e40d3..00000000 --- a/man/function::cpu_clock_s.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::CPU_CLOCK_ - -

FUNCTION::CPU_CLOCK_

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::cpu_clock_s - Number of seconds on the given cpu's clock -  -

SYNOPSIS

- -

-

-    cpu_clock_s:long(cpu:long)
-
- -  -

ARGUMENTS

- -

- -cpu -

-Which processor's clock to read -
- -  -

DESCRIPTION

- -

- -This function returns the number of seconds on the given cpu's clock. This is always monotonic comparing on the same cpu, but may have some drift between cpus (within about a jiffy). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::cpu_clock_us.3stap.html b/man/function::cpu_clock_us.3stap.html deleted file mode 100644 index a2459f13..00000000 --- a/man/function::cpu_clock_us.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::CPU_CLOCK_ - -

FUNCTION::CPU_CLOCK_

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::cpu_clock_us - Number of microseconds on the given cpu's clock -  -

SYNOPSIS

- -

-

-    cpu_clock_us:long(cpu:long)
-
- -  -

ARGUMENTS

- -

- -cpu -

-Which processor's clock to read -
- -  -

DESCRIPTION

- -

- -This function returns the number of microseconds on the given cpu's clock. This is always monotonic comparing on the same cpu, but may have some drift between cpus (within about a jiffy). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::cpuid.3stap.html b/man/function::cpuid.3stap.html deleted file mode 100644 index 8cc6904f..00000000 --- a/man/function::cpuid.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::CPUID - -

FUNCTION::CPUID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::cpuid - Returns the current cpu number -  -

SYNOPSIS

- -

-

-    cpuid:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the current cpu number. Deprecated in SystemTap 1.4 and removed in SystemTap 1.5. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::cputime_to_msecs.3stap.html b/man/function::cputime_to_msecs.3stap.html deleted file mode 100644 index 1c29b595..00000000 --- a/man/function::cputime_to_msecs.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::CPUTIME_TO - -

FUNCTION::CPUTIME_TO

-Section: Task Time Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::cputime_to_msecs - Translates the given cputime into milliseconds -  -

SYNOPSIS

- -

-

-    cputime_to_msecs:long(cputime:long)
-
- -  -

ARGUMENTS

- -

- -cputime -

-Time to convert to milliseconds. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::cputime_to_string.3stap.html b/man/function::cputime_to_string.3stap.html deleted file mode 100644 index 4f820b47..00000000 --- a/man/function::cputime_to_string.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::CPUTIME_TO - -

FUNCTION::CPUTIME_TO

-Section: Task Time Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::cputime_to_string - Human readable string for given cputime -  -

SYNOPSIS

- -

-

-    cputime_to_string:string(cputime:long)
-
- -  -

ARGUMENTS

- -

- -cputime -

-Time to translate. -
- -  -

DESCRIPTION

- -

- -Equivalent to calling: msec_to_string (cputime_to_msecs (cputime). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::cputime_to_usecs.3stap.html b/man/function::cputime_to_usecs.3stap.html deleted file mode 100644 index 11307fa5..00000000 --- a/man/function::cputime_to_usecs.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::CPUTIME_TO - -

FUNCTION::CPUTIME_TO

-Section: Task Time Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::cputime_to_usecs - Translates the given cputime into microseconds -  -

SYNOPSIS

- -

-

-    cputime_to_usecs:long(cputime:long)
-
- -  -

ARGUMENTS

- -

- -cputime -

-Time to convert to microseconds. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ctime.3stap.html b/man/function::ctime.3stap.html deleted file mode 100644 index 20862381..00000000 --- a/man/function::ctime.3stap.html +++ /dev/null @@ -1,99 +0,0 @@ - -Manpage of FUNCTION::CTIME - -

FUNCTION::CTIME

-Section: Time utility functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ctime - Convert seconds since epoch into human readable date/time string -  -

SYNOPSIS

- -

-

-    ctime:string(epochsecs:long)
-
- -  -

ARGUMENTS

- -

- -epochsecs -

-Number of seconds since epoch (as returned by -gettimeofday_s) -
- -  -

DESCRIPTION

- -

- -Takes an argument of seconds since the epoch as returned by -gettimeofday_s. Returns a string of the form -

- -"Wed Jun 30 21:49:08 1993" -

- -The string will always be exactly 24 characters. If the time would be unreasonable far in the past (before what can be represented with a 32 bit offset in seconds from the epoch) an error will occur (which can be avoided with try/catch). If the time would be unreasonable far in the future, an error will also occur. -

- -Note that the epoch (zero) corresponds to -

- -"Thu Jan 1 00:00:00 1970" -

- -The earliest full date given by ctime, corresponding to epochsecs -2147483648 is -"Fri Dec 13 20:45:52 1901". The latest full date given by ctime, corresponding to epochsecs 2147483647 is -"Tue Jan 19 03:14:07 2038". -

- -The abbreviations for the days of the week are 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', and 'Sat'. The abbreviations for the months are 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', and 'Dec'. -

- -Note that the real C library -ctime -function puts a newline ('\n') character at the end of the string that this function does not. Also note that since the kernel has no concept of timezones, the returned time is always in GMT. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::d_name.3stap.html b/man/function::d_name.3stap.html deleted file mode 100644 index fc6df378..00000000 --- a/man/function::d_name.3stap.html +++ /dev/null @@ -1,74 +0,0 @@ - -Manpage of FUNCTION::D_NAME - -

FUNCTION::D_NAME

-Section: Directory-entry (dentry) Tapse (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::d_name - get the dirent name -  -

SYNOPSIS

- -

-

-    d_name:string(dentry:long)
-
- -  -

ARGUMENTS

- -

- -dentry -

-Pointer to dentry. -
- -  -

DESCRIPTION

- -

- -

- -Returns the dirent name (path basename). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::d_path.3stap.html b/man/function::d_path.3stap.html deleted file mode 100644 index 8508c625..00000000 --- a/man/function::d_path.3stap.html +++ /dev/null @@ -1,74 +0,0 @@ - -Manpage of FUNCTION::D_PATH - -

FUNCTION::D_PATH

-Section: Directory-entry (dentry) Tapse (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::d_path - get the full nameidata path -  -

SYNOPSIS

- -

-

-    d_path:string(nd:long)
-
- -  -

ARGUMENTS

- -

- -nd -

-Pointer to nameidata. -
- -  -

DESCRIPTION

- -

- -

- -Returns the full dirent name (full path to the root), like the kernel d_path function. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::delete_stopwatch.3stap.html b/man/function::delete_stopwatch.3stap.html deleted file mode 100644 index 4ff26093..00000000 --- a/man/function::delete_stopwatch.3stap.html +++ /dev/null @@ -1,73 +0,0 @@ - -Manpage of FUNCTION::DELETE_STO - -

FUNCTION::DELETE_STO

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::delete_stopwatch - Remove an existing stopwatch -  -

SYNOPSIS

- -

-

-    delete_stopwatch(name:string)
-
- -  -

ARGUMENTS

- -

- -name -

-the stopwatch name -
- -  -

DESCRIPTION

- -

- -Remove stopwatch -name. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::discard.3stap.html b/man/function::discard.3stap.html deleted file mode 100644 index 7a271154..00000000 --- a/man/function::discard.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::DISCARD - -

FUNCTION::DISCARD

-Section: Speculation (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::discard - Discard all output related to a speculation buffer -  -

SYNOPSIS

- -

-

-    discard(id:long)
-
- -  -

ARGUMENTS

- -

- -id -

-of the buffer to store the information in -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::egid.3stap.html b/man/function::egid.3stap.html deleted file mode 100644 index 3826ef0e..00000000 --- a/man/function::egid.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::EGID - -

FUNCTION::EGID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::egid - Returns the effective gid of a target process -  -

SYNOPSIS

- -

-

-    egid:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the effective gid of a target process -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::env_var.3stap.html b/man/function::env_var.3stap.html deleted file mode 100644 index 44401998..00000000 --- a/man/function::env_var.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::ENV_VAR - -

FUNCTION::ENV_VAR

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::env_var - Fetch environment variable from current process -  -

SYNOPSIS

- -

-

-    env_var:string(name:string)
-
- -  -

ARGUMENTS

- -

- -name -

-Name of the environment variable to fetch -
- -  -

DESCRIPTION

- -

- -Returns the contents of the specified environment value for the current process. If the variable isn't set an empty string is returned. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::errno_str.3stap.html b/man/function::errno_str.3stap.html deleted file mode 100644 index 360920ba..00000000 --- a/man/function::errno_str.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::ERRNO_STR - -

FUNCTION::ERRNO_STR

-Section: Errno Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::errno_str - Symbolic string associated with error code -  -

SYNOPSIS

- -

-

-    errno_str:string(err:long)
-
- -  -

ARGUMENTS

- -

- -err -

-The error number received -
- -  -

DESCRIPTION

- -

- -This function returns the symbolic string associated with the giver error code, such as ENOENT for the number 2, or E#3333 for an out-of-range value such as 3333. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::error.3stap.html b/man/function::error.3stap.html deleted file mode 100644 index 8246753a..00000000 --- a/man/function::error.3stap.html +++ /dev/null @@ -1,74 +0,0 @@ - -Manpage of FUNCTION::ERROR - -

FUNCTION::ERROR

-Section: Logging Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::error - Send an error message -  -

SYNOPSIS

- -

-

-    error(msg:string)
-
- -  -

ARGUMENTS

- -

- -msg -

-The formatted message string -
- -  -

DESCRIPTION

- -

- -An implicit end-of-line is added. staprun prepends the string -"ERROR:". Sending an error message aborts the currently running probe. Depending on the MAXERRORS parameter, it may trigger an -exit. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::euid.3stap.html b/man/function::euid.3stap.html deleted file mode 100644 index 29a64993..00000000 --- a/man/function::euid.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::EUID - -

FUNCTION::EUID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::euid - Return the effective uid of a target process -  -

SYNOPSIS

- -

-

-    euid:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns the effective user ID of the target process. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::execname.3stap.html b/man/function::execname.3stap.html deleted file mode 100644 index cd5c84bc..00000000 --- a/man/function::execname.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::EXECNAME - -

FUNCTION::EXECNAME

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::execname - Returns the execname of a target process (or group of processes) -  -

SYNOPSIS

- -

-

-    execname:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns the execname of a target process (or group of processes). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::exit.3stap.html b/man/function::exit.3stap.html deleted file mode 100644 index 92a1d22f..00000000 --- a/man/function::exit.3stap.html +++ /dev/null @@ -1,70 +0,0 @@ - -Manpage of FUNCTION::EXIT - -

FUNCTION::EXIT

-Section: Logging Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::exit - Start shutting down probing script. -  -

SYNOPSIS

- -

-

-    exit()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This only enqueues a request to start shutting down the script. New probes will not fire (except -"end" -probes), but all currently running ones may complete their work. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::fastcall.3stap.html b/man/function::fastcall.3stap.html deleted file mode 100644 index b9d5968b..00000000 --- a/man/function::fastcall.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::FASTCALL - -

FUNCTION::FASTCALL

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::fastcall - Mark function as declared fastcall -  -

SYNOPSIS

- -

-

-    fastcall()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Call this function before accessing arguments using the *_arg functions if the probed kernel function was declared fastcall in the source. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::format_ipaddr.3stap.html b/man/function::format_ipaddr.3stap.html deleted file mode 100644 index 629f3025..00000000 --- a/man/function::format_ipaddr.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::FORMAT_IPA - -

FUNCTION::FORMAT_IPA

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::format_ipaddr - Returns a string representation for an IP address -  -

SYNOPSIS

- -

-

-    format_ipaddr:string(addr:long,family:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the IP address -
- -

- -family -

-the IP address family (either AF_INET or AF_INET6) -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ftrace.3stap.html b/man/function::ftrace.3stap.html deleted file mode 100644 index 8fb8e890..00000000 --- a/man/function::ftrace.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::FTRACE - -

FUNCTION::FTRACE

-Section: Logging Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ftrace - Send a message to the ftrace ring-buffer -  -

SYNOPSIS

- -

-

-    ftrace(msg:string)
-
- -  -

ARGUMENTS

- -

- -msg -

-The formatted message string -
- -  -

DESCRIPTION

- -

- -If the ftrace ring-buffer is configured & available, see /debugfs/tracing/trace for the message. Otherwise, the message may be quietly dropped. An implicit end-of-line is added. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::get_cycles.3stap.html b/man/function::get_cycles.3stap.html deleted file mode 100644 index 791a6917..00000000 --- a/man/function::get_cycles.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::GET_CYCLES - -

FUNCTION::GET_CYCLES

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::get_cycles - Processor cycle count -  -

SYNOPSIS

- -

-

-    get_cycles:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the processor cycle counter value if available, else it returns zero. The cycle counter is free running and unsynchronized on each processor. Thus, the order of events cannot determined by comparing the results of the get_cycles function on different processors. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::get_loadavg_index.3stap.html b/man/function::get_loadavg_index.3stap.html deleted file mode 100644 index b4bb6aae..00000000 --- a/man/function::get_loadavg_index.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::GET_LOADAV - -

FUNCTION::GET_LOADAV

-Section: Kernel Process Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::get_loadavg_index - Get the load average for a specified interval -  -

SYNOPSIS

- -

-

-    get_loadavg_index:long(indx:long)
-
- -  -

ARGUMENTS

- -

- -indx -

-The load average interval to capture. -
- -  -

DESCRIPTION

- -

- -This function returns the load average at a specified interval. The three load average values 1, 5 and 15 minute average corresponds to indexes 0, 1 and 2 of the avenrun array - see linux/sched.h. Please note that the truncated-integer portion of the load average is returned. If the specified index is out-of-bounds, then an error message and exception is thrown. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::get_sa_flags.3stap.html b/man/function::get_sa_flags.3stap.html deleted file mode 100644 index 11901cd7..00000000 --- a/man/function::get_sa_flags.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::GET_SA_FLA - -

FUNCTION::GET_SA_FLA

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::get_sa_flags - Returns the numeric value of sa_flags -  -

SYNOPSIS

- -

-

-    get_sa_flags:long(act:long)
-
- -  -

ARGUMENTS

- -

- -act -

-address of the sigaction to query. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::get_sa_handler.3stap.html b/man/function::get_sa_handler.3stap.html deleted file mode 100644 index 05736cf4..00000000 --- a/man/function::get_sa_handler.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::GET_SA_HAN - -

FUNCTION::GET_SA_HAN

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::get_sa_handler - Returns the numeric value of sa_handler -  -

SYNOPSIS

- -

-

-    get_sa_handler:long(act:long)
-
- -  -

ARGUMENTS

- -

- -act -

-address of the sigaction to query. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::gettimeofday_ms.3stap.html b/man/function::gettimeofday_ms.3stap.html deleted file mode 100644 index 7ca98de8..00000000 --- a/man/function::gettimeofday_ms.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::GETTIMEOFD - -

FUNCTION::GETTIMEOFD

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::gettimeofday_ms - Number of milliseconds since UNIX epoch -  -

SYNOPSIS

- -

-

-    gettimeofday_ms:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the number of milliseconds since the UNIX epoch. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::gettimeofday_ns.3stap.html b/man/function::gettimeofday_ns.3stap.html deleted file mode 100644 index d52267f7..00000000 --- a/man/function::gettimeofday_ns.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::GETTIMEOFD - -

FUNCTION::GETTIMEOFD

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::gettimeofday_ns - Number of nanoseconds since UNIX epoch -  -

SYNOPSIS

- -

-

-    gettimeofday_ns:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the number of nanoseconds since the UNIX epoch. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::gettimeofday_s.3stap.html b/man/function::gettimeofday_s.3stap.html deleted file mode 100644 index 370684c2..00000000 --- a/man/function::gettimeofday_s.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::GETTIMEOFD - -

FUNCTION::GETTIMEOFD

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::gettimeofday_s - Number of seconds since UNIX epoch -  -

SYNOPSIS

- -

-

-    gettimeofday_s:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the number of seconds since the UNIX epoch. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::gettimeofday_us.3stap.html b/man/function::gettimeofday_us.3stap.html deleted file mode 100644 index 1a4c18f4..00000000 --- a/man/function::gettimeofday_us.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::GETTIMEOFD - -

FUNCTION::GETTIMEOFD

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::gettimeofday_us - Number of microseconds since UNIX epoch -  -

SYNOPSIS

- -

-

-    gettimeofday_us:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the number of microseconds since the UNIX epoch. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::gid.3stap.html b/man/function::gid.3stap.html deleted file mode 100644 index d6c4ebe0..00000000 --- a/man/function::gid.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::GID - -

FUNCTION::GID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::gid - Returns the group ID of a target process -  -

SYNOPSIS

- -

-

-    gid:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the group ID of a target process. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::htonl.3stap.html b/man/function::htonl.3stap.html deleted file mode 100644 index 91c61fcf..00000000 --- a/man/function::htonl.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::HTONL - -

FUNCTION::HTONL

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::htonl - Convert 32-bit long from host to network order -  -

SYNOPSIS

- -

-

-    htonl:long(x:long)
-
- -  -

ARGUMENTS

- -

- -x -

-Value to convert -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::htonll.3stap.html b/man/function::htonll.3stap.html deleted file mode 100644 index 8dd2b418..00000000 --- a/man/function::htonll.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::HTONLL - -

FUNCTION::HTONLL

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::htonll - Convert 64-bit long long from host to network order -  -

SYNOPSIS

- -

-

-    htonll:long(x:long)
-
- -  -

ARGUMENTS

- -

- -x -

-Value to convert -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::htons.3stap.html b/man/function::htons.3stap.html deleted file mode 100644 index 166b7dcf..00000000 --- a/man/function::htons.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::HTONS - -

FUNCTION::HTONS

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::htons - Convert 16-bit short from host to network order -  -

SYNOPSIS

- -

-

-    htons:long(x:long)
-
- -  -

ARGUMENTS

- -

- -x -

-Value to convert -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::indent.3stap.html b/man/function::indent.3stap.html deleted file mode 100644 index 934f3748..00000000 --- a/man/function::indent.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::INDENT - -

FUNCTION::INDENT

-Section: Utility functions for using an (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::indent - returns an amount of space to indent -  -

SYNOPSIS

- -

-

-    indent:string(delta:long)
-
- -  -

ARGUMENTS

- -

- -delta -

-the amount of space added/removed for each call -
- -  -

DESCRIPTION

- -

- -This function returns a string with appropriate indentation. Call it with a small positive or matching negative delta. Unlike the thread_indent function, the indent does not track individual indent values on a per thread basis. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::indent_depth.3stap.html b/man/function::indent_depth.3stap.html deleted file mode 100644 index 7425387a..00000000 --- a/man/function::indent_depth.3stap.html +++ /dev/null @@ -1,73 +0,0 @@ - -Manpage of FUNCTION::INDENT_DEP - -

FUNCTION::INDENT_DEP

-Section: Utility functions for using an (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::indent_depth - returns the global nested-depth -  -

SYNOPSIS

- -

-

-    indent_depth:long(delta:long)
-
- -  -

ARGUMENTS

- -

- -delta -

-the amount of depth added/removed for each call -
- -  -

DESCRIPTION

- -

- -This function returns a number for appropriate indentation, similar to -indent. Call it with a small positive or matching negative delta. Unlike the thread_indent_depth function, the indent does not track individual indent values on a per thread basis. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::inet_get_ip_source.3stap.html b/man/function::inet_get_ip_source.3stap.html deleted file mode 100644 index ab717efe..00000000 --- a/man/function::inet_get_ip_source.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::INET_GET_I - -

FUNCTION::INET_GET_I

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::inet_get_ip_source - Provide IP source address string for a kernel socket -  -

SYNOPSIS

- -

-

-    inet_get_ip_source:string(sock:long)
-
- -  -

ARGUMENTS

- -

- -sock -

-pointer to the kernel socket -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::inet_get_local_port.3stap.html b/man/function::inet_get_local_port.3stap.html deleted file mode 100644 index 8e19f0b7..00000000 --- a/man/function::inet_get_local_port.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::INET_GET_L - -

FUNCTION::INET_GET_L

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::inet_get_local_port - Provide local port number for a kernel socket -  -

SYNOPSIS

- -

-

-    inet_get_local_port:long(sock:long)
-
- -  -

ARGUMENTS

- -

- -sock -

-pointer to the kernel socket -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::inode_name.3stap.html b/man/function::inode_name.3stap.html deleted file mode 100644 index 5d30260c..00000000 --- a/man/function::inode_name.3stap.html +++ /dev/null @@ -1,74 +0,0 @@ - -Manpage of FUNCTION::INODE_NAME - -

FUNCTION::INODE_NAME

-Section: Directory-entry (dentry) Tapse (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::inode_name - get the inode name -  -

SYNOPSIS

- -

-

-    inode_name:string(inode:long)
-
- -  -

ARGUMENTS

- -

- -inode -

-Pointer to inode. -
- -  -

DESCRIPTION

- -

- -

- -Returns the first path basename associated with the given inode. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::inode_path.3stap.html b/man/function::inode_path.3stap.html deleted file mode 100644 index cfc04af9..00000000 --- a/man/function::inode_path.3stap.html +++ /dev/null @@ -1,74 +0,0 @@ - -Manpage of FUNCTION::INODE_PATH - -

FUNCTION::INODE_PATH

-Section: Directory-entry (dentry) Tapse (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::inode_path - get the path to an inode -  -

SYNOPSIS

- -

-

-    inode_path:string(inode:long)
-
- -  -

ARGUMENTS

- -

- -inode -

-Pointer to inode. -
- -  -

DESCRIPTION

- -

- -

- -Returns the full path associated with the given inode. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::int_arg.3stap.html b/man/function::int_arg.3stap.html deleted file mode 100644 index 2645ce9b..00000000 --- a/man/function::int_arg.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::INT_ARG - -

FUNCTION::INT_ARG

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::int_arg - Return function argument as signed int -  -

SYNOPSIS

- -

-

-    int_arg:long(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-index of argument to return -
- -  -

DESCRIPTION

- -

- -Return the value of argument n as a signed int (i.e., a 32-bit integer sign-extended to 64 bits). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ip_ntop.3stap.html b/man/function::ip_ntop.3stap.html deleted file mode 100644 index 9de49774..00000000 --- a/man/function::ip_ntop.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::IP_NTOP - -

FUNCTION::IP_NTOP

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ip_ntop - Returns a string representation for an IPv4 address -  -

SYNOPSIS

- -

-

-    ip_ntop:string(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the IPv4 address represented as an integer -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ipmib_filter_key.3stap.html b/man/function::ipmib_filter_key.3stap.html deleted file mode 100644 index 08fd35f8..00000000 --- a/man/function::ipmib_filter_key.3stap.html +++ /dev/null @@ -1,91 +0,0 @@ - -Manpage of FUNCTION::IPMIB_FILT - -

FUNCTION::IPMIB_FILT

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ipmib_filter_key - Default filter function for ipmib.* probes -  -

SYNOPSIS

- -

-

-    ipmib_filter_key:long(skb:long,op:long,SourceIsLocal:long)
-
- -  -

ARGUMENTS

- -

- -skb -

-pointer to the struct sk_buff -
- -

- -op -

-value to be counted if -skb -passes the filter -
- -

- -SourceIsLocal -

-1 is local operation and 0 is non-local operation -
- -  -

DESCRIPTION

- -

- -This function is a default filter function. The user can replace this function with their own. The user-supplied filter function returns an index key based on the values in -skb. A return value of 0 means this particular -skb -should be not be counted. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ipmib_get_proto.3stap.html b/man/function::ipmib_get_proto.3stap.html deleted file mode 100644 index 06008616..00000000 --- a/man/function::ipmib_get_proto.3stap.html +++ /dev/null @@ -1,73 +0,0 @@ - -Manpage of FUNCTION::IPMIB_GET_ - -

FUNCTION::IPMIB_GET_

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ipmib_get_proto - Get the protocol value -  -

SYNOPSIS

- -

-

-    ipmib_get_proto:long(skb:long)
-
- -  -

ARGUMENTS

- -

- -skb -

-pointer to a struct sk_buff -
- -  -

DESCRIPTION

- -

- -Returns the protocol value from -skb. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ipmib_local_addr.3stap.html b/man/function::ipmib_local_addr.3stap.html deleted file mode 100644 index 3b4dd17e..00000000 --- a/man/function::ipmib_local_addr.3stap.html +++ /dev/null @@ -1,80 +0,0 @@ - -Manpage of FUNCTION::IPMIB_LOCA - -

FUNCTION::IPMIB_LOCA

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ipmib_local_addr - Get the local ip address -  -

SYNOPSIS

- -

-

-    ipmib_local_addr:long(skb:long,SourceIsLocal:long)
-
- -  -

ARGUMENTS

- -

- -skb -

-pointer to a struct sk_buff -
- -

- -SourceIsLocal -

-flag to indicate whether local operation -
- -  -

DESCRIPTION

- -

- -Returns the local ip address -skb. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ipmib_remote_addr.3stap.html b/man/function::ipmib_remote_addr.3stap.html deleted file mode 100644 index 48422866..00000000 --- a/man/function::ipmib_remote_addr.3stap.html +++ /dev/null @@ -1,80 +0,0 @@ - -Manpage of FUNCTION::IPMIB_REMO - -

FUNCTION::IPMIB_REMO

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ipmib_remote_addr - Get the remote ip address -  -

SYNOPSIS

- -

-

-    ipmib_remote_addr:long(skb:long,SourceIsLocal:long)
-
- -  -

ARGUMENTS

- -

- -skb -

-pointer to a struct sk_buff -
- -

- -SourceIsLocal -

-flag to indicate whether local operation -
- -  -

DESCRIPTION

- -

- -Returns the remote ip address from -skb. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ipmib_tcp_local_port.3stap.html b/man/function::ipmib_tcp_local_port.3stap.html deleted file mode 100644 index b63a118d..00000000 --- a/man/function::ipmib_tcp_local_port.3stap.html +++ /dev/null @@ -1,80 +0,0 @@ - -Manpage of FUNCTION::IPMIB_TCP_ - -

FUNCTION::IPMIB_TCP_

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ipmib_tcp_local_port - Get the local tcp port -  -

SYNOPSIS

- -

-

-    ipmib_tcp_local_port:long(skb:long,SourceIsLocal:long)
-
- -  -

ARGUMENTS

- -

- -skb -

-pointer to a struct sk_buff -
- -

- -SourceIsLocal -

-flag to indicate whether local operation -
- -  -

DESCRIPTION

- -

- -Returns the local tcp port from -skb. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ipmib_tcp_remote_port.3stap.html b/man/function::ipmib_tcp_remote_port.3stap.html deleted file mode 100644 index 3db14ce7..00000000 --- a/man/function::ipmib_tcp_remote_port.3stap.html +++ /dev/null @@ -1,80 +0,0 @@ - -Manpage of FUNCTION::IPMIB_TCP_ - -

FUNCTION::IPMIB_TCP_

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ipmib_tcp_remote_port - Get the remote tcp port -  -

SYNOPSIS

- -

-

-    ipmib_tcp_remote_port:long(skb:long,SourceIsLocal:long)
-
- -  -

ARGUMENTS

- -

- -skb -

-pointer to a struct sk_buff -
- -

- -SourceIsLocal -

-flag to indicate whether local operation -
- -  -

DESCRIPTION

- -

- -Returns the remote tcp port from -skb. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::is_myproc.3stap.html b/man/function::is_myproc.3stap.html deleted file mode 100644 index 119547b1..00000000 --- a/man/function::is_myproc.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::IS_MYPROC - -

FUNCTION::IS_MYPROC

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::is_myproc - Determines if the current probe point has occurred in the user's own process -  -

SYNOPSIS

- -

-

-    is_myproc:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns 1 if the current probe point has occurred in the user's own process. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::is_return.3stap.html b/man/function::is_return.3stap.html deleted file mode 100644 index 9d926000..00000000 --- a/man/function::is_return.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::IS_RETURN - -

FUNCTION::IS_RETURN

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::is_return - Whether the current probe context is a return probe -  -

SYNOPSIS

- -

-

-    is_return:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns 1 if the current probe context is a return probe, returns 0 otherwise. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::is_sig_blocked.3stap.html b/man/function::is_sig_blocked.3stap.html deleted file mode 100644 index 111affd9..00000000 --- a/man/function::is_sig_blocked.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::IS_SIG_BLO - -

FUNCTION::IS_SIG_BLO

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::is_sig_blocked - Returns 1 if the signal is currently blocked, or 0 if it is not -  -

SYNOPSIS

- -

-

-    is_sig_blocked:long(task:long,sig:long)
-
- -  -

ARGUMENTS

- -

- -task -

-address of the task_struct to query. -
- -

- -sig -

-the signal number to test. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::isdigit.3stap.html b/man/function::isdigit.3stap.html deleted file mode 100644 index 1860ede7..00000000 --- a/man/function::isdigit.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::ISDIGIT - -

FUNCTION::ISDIGIT

-Section: A collection of standard strin (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::isdigit - Checks for a digit -  -

SYNOPSIS

- -

-

-    isdigit:long(str:string)
-
- -  -

ARGUMENTS

- -

- -str -

-string to check -
- -  -

DESCRIPTION

- -

- -Checks for a digit (0 through 9) as the first character of a string. Returns non-zero if true, and a zero if false. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::isinstr.3stap.html b/man/function::isinstr.3stap.html deleted file mode 100644 index e67602f0..00000000 --- a/man/function::isinstr.3stap.html +++ /dev/null @@ -1,82 +0,0 @@ - -Manpage of FUNCTION::ISINSTR - -

FUNCTION::ISINSTR

-Section: A collection of standard strin (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::isinstr - Returns whether a string is a substring of another string -  -

SYNOPSIS

- -

-

-    isinstr:long(s1:string,s2:string)
-
- -  -

ARGUMENTS

- -

- -s1 -

-string to search in -
- -

- -s2 -

-substring to find -
- -  -

DESCRIPTION

- -

- -This function returns 1 if string -s1 -contains -s2, otherwise zero. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::jiffies.3stap.html b/man/function::jiffies.3stap.html deleted file mode 100644 index 0233676b..00000000 --- a/man/function::jiffies.3stap.html +++ /dev/null @@ -1,69 +0,0 @@ - -Manpage of FUNCTION::JIFFIES - -

FUNCTION::JIFFIES

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::jiffies - Kernel jiffies count -  -

SYNOPSIS

- -

-

-    jiffies:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the value of the kernel jiffies variable. This value is incremented periodically by timer interrupts, and may wrap around a 32-bit or 64-bit boundary. See -HZ. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::kernel_char.3stap.html b/man/function::kernel_char.3stap.html deleted file mode 100644 index b1b14fe5..00000000 --- a/man/function::kernel_char.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::KERNEL_CHA - -

FUNCTION::KERNEL_CHA

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::kernel_char - Retrieves a char value stored in kernel memory -  -

SYNOPSIS

- -

-

-    kernel_char:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to retrieve the char from -
- -  -

DESCRIPTION

- -

- -Returns the char value from a given kernel memory address. Reports an error when reading from the given address fails. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::kernel_int.3stap.html b/man/function::kernel_int.3stap.html deleted file mode 100644 index 55471370..00000000 --- a/man/function::kernel_int.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::KERNEL_INT - -

FUNCTION::KERNEL_INT

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::kernel_int - Retrieves an int value stored in kernel memory -  -

SYNOPSIS

- -

-

-    kernel_int:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to retrieve the int from -
- -  -

DESCRIPTION

- -

- -Returns the int value from a given kernel memory address. Reports an error when reading from the given address fails. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::kernel_long.3stap.html b/man/function::kernel_long.3stap.html deleted file mode 100644 index 45679c72..00000000 --- a/man/function::kernel_long.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::KERNEL_LON - -

FUNCTION::KERNEL_LON

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::kernel_long - Retrieves a long value stored in kernel memory -  -

SYNOPSIS

- -

-

-    kernel_long:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to retrieve the long from -
- -  -

DESCRIPTION

- -

- -Returns the long value from a given kernel memory address. Reports an error when reading from the given address fails. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::kernel_pointer.3stap.html b/man/function::kernel_pointer.3stap.html deleted file mode 100644 index 0cd0a81d..00000000 --- a/man/function::kernel_pointer.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::KERNEL_POI - -

FUNCTION::KERNEL_POI

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::kernel_pointer - Retrieves a pointer value stored in kernel memory -  -

SYNOPSIS

- -

-

-    kernel_pointer:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to retrieve the pointer from -
- -  -

DESCRIPTION

- -

- -Returns the pointer value from a given kernel memory address. Reports an error when reading from the given address fails. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::kernel_short.3stap.html b/man/function::kernel_short.3stap.html deleted file mode 100644 index 65a344e6..00000000 --- a/man/function::kernel_short.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::KERNEL_SHO - -

FUNCTION::KERNEL_SHO

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::kernel_short - Retrieves a short value stored in kernel memory -  -

SYNOPSIS

- -

-

-    kernel_short:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to retrieve the short from -
- -  -

DESCRIPTION

- -

- -Returns the short value from a given kernel memory address. Reports an error when reading from the given address fails. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::kernel_string.3stap.html b/man/function::kernel_string.3stap.html deleted file mode 100644 index 96372599..00000000 --- a/man/function::kernel_string.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::KERNEL_STR - -

FUNCTION::KERNEL_STR

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::kernel_string - Retrieves string from kernel memory -  -

SYNOPSIS

- -

-

-    kernel_string:string(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to retrieve the string from -
- -  -

DESCRIPTION

- -

- -This function returns the null terminated C string from a given kernel memory address. Reports an error on string copy fault. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::kernel_string2.3stap.html b/man/function::kernel_string2.3stap.html deleted file mode 100644 index 32e67667..00000000 --- a/man/function::kernel_string2.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::KERNEL_STR - -

FUNCTION::KERNEL_STR

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::kernel_string2 - Retrieves string from kernel memory with alternative error string -  -

SYNOPSIS

- -

-

-    kernel_string2:string(addr:long,err_msg:string)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to retrieve the string from -
- -

- -err_msg -

-The error message to return when data isn't available -
- -  -

DESCRIPTION

- -

- -This function returns the null terminated C string from a given kernel memory address. Reports the given error message on string copy fault. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::kernel_string2_utf16.3stap.html b/man/function::kernel_string2_utf16.3stap.html deleted file mode 100644 index ebef077c..00000000 --- a/man/function::kernel_string2_utf16.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::KERNEL_STR - -

FUNCTION::KERNEL_STR

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::kernel_string2_utf16 - Retrieves UTF-16 string from kernel memory with alternative error string -  -

SYNOPSIS

- -

-

-    kernel_string2_utf16:string(addr:long,err_msg:string)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to retrieve the string from -
- -

- -err_msg -

-The error message to return when data isn't available -
- -  -

DESCRIPTION

- -

- -This function returns a null terminated UTF-8 string converted from the UTF-16 string at a given kernel memory address. Reports the given error message on string copy fault or conversion error. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::kernel_string2_utf32.3stap.html b/man/function::kernel_string2_utf32.3stap.html deleted file mode 100644 index df215f70..00000000 --- a/man/function::kernel_string2_utf32.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::KERNEL_STR - -

FUNCTION::KERNEL_STR

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::kernel_string2_utf32 - Retrieves UTF-32 string from kernel memory with alternative error string -  -

SYNOPSIS

- -

-

-    kernel_string2_utf32:string(addr:long,err_msg:string)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to retrieve the string from -
- -

- -err_msg -

-The error message to return when data isn't available -
- -  -

DESCRIPTION

- -

- -This function returns a null terminated UTF-8 string converted from the UTF-32 string at a given kernel memory address. Reports the given error message on string copy fault or conversion error. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::kernel_string_n.3stap.html b/man/function::kernel_string_n.3stap.html deleted file mode 100644 index b56e05e2..00000000 --- a/man/function::kernel_string_n.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::KERNEL_STR - -

FUNCTION::KERNEL_STR

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::kernel_string_n - Retrieves string of given length from kernel memory -  -

SYNOPSIS

- -

-

-    kernel_string_n:string(addr:long,n:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to retrieve the string from -
- -

- -n -

-The maximum length of the string (if not null terminated) -
- -  -

DESCRIPTION

- -

- -Returns the C string of a maximum given length from a given kernel memory address. Reports an error on string copy fault. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::kernel_string_utf16.3stap.html b/man/function::kernel_string_utf16.3stap.html deleted file mode 100644 index 53ec58db..00000000 --- a/man/function::kernel_string_utf16.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::KERNEL_STR - -

FUNCTION::KERNEL_STR

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::kernel_string_utf16 - Retrieves UTF-16 string from kernel memory -  -

SYNOPSIS

- -

-

-    kernel_string_utf16:string(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to retrieve the string from -
- -  -

DESCRIPTION

- -

- -This function returns a null terminated UTF-8 string converted from the UTF-16 string at a given kernel memory address. Reports an error on string copy fault or conversion error. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::kernel_string_utf32.3stap.html b/man/function::kernel_string_utf32.3stap.html deleted file mode 100644 index c08eb94c..00000000 --- a/man/function::kernel_string_utf32.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::KERNEL_STR - -

FUNCTION::KERNEL_STR

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::kernel_string_utf32 - Retrieves UTF-32 string from kernel memory -  -

SYNOPSIS

- -

-

-    kernel_string_utf32:string(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to retrieve the string from -
- -  -

DESCRIPTION

- -

- -This function returns a null terminated UTF-8 string converted from the UTF-32 string at a given kernel memory address. Reports an error on string copy fault or conversion error. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::linuxmib_filter_key.3stap.html b/man/function::linuxmib_filter_key.3stap.html deleted file mode 100644 index 2c8a8662..00000000 --- a/man/function::linuxmib_filter_key.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of FUNCTION::LINUXMIB_F - -

FUNCTION::LINUXMIB_F

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::linuxmib_filter_key - Default filter function for linuxmib.* probes -  -

SYNOPSIS

- -

-

-    linuxmib_filter_key:long(sk:long,op:long)
-
- -  -

ARGUMENTS

- -

- -sk -

-pointer to the struct sock -
- -

- -op -

-value to be counted if -sk -passes the filter -
- -  -

DESCRIPTION

- -

- -This function is a default filter function. The user can replace this function with their own. The user-supplied filter function returns an index key based on the values in -sk. A return value of 0 means this particular -sk -should be not be counted. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::local_clock_ms.3stap.html b/man/function::local_clock_ms.3stap.html deleted file mode 100644 index 600d78a3..00000000 --- a/man/function::local_clock_ms.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::LOCAL_CLOC - -

FUNCTION::LOCAL_CLOC

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::local_clock_ms - Number of milliseconds on the local cpu's clock -  -

SYNOPSIS

- -

-

-    local_clock_ms:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the number of milliseconds on the local cpu's clock. This is always monotonic comparing on the same cpu, but may have some drift between cpus (within about a jiffy). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::local_clock_ns.3stap.html b/man/function::local_clock_ns.3stap.html deleted file mode 100644 index 99ea30a7..00000000 --- a/man/function::local_clock_ns.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::LOCAL_CLOC - -

FUNCTION::LOCAL_CLOC

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::local_clock_ns - Number of nanoseconds on the local cpu's clock -  -

SYNOPSIS

- -

-

-    local_clock_ns:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the number of nanoseconds on the local cpu's clock. This is always monotonic comparing on the same cpu, but may have some drift between cpus (within about a jiffy). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::local_clock_s.3stap.html b/man/function::local_clock_s.3stap.html deleted file mode 100644 index 8a6c0066..00000000 --- a/man/function::local_clock_s.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::LOCAL_CLOC - -

FUNCTION::LOCAL_CLOC

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::local_clock_s - Number of seconds on the local cpu's clock -  -

SYNOPSIS

- -

-

-    local_clock_s:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the number of seconds on the local cpu's clock. This is always monotonic comparing on the same cpu, but may have some drift between cpus (within about a jiffy). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::local_clock_us.3stap.html b/man/function::local_clock_us.3stap.html deleted file mode 100644 index dc0d1076..00000000 --- a/man/function::local_clock_us.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::LOCAL_CLOC - -

FUNCTION::LOCAL_CLOC

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::local_clock_us - Number of microseconds on the local cpu's clock -  -

SYNOPSIS

- -

-

-    local_clock_us:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the number of microseconds on the local cpu's clock. This is always monotonic comparing on the same cpu, but may have some drift between cpus (within about a jiffy). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::log.3stap.html b/man/function::log.3stap.html deleted file mode 100644 index f2a217b2..00000000 --- a/man/function::log.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::LOG - -

FUNCTION::LOG

-Section: Logging Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::log - Send a line to the common trace buffer -  -

SYNOPSIS

- -

-

-    log(msg:string)
-
- -  -

ARGUMENTS

- -

- -msg -

-The formatted message string -
- -  -

DESCRIPTION

- -

- -This function logs data. log sends the message immediately to staprun and to the bulk transport (relayfs) if it is being used. If the last character given is not a newline, then one is added. This function is not as efficient as printf and should be used only for urgent messages. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::long_arg.3stap.html b/man/function::long_arg.3stap.html deleted file mode 100644 index 2520cb55..00000000 --- a/man/function::long_arg.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::LONG_ARG - -

FUNCTION::LONG_ARG

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::long_arg - Return function argument as signed long -  -

SYNOPSIS

- -

-

-    long_arg:long(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-index of argument to return -
- -  -

DESCRIPTION

- -

- -Return the value of argument n as a signed long. On architectures where a long is 32 bits, the value is sign-extended to 64 bits. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::longlong_arg.3stap.html b/man/function::longlong_arg.3stap.html deleted file mode 100644 index d00f816a..00000000 --- a/man/function::longlong_arg.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::LONGLONG_A - -

FUNCTION::LONGLONG_A

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::longlong_arg - Return function argument as 64-bit value -  -

SYNOPSIS

- -

-

-    longlong_arg:long(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-index of argument to return -
- -  -

DESCRIPTION

- -

- -Return the value of argument n as a 64-bit value. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::mdelay.3stap.html b/man/function::mdelay.3stap.html deleted file mode 100644 index 79d087cd..00000000 --- a/man/function::mdelay.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::MDELAY - -

FUNCTION::MDELAY

-Section: Guru tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::mdelay - millisecond delay -  -

SYNOPSIS

- -

-

-    mdelay(ms:long)
-
- -  -

ARGUMENTS

- -

- -ms -

-Number of milliseconds to delay. -
- -  -

DESCRIPTION

- -

- -This function inserts a multi-millisecond busy-delay into a probe handler. It requires guru mode. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::mem_page_size.3stap.html b/man/function::mem_page_size.3stap.html deleted file mode 100644 index 5920392d..00000000 --- a/man/function::mem_page_size.3stap.html +++ /dev/null @@ -1,61 +0,0 @@ - -Manpage of FUNCTION::MEM_PAGE_S - -

FUNCTION::MEM_PAGE_S

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::mem_page_size - Number of bytes in a page for this architecture -  -

SYNOPSIS

- -

-

-    mem_page_size:long()
-
- -  -

ARGUMENTS

- -

- -None -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::modname.3stap.html b/man/function::modname.3stap.html deleted file mode 100644 index 8a5c781b..00000000 --- a/man/function::modname.3stap.html +++ /dev/null @@ -1,74 +0,0 @@ - -Manpage of FUNCTION::MODNAME - -

FUNCTION::MODNAME

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::modname - Return the kernel module name loaded at the address -  -

SYNOPSIS

- -

-

-    modname:string(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The address to map to a kernel module name -
- -  -

DESCRIPTION

- -

- -Returns the module name associated with the given address if known. If not known it will raise an error. If the address was not in a kernel module, but in the kernel itself, then the string -"kernel" -will be returned. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::module_name.3stap.html b/man/function::module_name.3stap.html deleted file mode 100644 index d8c1e3f2..00000000 --- a/man/function::module_name.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::MODULE_NAM - -

FUNCTION::MODULE_NAM

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::module_name - The module name of the current script -  -

SYNOPSIS

- -

-

-    module_name:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the name of the stap module. Either generated randomly (stap_[0-9a-f]+_[0-9a-f]+) or set by stap -m <module_name>. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::msecs_to_string.3stap.html b/man/function::msecs_to_string.3stap.html deleted file mode 100644 index a619ae54..00000000 --- a/man/function::msecs_to_string.3stap.html +++ /dev/null @@ -1,73 +0,0 @@ - -Manpage of FUNCTION::MSECS_TO_S - -

FUNCTION::MSECS_TO_S

-Section: Task Time Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::msecs_to_string - Human readable string for given milliseconds -  -

SYNOPSIS

- -

-

-    msecs_to_string:string(msecs:long)
-
- -  -

ARGUMENTS

- -

- -msecs -

-Number of milliseconds to translate. -
- -  -

DESCRIPTION

- -

- -Returns a string representing the number of milliseconds as a human readable string consisting of -"XmY.ZZZs", where X is the number of minutes, Y is the number of seconds and ZZZ is the number of milliseconds. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::nfsderror.3stap.html b/man/function::nfsderror.3stap.html deleted file mode 100644 index 4a8ef0df..00000000 --- a/man/function::nfsderror.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::NFSDERROR - -

FUNCTION::NFSDERROR

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::nfsderror - Convert nfsd error number into string -  -

SYNOPSIS

- -

-

-    nfsderror:string(err:long)
-
- -  -

ARGUMENTS

- -

- -err -

-errnum -
- -  -

DESCRIPTION

- -

- -This function returns a string for the error number passed into the function. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::nsecs_to_string.3stap.html b/man/function::nsecs_to_string.3stap.html deleted file mode 100644 index 4867a103..00000000 --- a/man/function::nsecs_to_string.3stap.html +++ /dev/null @@ -1,73 +0,0 @@ - -Manpage of FUNCTION::NSECS_TO_S - -

FUNCTION::NSECS_TO_S

-Section: Task Time Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::nsecs_to_string - Human readable string for given nanoseconds -  -

SYNOPSIS

- -

-

-    nsecs_to_string:string(nsecs:long)
-
- -  -

ARGUMENTS

- -

- -nsecs -

-Number of nanoseconds to translate. -
- -  -

DESCRIPTION

- -

- -Returns a string representing the number of nanoseconds as a human readable string consisting of -"XmY.ZZZZZZs", where X is the number of minutes, Y is the number of seconds and ZZZZZZZZZ is the number of nanoseconds. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ntohl.3stap.html b/man/function::ntohl.3stap.html deleted file mode 100644 index 29571a44..00000000 --- a/man/function::ntohl.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::NTOHL - -

FUNCTION::NTOHL

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ntohl - Convert 32-bit long from network to host order -  -

SYNOPSIS

- -

-

-    ntohl:long(x:long)
-
- -  -

ARGUMENTS

- -

- -x -

-Value to convert -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ntohll.3stap.html b/man/function::ntohll.3stap.html deleted file mode 100644 index 0a41dcfc..00000000 --- a/man/function::ntohll.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::NTOHLL - -

FUNCTION::NTOHLL

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ntohll - Convert 64-bit long long from network to host order -  -

SYNOPSIS

- -

-

-    ntohll:long(x:long)
-
- -  -

ARGUMENTS

- -

- -x -

-Value to convert -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ntohs.3stap.html b/man/function::ntohs.3stap.html deleted file mode 100644 index 6195fc0b..00000000 --- a/man/function::ntohs.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::NTOHS - -

FUNCTION::NTOHS

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ntohs - Convert 16-bit short from network to host order -  -

SYNOPSIS

- -

-

-    ntohs:long(x:long)
-
- -  -

ARGUMENTS

- -

- -x -

-Value to convert -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::pages_to_string.3stap.html b/man/function::pages_to_string.3stap.html deleted file mode 100644 index 1baa2974..00000000 --- a/man/function::pages_to_string.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of FUNCTION::PAGES_TO_S - -

FUNCTION::PAGES_TO_S

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::pages_to_string - Turns pages into a human readable string -  -

SYNOPSIS

- -

-

-    pages_to_string:string(pages:long)
-
- -  -

ARGUMENTS

- -

- -pages -

-Number of pages to translate. -
- -  -

DESCRIPTION

- -

- -Multiplies pages by -page_size -to get the number of bytes and returns the result of -bytes_to_string. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::panic.3stap.html b/man/function::panic.3stap.html deleted file mode 100644 index ef57e138..00000000 --- a/man/function::panic.3stap.html +++ /dev/null @@ -1,74 +0,0 @@ - -Manpage of FUNCTION::PANIC - -

FUNCTION::PANIC

-Section: Guru tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::panic - trigger a panic -  -

SYNOPSIS

- -

-

-    panic(msg:string)
-
- -  -

ARGUMENTS

- -

- -msg -

-message to pass to kernel's -panic -function -
- -  -

DESCRIPTION

- -

- -This function triggers an immediate panic of the running kernel with a user-specified panic message. It requires guru mode. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::pexecname.3stap.html b/man/function::pexecname.3stap.html deleted file mode 100644 index 5048a6dc..00000000 --- a/man/function::pexecname.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::PEXECNAME - -

FUNCTION::PEXECNAME

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::pexecname - Returns the execname of a target process's parent process -  -

SYNOPSIS

- -

-

-    pexecname:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the execname of a target process's parent procces. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::pgrp.3stap.html b/man/function::pgrp.3stap.html deleted file mode 100644 index 24a1f312..00000000 --- a/man/function::pgrp.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::PGRP - -

FUNCTION::PGRP

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::pgrp - Returns the process group ID of the current process -  -

SYNOPSIS

- -

-

-    pgrp:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the process group ID of the current process. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::pid.3stap.html b/man/function::pid.3stap.html deleted file mode 100644 index 1686c48f..00000000 --- a/man/function::pid.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::PID - -

FUNCTION::PID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::pid - Returns the ID of a target process -  -

SYNOPSIS

- -

-

-    pid:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the ID of a target process. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::pid2execname.3stap.html b/man/function::pid2execname.3stap.html deleted file mode 100644 index 33d01bb7..00000000 --- a/man/function::pid2execname.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::PID2EXECNA - -

FUNCTION::PID2EXECNA

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::pid2execname - The name of the given process identifier -  -

SYNOPSIS

- -

-

-    pid2execname:string(pid:long)
-
- -  -

ARGUMENTS

- -

- -pid -

-process identifier -
- -  -

DESCRIPTION

- -

- -Return the name of the given process id. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::pid2task.3stap.html b/man/function::pid2task.3stap.html deleted file mode 100644 index ff9250d2..00000000 --- a/man/function::pid2task.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::PID2TASK - -

FUNCTION::PID2TASK

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::pid2task - The task_struct of the given process identifier -  -

SYNOPSIS

- -

-

-    pid2task:long(pid:long)
-
- -  -

ARGUMENTS

- -

- -pid -

-process identifier -
- -  -

DESCRIPTION

- -

- -Return the task struct of the given process id. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::pn.3stap.html b/man/function::pn.3stap.html deleted file mode 100644 index bc2d33d2..00000000 --- a/man/function::pn.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::PN - -

FUNCTION::PN

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::pn - Returns the active probe name -  -

SYNOPSIS

- -

-

-    pn:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the script-level probe point associated with a currently running probe handler, including wild-card expansion effects. Context: The current probe point. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::pnlabel.3stap.html b/man/function::pnlabel.3stap.html deleted file mode 100644 index 322d182a..00000000 --- a/man/function::pnlabel.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of FUNCTION::PNLABEL - -

FUNCTION::PNLABEL

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::pnlabel - Returns the label name parsed from the probe name -  -

SYNOPSIS

- -

-

-    pnlabel:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This returns the label name as parsed from the script-level probe point. This function will only work if called directly from the body of a '.label' probe point (i.e. no aliases). -  -

CONTEXT

- -

- -The current probe point. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::pointer_arg.3stap.html b/man/function::pointer_arg.3stap.html deleted file mode 100644 index a94a85fe..00000000 --- a/man/function::pointer_arg.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::POINTER_AR - -

FUNCTION::POINTER_AR

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::pointer_arg - Return function argument as pointer value -  -

SYNOPSIS

- -

-

-    pointer_arg:long(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-index of argument to return -
- -  -

DESCRIPTION

- -

- -Return the unsigned value of argument n, same as ulong_arg. Can be used with any type of pointer. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::pp.3stap.html b/man/function::pp.3stap.html deleted file mode 100644 index cd1876f1..00000000 --- a/man/function::pp.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::PP - -

FUNCTION::PP

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::pp - Returns the active probe point -  -

SYNOPSIS

- -

-

-    pp:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the fully-resolved probe point associated with a currently running probe handler, including alias and wild-card expansion effects. Context: The current probe point. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ppfunc.3stap.html b/man/function::ppfunc.3stap.html deleted file mode 100644 index 5a20496b..00000000 --- a/man/function::ppfunc.3stap.html +++ /dev/null @@ -1,71 +0,0 @@ - -Manpage of FUNCTION::PPFUNC - -

FUNCTION::PPFUNC

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ppfunc - Returns the function name parsed from pp -  -

SYNOPSIS

- -

-

-    ppfunc:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This returns the function name from the current -pp. Not all -pp -have functions in them, in which case "" is returned. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::ppid.3stap.html b/man/function::ppid.3stap.html deleted file mode 100644 index 5530ced8..00000000 --- a/man/function::ppid.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::PPID - -

FUNCTION::PPID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ppid - Returns the process ID of a target process's parent process -  -

SYNOPSIS

- -

-

-    ppid:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function return the process ID of the target proccess's parent process. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::print_backtrace.3stap.html b/man/function::print_backtrace.3stap.html deleted file mode 100644 index 8f30c870..00000000 --- a/man/function::print_backtrace.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::PRINT_BACK - -

FUNCTION::PRINT_BACK

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::print_backtrace - Print kernel stack back trace -  -

SYNOPSIS

- -

-

-    print_backtrace()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function is equivalent to print_stack(backtrace), except that deeper stack nesting may be supported. See print_ubacktrace for user-space backtrace. The function does not return a value. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::print_regs.3stap.html b/man/function::print_regs.3stap.html deleted file mode 100644 index 4dcc5f44..00000000 --- a/man/function::print_regs.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::PRINT_REGS - -

FUNCTION::PRINT_REGS

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::print_regs - Print a register dump -  -

SYNOPSIS

- -

-

-    print_regs()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function prints a register dump. Does nothing if no registers are available for the probe point. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::print_stack.3stap.html b/man/function::print_stack.3stap.html deleted file mode 100644 index 5556e0ea..00000000 --- a/man/function::print_stack.3stap.html +++ /dev/null @@ -1,85 +0,0 @@ - -Manpage of FUNCTION::PRINT_STAC - -

FUNCTION::PRINT_STAC

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::print_stack - Print out kernel stack from string -  -

SYNOPSIS

- -

-

-    print_stack(stk:string)
-
- -  -

ARGUMENTS

- -

- -stk -

-String with list of hexadecimal addresses -
- -  -

DESCRIPTION

- -

- -This function performs a symbolic lookup of the addresses in the given string, which is assumed to be the result of a prior call to -backtrace. -

- -Print one line per address, including the address, the name of the function containing the address, and an estimate of its position within that function. Return nothing. -  -

NOTE

- -

- -it is recommended to use -print_syms -instead of this function. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
NOTE
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::print_syms.3stap.html b/man/function::print_syms.3stap.html deleted file mode 100644 index 9dcda914..00000000 --- a/man/function::print_syms.3stap.html +++ /dev/null @@ -1,78 +0,0 @@ - -Manpage of FUNCTION::PRINT_SYMS - -

FUNCTION::PRINT_SYMS

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::print_syms - Print out kernel stack from string -  -

SYNOPSIS

- -

-

-    print_syms(callers:string)
-
- -  -

ARGUMENTS

- -

- -callers -

-String with list of hexadecimal (kernel) addresses -
- -  -

DESCRIPTION

- -

- -This function performs a symbolic lookup of the addresses in the given string, which are assumed to be the result of prior calls to -stack, -callers, and similar functions. -

- -Prints one line per address, including the address, the name of the function containing the address, and an estimate of its position within that function, as obtained by -symdata. Returns nothing. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::print_ubacktrace.3stap.html b/man/function::print_ubacktrace.3stap.html deleted file mode 100644 index 7c4550e1..00000000 --- a/man/function::print_ubacktrace.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::PRINT_UBAC - -

FUNCTION::PRINT_UBAC

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::print_ubacktrace - Print stack back trace for current user-space task. -  -

SYNOPSIS

- -

-

-    print_ubacktrace()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -

- -Equivalent to print_ustack(ubacktrace), except that deeper stack nesting may be supported. Returns nothing. See -print_backtrace -for kernel backtrace. -  -

NOTE

- -

- -To get (full) backtraces for user space applications and shared shared libraries not mentioned in the current script run stap with -d /path/to/exe-or-so and/or add --ldd to load all needed unwind data. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
NOTE
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::print_ubacktrace_brief.3stap.html b/man/function::print_ubacktrace_brief.3stap.html deleted file mode 100644 index f8abfcc8..00000000 --- a/man/function::print_ubacktrace_brief.3stap.html +++ /dev/null @@ -1,78 +0,0 @@ - -Manpage of FUNCTION::PRINT_UBAC - -

FUNCTION::PRINT_UBAC

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::print_ubacktrace_brief - Print stack back trace for current user-space task. -  -

SYNOPSIS

- -

-

-    print_ubacktrace_brief()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -

- -Equivalent to -print_ubacktrace, but output for each symbol is shorter (just name and offset, or just the hex address of no symbol could be found). -  -

NOTE

- -

- -To get (full) backtraces for user space applications and shared shared libraries not mentioned in the current script run stap with -d /path/to/exe-or-so and/or add --ldd to load all needed unwind data. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
NOTE
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::print_ustack.3stap.html b/man/function::print_ustack.3stap.html deleted file mode 100644 index 26a909bc..00000000 --- a/man/function::print_ustack.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of FUNCTION::PRINT_USTA - -

FUNCTION::PRINT_USTA

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::print_ustack - Print out stack for the current task from string. -  -

SYNOPSIS

- -

-

-    print_ustack(stk:string)
-
- -  -

ARGUMENTS

- -

- -stk -

-String with list of hexadecimal addresses for the current task. -
- -  -

DESCRIPTION

- -

- -Perform a symbolic lookup of the addresses in the given string, which is assumed to be the result of a prior call to -ubacktrace -for the current task. -

- -Print one line per address, including the address, the name of the function containing the address, and an estimate of its position within that function. Return nothing. -  -

NOTE

- -

- -it is recommended to use -print_usyms -instead of this function. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
NOTE
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::print_usyms.3stap.html b/man/function::print_usyms.3stap.html deleted file mode 100644 index 54c4fe9a..00000000 --- a/man/function::print_usyms.3stap.html +++ /dev/null @@ -1,78 +0,0 @@ - -Manpage of FUNCTION::PRINT_USYM - -

FUNCTION::PRINT_USYM

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::print_usyms - Print out user stack from string -  -

SYNOPSIS

- -

-

-    print_usyms(callers:string)
-
- -  -

ARGUMENTS

- -

- -callers -

-String with list of hexadecimal (user) addresses -
- -  -

DESCRIPTION

- -

- -This function performs a symbolic lookup of the addresses in the given string, which are assumed to be the result of prior calls to -ustack, -ucallers, and similar functions. -

- -Prints one line per address, including the address, the name of the function containing the address, and an estimate of its position within that function, as obtained by -usymdata. Returns nothing. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::printk.3stap.html b/man/function::printk.3stap.html deleted file mode 100644 index 6776450a..00000000 --- a/man/function::printk.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::PRINTK - -

FUNCTION::PRINTK

-Section: Logging Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::printk - Send a message to the kernel trace buffer -  -

SYNOPSIS

- -

-

-    printk(level:long,msg:string)
-
- -  -

ARGUMENTS

- -

- -level -

-an integer for the severity level (0=KERN_EMERG ... 7=KERN_DEBUG) -
- -

- -msg -

-The formatted message string -
- -  -

DESCRIPTION

- -

- -Print a line of text to the kernel dmesg/console with the given severity. An implicit end-of-line is added. This function may not be safely called from all kernel probe contexts, so is restricted to guru mode only. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::probe_type.3stap.html b/man/function::probe_type.3stap.html deleted file mode 100644 index fabb3502..00000000 --- a/man/function::probe_type.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::PROBE_TYPE - -

FUNCTION::PROBE_TYPE

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::probe_type - The low level probe handler type of the current probe. -  -

SYNOPSIS

- -

-

-    probe_type:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns a short string describing the low level probe handler type for the current probe point. This is for informational purposes only. Depending on the low level probe handler different context functions can or cannot provide information about the current event (for example some probe handlers only trigger in user space and have no associated kernel context). High-level probes might map to the same or different low-level probes (depending on systemtap version and/or kernel used). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::probefunc.3stap.html b/man/function::probefunc.3stap.html deleted file mode 100644 index 2843001c..00000000 --- a/man/function::probefunc.3stap.html +++ /dev/null @@ -1,78 +0,0 @@ - -Manpage of FUNCTION::PROBEFUNC - -

FUNCTION::PROBEFUNC

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::probefunc - Return the probe point's function name, if known -  -

SYNOPSIS

- -

-

-    probefunc:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the name of the function being probed based on the current address, as computed by symname(addr) or usymname(uaddr) depending on probe context (whether the probe is a user probe or a kernel probe). -  -

PLEASE NOTE

- -

- -this function's behaviour differs between SystemTap 2.0 and earlier versions. Prior to 2.0, -probefunc -obtained the function name from the probe point string as returned by -pp, and used the current address as a fallback. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
PLEASE NOTE
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::probemod.3stap.html b/man/function::probemod.3stap.html deleted file mode 100644 index cf51c221..00000000 --- a/man/function::probemod.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::PROBEMOD - -

FUNCTION::PROBEMOD

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::probemod - Return the probe point's kernel module name -  -

SYNOPSIS

- -

-

-    probemod:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the name of the kernel module containing the probe point, if known. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::proc_mem_data.3stap.html b/man/function::proc_mem_data.3stap.html deleted file mode 100644 index eb520f7d..00000000 --- a/man/function::proc_mem_data.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::PROC_MEM_D - -

FUNCTION::PROC_MEM_D

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::proc_mem_data - Program data size (data + stack) in pages -  -

SYNOPSIS

- -

-

-    proc_mem_data:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns the current process data size (data + stack) in pages, or zero when there is no current process or the number of pages couldn't be retrieved. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::proc_mem_data_pid.3stap.html b/man/function::proc_mem_data_pid.3stap.html deleted file mode 100644 index 0dbe9d51..00000000 --- a/man/function::proc_mem_data_pid.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::PROC_MEM_D - -

FUNCTION::PROC_MEM_D

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::proc_mem_data_pid - Program data size (data + stack) in pages -  -

SYNOPSIS

- -

-

-    proc_mem_data_pid:long(pid:long)
-
- -  -

ARGUMENTS

- -

- -pid -

-The pid of process to examine -
- -  -

DESCRIPTION

- -

- -Returns the given process data size (data + stack) in pages, or zero when the process doesn't exist or the number of pages couldn't be retrieved. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::proc_mem_rss.3stap.html b/man/function::proc_mem_rss.3stap.html deleted file mode 100644 index df991fb4..00000000 --- a/man/function::proc_mem_rss.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::PROC_MEM_R - -

FUNCTION::PROC_MEM_R

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::proc_mem_rss - Program resident set size in pages -  -

SYNOPSIS

- -

-

-    proc_mem_rss:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns the resident set size in pages of the current process, or zero when there is no current process or the number of pages couldn't be retrieved. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::proc_mem_rss_pid.3stap.html b/man/function::proc_mem_rss_pid.3stap.html deleted file mode 100644 index 4780cb64..00000000 --- a/man/function::proc_mem_rss_pid.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::PROC_MEM_R - -

FUNCTION::PROC_MEM_R

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::proc_mem_rss_pid - Program resident set size in pages -  -

SYNOPSIS

- -

-

-    proc_mem_rss_pid:long(pid:long)
-
- -  -

ARGUMENTS

- -

- -pid -

-The pid of process to examine -
- -  -

DESCRIPTION

- -

- -Returns the resident set size in pages of the given process, or zero when the process doesn't exist or the number of pages couldn't be retrieved. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::proc_mem_shr.3stap.html b/man/function::proc_mem_shr.3stap.html deleted file mode 100644 index 5c8a72f9..00000000 --- a/man/function::proc_mem_shr.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::PROC_MEM_S - -

FUNCTION::PROC_MEM_S

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::proc_mem_shr - Program shared pages (from shared mappings) -  -

SYNOPSIS

- -

-

-    proc_mem_shr:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns the shared pages (from shared mappings) of the current process, or zero when there is no current process or the number of pages couldn't be retrieved. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::proc_mem_shr_pid.3stap.html b/man/function::proc_mem_shr_pid.3stap.html deleted file mode 100644 index 54ffef9b..00000000 --- a/man/function::proc_mem_shr_pid.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::PROC_MEM_S - -

FUNCTION::PROC_MEM_S

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::proc_mem_shr_pid - Program shared pages (from shared mappings) -  -

SYNOPSIS

- -

-

-    proc_mem_shr_pid:long(pid:long)
-
- -  -

ARGUMENTS

- -

- -pid -

-The pid of process to examine -
- -  -

DESCRIPTION

- -

- -Returns the shared pages (from shared mappings) of the given process, or zero when the process doesn't exist or the number of pages couldn't be retrieved. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::proc_mem_size.3stap.html b/man/function::proc_mem_size.3stap.html deleted file mode 100644 index a180e68e..00000000 --- a/man/function::proc_mem_size.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::PROC_MEM_S - -

FUNCTION::PROC_MEM_S

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::proc_mem_size - Total program virtual memory size in pages -  -

SYNOPSIS

- -

-

-    proc_mem_size:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns the total virtual memory size in pages of the current process, or zero when there is no current process or the number of pages couldn't be retrieved. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::proc_mem_size_pid.3stap.html b/man/function::proc_mem_size_pid.3stap.html deleted file mode 100644 index 0829c360..00000000 --- a/man/function::proc_mem_size_pid.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::PROC_MEM_S - -

FUNCTION::PROC_MEM_S

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::proc_mem_size_pid - Total program virtual memory size in pages -  -

SYNOPSIS

- -

-

-    proc_mem_size_pid:long(pid:long)
-
- -  -

ARGUMENTS

- -

- -pid -

-The pid of process to examine -
- -  -

DESCRIPTION

- -

- -Returns the total virtual memory size in pages of the given process, or zero when that process doesn't exist or the number of pages couldn't be retrieved. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::proc_mem_string.3stap.html b/man/function::proc_mem_string.3stap.html deleted file mode 100644 index bc82f710..00000000 --- a/man/function::proc_mem_string.3stap.html +++ /dev/null @@ -1,69 +0,0 @@ - -Manpage of FUNCTION::PROC_MEM_S - -

FUNCTION::PROC_MEM_S

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::proc_mem_string - Human readable string of current proc memory usage -  -

SYNOPSIS

- -

-

-    proc_mem_string:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns a human readable string showing the size, rss, shr, txt and data of the memory used by the current process. For example -"size: 301m, rss: 11m, shr: 8m, txt: 52k, data: 2248k". -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::proc_mem_string_pid.3stap.html b/man/function::proc_mem_string_pid.3stap.html deleted file mode 100644 index 739c5351..00000000 --- a/man/function::proc_mem_string_pid.3stap.html +++ /dev/null @@ -1,73 +0,0 @@ - -Manpage of FUNCTION::PROC_MEM_S - -

FUNCTION::PROC_MEM_S

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::proc_mem_string_pid - Human readable string of process memory usage -  -

SYNOPSIS

- -

-

-    proc_mem_string_pid:string(pid:long)
-
- -  -

ARGUMENTS

- -

- -pid -

-The pid of process to examine -
- -  -

DESCRIPTION

- -

- -Returns a human readable string showing the size, rss, shr, txt and data of the memory used by the given process. For example -"size: 301m, rss: 11m, shr: 8m, txt: 52k, data: 2248k". -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::proc_mem_txt.3stap.html b/man/function::proc_mem_txt.3stap.html deleted file mode 100644 index bd88b13d..00000000 --- a/man/function::proc_mem_txt.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::PROC_MEM_T - -

FUNCTION::PROC_MEM_T

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::proc_mem_txt - Program text (code) size in pages -  -

SYNOPSIS

- -

-

-    proc_mem_txt:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns the current process text (code) size in pages, or zero when there is no current process or the number of pages couldn't be retrieved. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::proc_mem_txt_pid.3stap.html b/man/function::proc_mem_txt_pid.3stap.html deleted file mode 100644 index 72fdfc4d..00000000 --- a/man/function::proc_mem_txt_pid.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::PROC_MEM_T - -

FUNCTION::PROC_MEM_T

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::proc_mem_txt_pid - Program text (code) size in pages -  -

SYNOPSIS

- -

-

-    proc_mem_txt_pid:long(pid:long)
-
- -  -

ARGUMENTS

- -

- -pid -

-The pid of process to examine -
- -  -

DESCRIPTION

- -

- -Returns the given process text (code) size in pages, or zero when the process doesn't exist or the number of pages couldn't be retrieved. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::pstrace.3stap.html b/man/function::pstrace.3stap.html deleted file mode 100644 index 61769a6c..00000000 --- a/man/function::pstrace.3stap.html +++ /dev/null @@ -1,74 +0,0 @@ - -Manpage of FUNCTION::PSTRACE - -

FUNCTION::PSTRACE

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::pstrace - Chain of processes and pids back to init(1) -  -

SYNOPSIS

- -

-

-    pstrace:string(task:long)
-
- -  -

ARGUMENTS

- -

- -task -

-Pointer to task struct of process -
- -  -

DESCRIPTION

- -

- -This function returns a string listing execname and pid for each process starting from -task -back to the process ancestor that init(1) spawned. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/function::qs_done.3stap.html b/man/function::qs_done.3stap.html deleted file mode 100644 index 1f779d19..00000000 --- a/man/function::qs_done.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::QS_DONE - -

FUNCTION::QS_DONE

-Section: Queue Statistics Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::qs_done - Function to record finishing request -  -

SYNOPSIS

- -

-

-    qs_done(qname:string)
-
- -  -

ARGUMENTS

- -

- -qname -

-the name of the service that finished -
- -  -

DESCRIPTION

- -

- -This function records that a request originally from the given queue has completed being serviced. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::qs_run.3stap.html b/man/function::qs_run.3stap.html deleted file mode 100644 index 5307344c..00000000 --- a/man/function::qs_run.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::QS_RUN - -

FUNCTION::QS_RUN

-Section: Queue Statistics Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::qs_run - Function to record being moved from wait queue to being serviced -  -

SYNOPSIS

- -

-

-    qs_run(qname:string)
-
- -  -

ARGUMENTS

- -

- -qname -

-the name of the service being moved and started -
- -  -

DESCRIPTION

- -

- -This function records that the previous enqueued request was removed from the given wait queue and is now being serviced. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::qs_wait.3stap.html b/man/function::qs_wait.3stap.html deleted file mode 100644 index 2431c0b1..00000000 --- a/man/function::qs_wait.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::QS_WAIT - -

FUNCTION::QS_WAIT

-Section: Queue Statistics Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::qs_wait - Function to record enqueue requests -  -

SYNOPSIS

- -

-

-    qs_wait(qname:string)
-
- -  -

ARGUMENTS

- -

- -qname -

-the name of the queue requesting enqueue -
- -  -

DESCRIPTION

- -

- -This function records that a new request was enqueued for the given queue name. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::qsq_blocked.3stap.html b/man/function::qsq_blocked.3stap.html deleted file mode 100644 index 6648a15c..00000000 --- a/man/function::qsq_blocked.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::QSQ_BLOCKE - -

FUNCTION::QSQ_BLOCKE

-Section: Queue Statistics Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::qsq_blocked - Returns the time reqest was on the wait queue -  -

SYNOPSIS

- -

-

-    qsq_blocked:long(qname:string,scale:long)
-
- -  -

ARGUMENTS

- -

- -qname -

-queue name -
- -

- -scale -

-scale variable to take account for interval fraction -
- -  -

DESCRIPTION

- -

- -This function returns the fraction of elapsed time during which one or more requests were on the wait queue. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::qsq_print.3stap.html b/man/function::qsq_print.3stap.html deleted file mode 100644 index dcb4d108..00000000 --- a/man/function::qsq_print.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::QSQ_PRINT - -

FUNCTION::QSQ_PRINT

-Section: Queue Statistics Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::qsq_print - Prints a line of statistics for the given queue -  -

SYNOPSIS

- -

-

-    qsq_print(qname:string)
-
- -  -

ARGUMENTS

- -

- -qname -

-queue name -
- -  -

DESCRIPTION

- -

- -This function prints a line containing the following -  -

STATISTICS FOR THE GIVEN QUEUE

- -

- -the queue name, the average rate of requests per second, the average wait queue length, the average time on the wait queue, the average time to service a request, the percentage of time the wait queue was used, and the percentage of time request was being serviced. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
STATISTICS FOR THE GIVEN QUEUE
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::qsq_service_time.3stap.html b/man/function::qsq_service_time.3stap.html deleted file mode 100644 index c8385479..00000000 --- a/man/function::qsq_service_time.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::QSQ_SERVIC - -

FUNCTION::QSQ_SERVIC

-Section: Queue Statistics Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::qsq_service_time - Amount of time per request service -  -

SYNOPSIS

- -

-

-    qsq_service_time:long(qname:string,scale:long)
-
- -  -

ARGUMENTS

- -

- -qname -

-queue name -
- -

- -scale -

-scale variable to take account for interval fraction -
- -  -

DESCRIPTION

- -

- -This function returns the average time in microseconds required to service a request once it is removed from the wait queue. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::qsq_start.3stap.html b/man/function::qsq_start.3stap.html deleted file mode 100644 index 0647ade1..00000000 --- a/man/function::qsq_start.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::QSQ_START - -

FUNCTION::QSQ_START

-Section: Queue Statistics Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::qsq_start - Function to reset the stats for a queue -  -

SYNOPSIS

- -

-

-    qsq_start(qname:string)
-
- -  -

ARGUMENTS

- -

- -qname -

-the name of the service that finished -
- -  -

DESCRIPTION

- -

- -This function resets the statistics counters for the given queue, and restarts tracking from the moment the function was called. This function is also used to create intialize a queue. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::qsq_throughput.3stap.html b/man/function::qsq_throughput.3stap.html deleted file mode 100644 index eee4fe63..00000000 --- a/man/function::qsq_throughput.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::QSQ_THROUG - -

FUNCTION::QSQ_THROUG

-Section: Queue Statistics Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::qsq_throughput - Number of requests served per unit time -  -

SYNOPSIS

- -

-

-    qsq_throughput:long(qname:string,scale:long)
-
- -  -

ARGUMENTS

- -

- -qname -

-queue name -
- -

- -scale -

-scale variable to take account for interval fraction -
- -  -

DESCRIPTION

- -

- -This function returns the average number or requests served per microsecond. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::qsq_utilization.3stap.html b/man/function::qsq_utilization.3stap.html deleted file mode 100644 index 3498d276..00000000 --- a/man/function::qsq_utilization.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::QSQ_UTILIZ - -

FUNCTION::QSQ_UTILIZ

-Section: Queue Statistics Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::qsq_utilization - Fraction of time that any request was being serviced -  -

SYNOPSIS

- -

-

-    qsq_utilization:long(qname:string,scale:long)
-
- -  -

ARGUMENTS

- -

- -qname -

-queue name -
- -

- -scale -

-scale variable to take account for interval fraction -
- -  -

DESCRIPTION

- -

- -This function returns the average time in microseconds that at least one request was being serviced. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::qsq_wait_queue_length.3stap.html b/man/function::qsq_wait_queue_length.3stap.html deleted file mode 100644 index f72f2fac..00000000 --- a/man/function::qsq_wait_queue_length.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::QSQ_WAIT_Q - -

FUNCTION::QSQ_WAIT_Q

-Section: Queue Statistics Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::qsq_wait_queue_length - length of wait queue -  -

SYNOPSIS

- -

-

-    qsq_wait_queue_length:long(qname:string,scale:long)
-
- -  -

ARGUMENTS

- -

- -qname -

-queue name -
- -

- -scale -

-scale variable to take account for interval fraction -
- -  -

DESCRIPTION

- -

- -This function returns the average length of the wait queue -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::qsq_wait_time.3stap.html b/man/function::qsq_wait_time.3stap.html deleted file mode 100644 index b322fb3d..00000000 --- a/man/function::qsq_wait_time.3stap.html +++ /dev/null @@ -1,81 +0,0 @@ - -Manpage of FUNCTION::QSQ_WAIT_T - -

FUNCTION::QSQ_WAIT_T

-Section: Queue Statistics Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::qsq_wait_time - Amount of time in queue + service per request -  -

SYNOPSIS

- -

-

-    qsq_wait_time:long(qname:string,scale:long)
-
- -  -

ARGUMENTS

- -

- -qname -

-queue name -
- -

- -scale -

-scale variable to take account for interval fraction -
- -  -

DESCRIPTION

- -

- -This function returns the average time in microseconds that it took for a request to be serviced (qs_wait -to -qa_done). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::raise.3stap.html b/man/function::raise.3stap.html deleted file mode 100644 index 72d3509a..00000000 --- a/man/function::raise.3stap.html +++ /dev/null @@ -1,74 +0,0 @@ - -Manpage of FUNCTION::RAISE - -

FUNCTION::RAISE

-Section: Guru tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::raise - raise a signal in the current thread -  -

SYNOPSIS

- -

-

-    raise(signo:long)
-
- -  -

ARGUMENTS

- -

- -signo -

-signal number -
- -  -

DESCRIPTION

- -

- -This function calls the kernel send_sig routine on the current thread, with the given raw unchecked signal number. It may raise an error if -send_sig -failed. It requires guru mode. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::randint.3stap.html b/man/function::randint.3stap.html deleted file mode 100644 index 185d8f9a..00000000 --- a/man/function::randint.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::RANDINT - -

FUNCTION::RANDINT

-Section: Random functions Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::randint - Return a random number between [0,n) -  -

SYNOPSIS

- -

-

-    randint:long(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-Number past upper limit of range, not larger than 2**20. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::read_stopwatch_ms.3stap.html b/man/function::read_stopwatch_ms.3stap.html deleted file mode 100644 index 5bcf7e1d..00000000 --- a/man/function::read_stopwatch_ms.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of FUNCTION::READ_STOPW - -

FUNCTION::READ_STOPW

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::read_stopwatch_ms - Reads the time in milliseconds for a stopwatch -  -

SYNOPSIS

- -

-

-    read_stopwatch_ms:long(name:string)
-
- -  -

ARGUMENTS

- -

- -name -

-stopwatch name -
- -  -

DESCRIPTION

- -

- -Returns time in milliseconds for stopwatch -name. Creates stopwatch -name -if it does not currently exist. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::read_stopwatch_ns.3stap.html b/man/function::read_stopwatch_ns.3stap.html deleted file mode 100644 index aa9af2ff..00000000 --- a/man/function::read_stopwatch_ns.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of FUNCTION::READ_STOPW - -

FUNCTION::READ_STOPW

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::read_stopwatch_ns - Reads the time in nanoseconds for a stopwatch -  -

SYNOPSIS

- -

-

-    read_stopwatch_ns:long(name:string)
-
- -  -

ARGUMENTS

- -

- -name -

-stopwatch name -
- -  -

DESCRIPTION

- -

- -Returns time in nanoseconds for stopwatch -name. Creates stopwatch -name -if it does not currently exist. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::read_stopwatch_s.3stap.html b/man/function::read_stopwatch_s.3stap.html deleted file mode 100644 index 8d79a1a7..00000000 --- a/man/function::read_stopwatch_s.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of FUNCTION::READ_STOPW - -

FUNCTION::READ_STOPW

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::read_stopwatch_s - Reads the time in seconds for a stopwatch -  -

SYNOPSIS

- -

-

-    read_stopwatch_s:long(name:string)
-
- -  -

ARGUMENTS

- -

- -name -

-stopwatch name -
- -  -

DESCRIPTION

- -

- -Returns time in seconds for stopwatch -name. Creates stopwatch -name -if it does not currently exist. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::read_stopwatch_us.3stap.html b/man/function::read_stopwatch_us.3stap.html deleted file mode 100644 index 85e59232..00000000 --- a/man/function::read_stopwatch_us.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of FUNCTION::READ_STOPW - -

FUNCTION::READ_STOPW

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::read_stopwatch_us - Reads the time in microseconds for a stopwatch -  -

SYNOPSIS

- -

-

-    read_stopwatch_us:long(name:string)
-
- -  -

ARGUMENTS

- -

- -name -

-stopwatch name -
- -  -

DESCRIPTION

- -

- -Returns time in microseconds for stopwatch -name. Creates stopwatch -name -if it does not currently exist. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::real_mount.3stap.html b/man/function::real_mount.3stap.html deleted file mode 100644 index d2ccfb1e..00000000 --- a/man/function::real_mount.3stap.html +++ /dev/null @@ -1,74 +0,0 @@ - -Manpage of FUNCTION::REAL_MOUNT - -

FUNCTION::REAL_MOUNT

-Section: Directory-entry (dentry) Tapse (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::real_mount - get the 'struct mount' pointer -  -

SYNOPSIS

- -

-

-    real_mount:long(vfsmnt:long)
-
- -  -

ARGUMENTS

- -

- -vfsmnt -

-Pointer to 'struct vfsmount' -
- -  -

DESCRIPTION

- -

- -

- -Returns the 'struct mount' pointer value for a 'struct vfsmount' pointer. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::register.3stap.html b/man/function::register.3stap.html deleted file mode 100644 index 1c0fad44..00000000 --- a/man/function::register.3stap.html +++ /dev/null @@ -1,87 +0,0 @@ - -Manpage of FUNCTION::REGISTER - -

FUNCTION::REGISTER

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::register - Return the signed value of the named CPU register -  -

SYNOPSIS

- -

-

-    register:long(name:string)
-
- -  -

ARGUMENTS

- -

- -name -

-Name of the register to return -
- -  -

DESCRIPTION

- -

- -Return the value of the named CPU register, as it was saved when the current probe point was hit. If the register is 32 bits, it is sign-extended to 64 bits. -

- -For the i386 architecture, the following names are recognized. (name1/name2 indicates that name1 and name2 are alternative names for the same register.) eax/ax, ebp/bp, ebx/bx, ecx/cx, edi/di, edx/dx, eflags/flags, eip/ip, esi/si, esp/sp, orig_eax/orig_ax, xcs/cs, xds/ds, xes/es, xfs/fs, xss/ss. -

- -For the x86_64 architecture, the following names are recognized: 64-bit registers: r8, r9, r10, r11, r12, r13, r14, r15, rax/ax, rbp/bp, rbx/bx, rcx/cx, rdi/di, rdx/dx, rip/ip, rsi/si, rsp/sp; 32-bit registers: eax, ebp, ebx, ecx, edx, edi, edx, eip, esi, esp, flags/eflags, orig_eax; segment registers: xcs/cs, xss/ss. -

- -For powerpc, the following names are recognized: r0, r1, ... r31, nip, msr, orig_gpr3, ctr, link, xer, ccr, softe, trap, dar, dsisr, result. -

- -For s390x, the following names are recognized: r0, r1, ... r15, args, psw.mask, psw.addr, orig_gpr2, ilc, trap. -

- -For AArch64, the following names are recognized: x0, x1, ... x30, fp, lr, sp, pc, and orig_x0. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::registers_valid.3stap.html b/man/function::registers_valid.3stap.html deleted file mode 100644 index 03720462..00000000 --- a/man/function::registers_valid.3stap.html +++ /dev/null @@ -1,74 +0,0 @@ - -Manpage of FUNCTION::REGISTERS_ - -

FUNCTION::REGISTERS_

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::registers_valid - Determines validity of register and u_register in current context -  -

SYNOPSIS

- -

-

-    registers_valid:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns 1 if -register -and -u_register -can be used in the current context, or 0 otherwise. For example, -registers_valid -returns 0 when called from a begin or end probe. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::regparm.3stap.html b/man/function::regparm.3stap.html deleted file mode 100644 index f2d53034..00000000 --- a/man/function::regparm.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of FUNCTION::REGPARM - -

FUNCTION::REGPARM

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::regparm - Specify regparm value used to compile function -  -

SYNOPSIS

- -

-

-    regparm(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-original regparm value -
- -  -

DESCRIPTION

- -

- -Call this function with argument n before accessing function arguments using the *_arg function is the function was build with the gcc -mregparm=n option. -

- -(The i386 kernel is built with -mregparm=3, so systemtap considers regparm(3) the default for kernel functions on that architecture.) Only valid on i386 and x86_64 (when probing 32bit applications). Produces an error on other architectures. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::remote_id.3stap.html b/man/function::remote_id.3stap.html deleted file mode 100644 index 42f57cb3..00000000 --- a/man/function::remote_id.3stap.html +++ /dev/null @@ -1,73 +0,0 @@ - -Manpage of FUNCTION::REMOTE_ID - -

FUNCTION::REMOTE_ID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::remote_id - The index of this instance in a remote execution. -  -

SYNOPSIS

- -

-

-    remote_id:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns a number 0..N, which is the unique index of this particular script execution from a swarm of -"stap --remote A --remote B ..." -runs, and is the same number -"stap --remote-prefix" -would print. The function returns -1 if the script was not launched with -"stap --remote", or if the remote staprun/stapsh are older than version 1.7. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::remote_uri.3stap.html b/man/function::remote_uri.3stap.html deleted file mode 100644 index a163def5..00000000 --- a/man/function::remote_uri.3stap.html +++ /dev/null @@ -1,71 +0,0 @@ - -Manpage of FUNCTION::REMOTE_URI - -

FUNCTION::REMOTE_URI

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::remote_uri - The name of this instance in a remote execution. -  -

SYNOPSIS

- -

-

-    remote_uri:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the remote host used to invoke this particular script execution from a swarm of -"stap --remote" -runs. It may not be unique among the swarm. The function returns an empty string if the script was not launched with -"stap --remote". -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::return_str.3stap.html b/man/function::return_str.3stap.html deleted file mode 100644 index 16854411..00000000 --- a/man/function::return_str.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of FUNCTION::RETURN_STR - -

FUNCTION::RETURN_STR

-Section: Errno Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::return_str - Formats the return value as a string -  -

SYNOPSIS

- -

-

-    return_str:string(format:long,ret:long)
-
- -  -

ARGUMENTS

- -

- -format -

-Variable to determine return type base value -
- -

- -ret -

-Return value (typically -$return) -
- -  -

DESCRIPTION

- -

- -This function is used by the syscall tapset, and returns a string. Set format equal to 1 for a decimal, 2 for hex, 3 for octal. -

- -Note that this function is preferred over -returnstr. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::returnstr.3stap.html b/man/function::returnstr.3stap.html deleted file mode 100644 index 3341cd18..00000000 --- a/man/function::returnstr.3stap.html +++ /dev/null @@ -1,76 +0,0 @@ - -Manpage of FUNCTION::RETURNSTR - -

FUNCTION::RETURNSTR

-Section: Errno Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::returnstr - Formats the return value as a string -  -

SYNOPSIS

- -

-

-    returnstr:string(format:long)
-
- -  -

ARGUMENTS

- -

- -format -

-Variable to determine return type base value -
- -  -

DESCRIPTION

- -

- -This function is used by the nd_syscall tapset, and returns a string. Set format equal to 1 for a decimal, 2 for hex, 3 for octal. -

- -Note that this function should only be used in dwarfless probes (i.e. 'kprobe.function("foo")'). Other probes should use -return_str. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::returnval.3stap.html b/man/function::returnval.3stap.html deleted file mode 100644 index a018201d..00000000 --- a/man/function::returnval.3stap.html +++ /dev/null @@ -1,70 +0,0 @@ - -Manpage of FUNCTION::RETURNVAL - -

FUNCTION::RETURNVAL

-Section: Errno Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::returnval - Possible return value of probed function -  -

SYNOPSIS

- -

-

-    returnval:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Return the value of the register in which function values are typically returned. Can be used in probes where -$return -isn't available. This is only a guess of the actual return value and can be totally wrong. Normally only used in dwarfless probes. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::reverse_path_walk.3stap.html b/man/function::reverse_path_walk.3stap.html deleted file mode 100644 index dd34dd04..00000000 --- a/man/function::reverse_path_walk.3stap.html +++ /dev/null @@ -1,74 +0,0 @@ - -Manpage of FUNCTION::REVERSE_PA - -

FUNCTION::REVERSE_PA

-Section: Directory-entry (dentry) Tapse (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::reverse_path_walk - get the full dirent path -  -

SYNOPSIS

- -

-

-    reverse_path_walk:string(dentry:long)
-
- -  -

ARGUMENTS

- -

- -dentry -

-Pointer to dentry. -
- -  -

DESCRIPTION

- -

- -

- -Returns the path name (partial path to mount point). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::s32_arg.3stap.html b/man/function::s32_arg.3stap.html deleted file mode 100644 index 1fc96386..00000000 --- a/man/function::s32_arg.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::S32_ARG - -

FUNCTION::S32_ARG

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::s32_arg - Return function argument as signed 32-bit value -  -

SYNOPSIS

- -

-

-    s32_arg:long(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-index of argument to return -
- -  -

DESCRIPTION

- -

- -Return the signed 32-bit value of argument n, same as int_arg. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::s64_arg.3stap.html b/man/function::s64_arg.3stap.html deleted file mode 100644 index ba5ed366..00000000 --- a/man/function::s64_arg.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::S64_ARG - -

FUNCTION::S64_ARG

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::s64_arg - Return function argument as signed 64-bit value -  -

SYNOPSIS

- -

-

-    s64_arg:long(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-index of argument to return -
- -  -

DESCRIPTION

- -

- -Return the signed 64-bit value of argument n, same as longlong_arg. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sa_flags_str.3stap.html b/man/function::sa_flags_str.3stap.html deleted file mode 100644 index f7fab3fe..00000000 --- a/man/function::sa_flags_str.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::SA_FLAGS_S - -

FUNCTION::SA_FLAGS_S

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sa_flags_str - Returns the string representation of sa_flags -  -

SYNOPSIS

- -

-

-    sa_flags_str:string(sa_flags:long)
-
- -  -

ARGUMENTS

- -

- -sa_flags -

-the set of flags to convert to string. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sa_handler_str.3stap.html b/man/function::sa_handler_str.3stap.html deleted file mode 100644 index b1099f07..00000000 --- a/man/function::sa_handler_str.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::SA_HANDLER - -

FUNCTION::SA_HANDLER

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sa_handler_str - Returns the string representation of an sa_handler -  -

SYNOPSIS

- -

-

-    sa_handler_str(handler:)
-
- -  -

ARGUMENTS

- -

- -handler -

-the sa_handler to convert to string. -
- -  -

DESCRIPTION

- -

- -Returns the string representation of an sa_handler. If it is not SIG_DFL, SIG_IGN or SIG_ERR, it will return the address of the handler. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::set_kernel_char.3stap.html b/man/function::set_kernel_char.3stap.html deleted file mode 100644 index 879f807f..00000000 --- a/man/function::set_kernel_char.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::SET_KERNEL - -

FUNCTION::SET_KERNEL

-Section: String and data writing functi (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::set_kernel_char - Writes a char value to kernel memory -  -

SYNOPSIS

- -

-

-    set_kernel_char(addr:long,val:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to write the char to -
- -

- -val -

-The char which is to be written -
- -  -

DESCRIPTION

- -

- -Writes the char value to a given kernel memory address. Reports an error when writing to the given address fails. Requires the use of guru mode (-g). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::set_kernel_int.3stap.html b/man/function::set_kernel_int.3stap.html deleted file mode 100644 index 0bd039fa..00000000 --- a/man/function::set_kernel_int.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::SET_KERNEL - -

FUNCTION::SET_KERNEL

-Section: String and data writing functi (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::set_kernel_int - Writes an int value to kernel memory -  -

SYNOPSIS

- -

-

-    set_kernel_int(addr:long,val:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to write the int to -
- -

- -val -

-The int which is to be written -
- -  -

DESCRIPTION

- -

- -Writes the int value to a given kernel memory address. Reports an error when writing to the given address fails. Requires the use of guru mode (-g). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::set_kernel_long.3stap.html b/man/function::set_kernel_long.3stap.html deleted file mode 100644 index 6545ce74..00000000 --- a/man/function::set_kernel_long.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::SET_KERNEL - -

FUNCTION::SET_KERNEL

-Section: String and data writing functi (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::set_kernel_long - Writes a long value to kernel memory -  -

SYNOPSIS

- -

-

-    set_kernel_long(addr:long,val:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to write the long to -
- -

- -val -

-The long which is to be written -
- -  -

DESCRIPTION

- -

- -Writes the long value to a given kernel memory address. Reports an error when writing to the given address fails. Requires the use of guru mode (-g). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::set_kernel_pointer.3stap.html b/man/function::set_kernel_pointer.3stap.html deleted file mode 100644 index cf6d8464..00000000 --- a/man/function::set_kernel_pointer.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::SET_KERNEL - -

FUNCTION::SET_KERNEL

-Section: String and data writing functi (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::set_kernel_pointer - Writes a pointer value to kernel memory. -  -

SYNOPSIS

- -

-

-    set_kernel_pointer(addr:long,val:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to write the pointer to -
- -

- -val -

-The pointer which is to be written -
- -  -

DESCRIPTION

- -

- -Writes the pointer value to a given kernel memory address. Reports an error when writing to the given address fails. Requires the use of guru mode (-g). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::set_kernel_short.3stap.html b/man/function::set_kernel_short.3stap.html deleted file mode 100644 index 7371090c..00000000 --- a/man/function::set_kernel_short.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::SET_KERNEL - -

FUNCTION::SET_KERNEL

-Section: String and data writing functi (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::set_kernel_short - Writes a short value to kernel memory -  -

SYNOPSIS

- -

-

-    set_kernel_short(addr:long,val:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to write the short to -
- -

- -val -

-The short which is to be written -
- -  -

DESCRIPTION

- -

- -Writes the short value to a given kernel memory address. Reports an error when writing to the given address fails. Requires the use of guru mode (-g). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::set_kernel_string.3stap.html b/man/function::set_kernel_string.3stap.html deleted file mode 100644 index 3a9c27cf..00000000 --- a/man/function::set_kernel_string.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::SET_KERNEL - -

FUNCTION::SET_KERNEL

-Section: String and data writing functi (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::set_kernel_string - Writes a string to kernel memory -  -

SYNOPSIS

- -

-

-    set_kernel_string(addr:long,val:string)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to write the string to -
- -

- -val -

-The string which is to be written -
- -  -

DESCRIPTION

- -

- -Writes the given string to a given kernel memory address. Reports an error on string copy fault. Requires the use of guru mode (-g). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::set_kernel_string_n.3stap.html b/man/function::set_kernel_string_n.3stap.html deleted file mode 100644 index 42cfbdf0..00000000 --- a/man/function::set_kernel_string_n.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of FUNCTION::SET_KERNEL - -

FUNCTION::SET_KERNEL

-Section: String and data writing functi (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::set_kernel_string_n - Writes a string of given length to kernel memory -  -

SYNOPSIS

- -

-

-    set_kernel_string_n(addr:long,n:long,val:string)
-
- -  -

ARGUMENTS

- -

- -addr -

-The kernel address to write the string to -
- -

- -n -

-The maximum length of the string -
- -

- -val -

-The string which is to be written -
- -  -

DESCRIPTION

- -

- -Writes the given string up to a maximum given length to a given kernel memory address. Reports an error on string copy fault. Requires the use of guru mode (-g). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sid.3stap.html b/man/function::sid.3stap.html deleted file mode 100644 index 5c86eccf..00000000 --- a/man/function::sid.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::SID - -

FUNCTION::SID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sid - Returns the session ID of the current process -  -

SYNOPSIS

- -

-

-    sid:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -The session ID of a process is the process group ID of the session leader. Session ID is stored in the signal_struct since Kernel 2.6.0. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::signal_str.3stap.html b/man/function::signal_str.3stap.html deleted file mode 100644 index 3132c9d8..00000000 --- a/man/function::signal_str.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::SIGNAL_STR - -

FUNCTION::SIGNAL_STR

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::signal_str - Returns the string representation of a signal number -  -

SYNOPSIS

- -

-

-    signal_str(num:)
-
- -  -

ARGUMENTS

- -

- -num -

-the signal number to convert to string. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sigset_mask_str.3stap.html b/man/function::sigset_mask_str.3stap.html deleted file mode 100644 index 3a9b235a..00000000 --- a/man/function::sigset_mask_str.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::SIGSET_MAS - -

FUNCTION::SIGSET_MAS

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sigset_mask_str - Returns the string representation of a sigset -  -

SYNOPSIS

- -

-

-    sigset_mask_str:string(mask:long)
-
- -  -

ARGUMENTS

- -

- -mask -

-the sigset to convert to string. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sock_fam_num2str.3stap.html b/man/function::sock_fam_num2str.3stap.html deleted file mode 100644 index ed32661e..00000000 --- a/man/function::sock_fam_num2str.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::SOCK_FAM_N - -

FUNCTION::SOCK_FAM_N

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sock_fam_num2str - Given a protocol family number, return a string representation -  -

SYNOPSIS

- -

-

-    sock_fam_num2str:string(family:long)
-
- -  -

ARGUMENTS

- -

- -family -

-The family number -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sock_fam_str2num.3stap.html b/man/function::sock_fam_str2num.3stap.html deleted file mode 100644 index ad719c28..00000000 --- a/man/function::sock_fam_str2num.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::SOCK_FAM_S - -

FUNCTION::SOCK_FAM_S

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sock_fam_str2num - Given a protocol family name (string), return the corresponding protocol family number -  -

SYNOPSIS

- -

-

-    sock_fam_str2num:long(family:string)
-
- -  -

ARGUMENTS

- -

- -family -

-The family name -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sock_prot_num2str.3stap.html b/man/function::sock_prot_num2str.3stap.html deleted file mode 100644 index 24141601..00000000 --- a/man/function::sock_prot_num2str.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::SOCK_PROT_ - -

FUNCTION::SOCK_PROT_

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sock_prot_num2str - Given a protocol number, return a string representation -  -

SYNOPSIS

- -

-

-    sock_prot_num2str:string(proto:long)
-
- -  -

ARGUMENTS

- -

- -proto -

-The protocol number -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sock_prot_str2num.3stap.html b/man/function::sock_prot_str2num.3stap.html deleted file mode 100644 index 8aa4aad8..00000000 --- a/man/function::sock_prot_str2num.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::SOCK_PROT_ - -

FUNCTION::SOCK_PROT_

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sock_prot_str2num - Given a protocol name (string), return the corresponding protocol number -  -

SYNOPSIS

- -

-

-    sock_prot_str2num:long(proto:string)
-
- -  -

ARGUMENTS

- -

- -proto -

-The protocol name -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sock_state_num2str.3stap.html b/man/function::sock_state_num2str.3stap.html deleted file mode 100644 index e94ad71b..00000000 --- a/man/function::sock_state_num2str.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::SOCK_STATE - -

FUNCTION::SOCK_STATE

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sock_state_num2str - Given a socket state number, return a string representation -  -

SYNOPSIS

- -

-

-    sock_state_num2str:string(state:long)
-
- -  -

ARGUMENTS

- -

- -state -

-The state number -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sock_state_str2num.3stap.html b/man/function::sock_state_str2num.3stap.html deleted file mode 100644 index 60f48a01..00000000 --- a/man/function::sock_state_str2num.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::SOCK_STATE - -

FUNCTION::SOCK_STATE

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sock_state_str2num - Given a socket state string, return the corresponding state number -  -

SYNOPSIS

- -

-

-    sock_state_str2num:long(state:string)
-
- -  -

ARGUMENTS

- -

- -state -

-The state name -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::speculate.3stap.html b/man/function::speculate.3stap.html deleted file mode 100644 index 5ab05ceb..00000000 --- a/man/function::speculate.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::SPECULATE - -

FUNCTION::SPECULATE

-Section: Speculation (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::speculate - Store a string for possible output later -  -

SYNOPSIS

- -

-

-    speculate(id:long,output:string)
-
- -  -

ARGUMENTS

- -

- -id -

-buffer id to store the information in -
- -

- -output -

-string to write out when commit occurs -
- -  -

DESCRIPTION

- -

- -Add a string to the speculaive buffer for id. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::speculation.3stap.html b/man/function::speculation.3stap.html deleted file mode 100644 index 70820298..00000000 --- a/man/function::speculation.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::SPECULATIO - -

FUNCTION::SPECULATIO

-Section: Speculation (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::speculation - Allocate a new id for speculative output -  -

SYNOPSIS

- -

-

-    speculation:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -

- -The -speculation -function is called when a new speculation buffer is needed. It returns an id for the speculative output. There can be multiple threads being speculated on concurrently. This id is used by other speculation functions to keep the threads separate. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sprint_backtrace.3stap.html b/man/function::sprint_backtrace.3stap.html deleted file mode 100644 index fa1e3a66..00000000 --- a/man/function::sprint_backtrace.3stap.html +++ /dev/null @@ -1,71 +0,0 @@ - -Manpage of FUNCTION::SPRINT_BAC - -

FUNCTION::SPRINT_BAC

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sprint_backtrace - Return stack back trace as string -  -

SYNOPSIS

- -

-

-    sprint_backtrace:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -

- -Returns a simple (kernel) backtrace. One line per address. Includes the symbol name (or hex address if symbol couldn't be resolved) and module name (if found). Includes the offset from the start of the function if found, otherwise the offset will be added to the module (if found, between brackets). Returns the backtrace as string (each line terminated by a newline character). Note that the returned stack will be truncated to MAXSTRINGLEN, to print fuller and richer stacks use -print_backtrace. Equivalent to sprint_stack(backtrace), but more efficient (no need to translate between hex strings and final backtrace string). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sprint_loadavg.3stap.html b/man/function::sprint_loadavg.3stap.html deleted file mode 100644 index e49eed31..00000000 --- a/man/function::sprint_loadavg.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::SPRINT_LOA - -

FUNCTION::SPRINT_LOA

-Section: Kernel Process Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sprint_loadavg - Report a pretty-printed load average -  -

SYNOPSIS

- -

-

-    sprint_loadavg:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns the a string with three decimal numbers in the usual format for 1-, 5- and 15-minute load averages. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sprint_stack.3stap.html b/man/function::sprint_stack.3stap.html deleted file mode 100644 index 03599e4c..00000000 --- a/man/function::sprint_stack.3stap.html +++ /dev/null @@ -1,85 +0,0 @@ - -Manpage of FUNCTION::SPRINT_STA - -

FUNCTION::SPRINT_STA

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sprint_stack - Return stack for kernel addresses from string -  -

SYNOPSIS

- -

-

-    sprint_stack:string(stk:string)
-
- -  -

ARGUMENTS

- -

- -stk -

-String with list of hexadecimal (kernel) addresses -
- -  -

DESCRIPTION

- -

- -Perform a symbolic lookup of the addresses in the given string, which is assumed to be the result of a prior call to -backtrace. -

- -Returns a simple backtrace from the given hex string. One line per address. Includes the symbol name (or hex address if symbol couldn't be resolved) and module name (if found). Includes the offset from the start of the function if found, otherwise the offset will be added to the module (if found, between brackets). Returns the backtrace as string (each line terminated by a newline character). Note that the returned stack will be truncated to MAXSTRINGLEN, to print fuller and richer stacks use print_stack. -  -

NOTE

- -

- -it is recommended to use -sprint_syms -instead of this function. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
NOTE
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sprint_syms.3stap.html b/man/function::sprint_syms.3stap.html deleted file mode 100644 index 4e1dcd8d..00000000 --- a/man/function::sprint_syms.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::SPRINT_SYM - -

FUNCTION::SPRINT_SYM

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sprint_syms - Return stack for kernel addresses from string -  -

SYNOPSIS

- -

-

-    sprint_syms(callers:string)
-
- -  -

ARGUMENTS

- -

- -callers -

-String with list of hexadecimal (kernel) addresses -
- -  -

DESCRIPTION

- -

- -Perform a symbolic lookup of the addresses in the given string, which are assumed to be the result of a prior calls to -stack, -callers, and similar functions. -

- -Returns a simple backtrace from the given hex string. One line per address. Includes the symbol name (or hex address if symbol couldn't be resolved) and module name (if found), as obtained from -symdata. Includes the offset from the start of the function if found, otherwise the offset will be added to the module (if found, between brackets). Returns the backtrace as string (each line terminated by a newline character). Note that the returned stack will be truncated to MAXSTRINGLEN, to print fuller and richer stacks use -print_syms. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sprint_ubacktrace.3stap.html b/man/function::sprint_ubacktrace.3stap.html deleted file mode 100644 index c7cfbff6..00000000 --- a/man/function::sprint_ubacktrace.3stap.html +++ /dev/null @@ -1,78 +0,0 @@ - -Manpage of FUNCTION::SPRINT_UBA - -

FUNCTION::SPRINT_UBA

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sprint_ubacktrace - Return stack back trace for current user-space task as string. -  -

SYNOPSIS

- -

-

-    sprint_ubacktrace:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -

- -Returns a simple backtrace for the current task. One line per address. Includes the symbol name (or hex address if symbol couldn't be resolved) and module name (if found). Includes the offset from the start of the function if found, otherwise the offset will be added to the module (if found, between brackets). Returns the backtrace as string (each line terminated by a newline character). Note that the returned stack will be truncated to MAXSTRINGLEN, to print fuller and richer stacks use -print_ubacktrace. Equivalent to sprint_ustack(ubacktrace), but more efficient (no need to translate between hex strings and final backtrace string). -  -

NOTE

- -

- -To get (full) backtraces for user space applications and shared shared libraries not mentioned in the current script run stap with -d /path/to/exe-or-so and/or add --ldd to load all needed unwind data. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
NOTE
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sprint_ustack.3stap.html b/man/function::sprint_ustack.3stap.html deleted file mode 100644 index 001cbc84..00000000 --- a/man/function::sprint_ustack.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of FUNCTION::SPRINT_UST - -

FUNCTION::SPRINT_UST

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sprint_ustack - Return stack for the current task from string. -  -

SYNOPSIS

- -

-

-    sprint_ustack:string(stk:string)
-
- -  -

ARGUMENTS

- -

- -stk -

-String with list of hexadecimal addresses for the current task. -
- -  -

DESCRIPTION

- -

- -Perform a symbolic lookup of the addresses in the given string, which is assumed to be the result of a prior call to -ubacktrace -for the current task. -

- -Returns a simple backtrace from the given hex string. One line per address. Includes the symbol name (or hex address if symbol couldn't be resolved) and module name (if found). Includes the offset from the start of the function if found, otherwise the offset will be added to the module (if found, between brackets). Returns the backtrace as string (each line terminated by a newline character). Note that the returned stack will be truncated to MAXSTRINGLEN, to print fuller and richer stacks use print_ustack. -  -

NOTE

- -

- -it is recommended to use -sprint_usyms -instead of this function. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
NOTE
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::sprint_usyms.3stap.html b/man/function::sprint_usyms.3stap.html deleted file mode 100644 index 5e1a0b01..00000000 --- a/man/function::sprint_usyms.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::SPRINT_USY - -

FUNCTION::SPRINT_USY

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::sprint_usyms - Return stack for user addresses from string -  -

SYNOPSIS

- -

-

-    sprint_usyms(callers:string)
-
- -  -

ARGUMENTS

- -

- -callers -

-String with list of hexadecimal (user) addresses -
- -  -

DESCRIPTION

- -

- -Perform a symbolic lookup of the addresses in the given string, which are assumed to be the result of a prior calls to -ustack, -ucallers, and similar functions. -

- -Returns a simple backtrace from the given hex string. One line per address. Includes the symbol name (or hex address if symbol couldn't be resolved) and module name (if found), as obtained from -usymdata. Includes the offset from the start of the function if found, otherwise the offset will be added to the module (if found, between brackets). Returns the backtrace as string (each line terminated by a newline character). Note that the returned stack will be truncated to MAXSTRINGLEN, to print fuller and richer stacks use -print_usyms. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::stack.3stap.html b/man/function::stack.3stap.html deleted file mode 100644 index 25417f24..00000000 --- a/man/function::stack.3stap.html +++ /dev/null @@ -1,74 +0,0 @@ - -Manpage of FUNCTION::STACK - -

FUNCTION::STACK

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::stack - Return address at given depth of kernel stack backtrace -  -

SYNOPSIS

- -

-

-    stack:long(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-number of levels to descend in the stack. -
- -  -

DESCRIPTION

- -

- -Performs a simple (kernel) backtrace, and returns the element at the specified position. The results of the backtrace itself are cached, so that the backtrace computation is performed at most once no matter how many times -stack -is called, or in what order. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::stack_size.3stap.html b/man/function::stack_size.3stap.html deleted file mode 100644 index f2a0982a..00000000 --- a/man/function::stack_size.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::STACK_SIZE - -

FUNCTION::STACK_SIZE

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::stack_size - Return the size of the kernel stack -  -

SYNOPSIS

- -

-

-    stack_size:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the size of the kernel stack. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::stack_unused.3stap.html b/man/function::stack_unused.3stap.html deleted file mode 100644 index acd22726..00000000 --- a/man/function::stack_unused.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::STACK_UNUS - -

FUNCTION::STACK_UNUS

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::stack_unused - Returns the amount of kernel stack currently available -  -

SYNOPSIS

- -

-

-    stack_unused:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function determines how many bytes are currently available in the kernel stack. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::stack_used.3stap.html b/man/function::stack_used.3stap.html deleted file mode 100644 index 8fcbb7f3..00000000 --- a/man/function::stack_used.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::STACK_USED - -

FUNCTION::STACK_USED

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::stack_used - Returns the amount of kernel stack used -  -

SYNOPSIS

- -

-

-    stack_used:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function determines how many bytes are currently used in the kernel stack. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::start_stopwatch.3stap.html b/man/function::start_stopwatch.3stap.html deleted file mode 100644 index 54d148f9..00000000 --- a/man/function::start_stopwatch.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of FUNCTION::START_STOP - -

FUNCTION::START_STOP

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::start_stopwatch - Start a stopwatch -  -

SYNOPSIS

- -

-

-    start_stopwatch(name:string)
-
- -  -

ARGUMENTS

- -

- -name -

-the stopwatch name -
- -  -

DESCRIPTION

- -

- -Start stopwatch -name. Creates stopwatch -name -if it does not currently exist. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::stop_stopwatch.3stap.html b/man/function::stop_stopwatch.3stap.html deleted file mode 100644 index d84995c4..00000000 --- a/man/function::stop_stopwatch.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of FUNCTION::STOP_STOPW - -

FUNCTION::STOP_STOPW

-Section: Timestamp Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::stop_stopwatch - Stop a stopwatch -  -

SYNOPSIS

- -

-

-    stop_stopwatch(name:string)
-
- -  -

ARGUMENTS

- -

- -name -

-the stopwatch name -
- -  -

DESCRIPTION

- -

- -Stop stopwatch -name. Creates stopwatch -name -if it does not currently exist. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::stp_pid.3stap.html b/man/function::stp_pid.3stap.html deleted file mode 100644 index 77b77db4..00000000 --- a/man/function::stp_pid.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::STP_PID - -

FUNCTION::STP_PID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::stp_pid - The process id of the stapio process -  -

SYNOPSIS

- -

-

-    stp_pid:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the process id of the stapio process that launched this script. There could be other SystemTap scripts and stapio processes running on the system. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::str_replace.3stap.html b/man/function::str_replace.3stap.html deleted file mode 100644 index d513b107..00000000 --- a/man/function::str_replace.3stap.html +++ /dev/null @@ -1,89 +0,0 @@ - -Manpage of FUNCTION::STR_REPLAC - -

FUNCTION::STR_REPLAC

-Section: A collection of standard strin (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::str_replace - str_replace Replaces all instances of a substring with another -  -

SYNOPSIS

- -

-

-    str_replace:string(prnt_str:string,srch_str:string,rplc_str:string)
-
- -  -

ARGUMENTS

- -

- -prnt_str -

-the string to search and replace in -
- -

- -srch_str -

-the substring which is used to search in -prnt_str -string -
- -

- -rplc_str -

-the substring which is used to replace -srch_str -
- -  -

DESCRIPTION

- -

- -This function returns the given string with substrings replaced. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::stringat.3stap.html b/man/function::stringat.3stap.html deleted file mode 100644 index 764831fd..00000000 --- a/man/function::stringat.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::STRINGAT - -

FUNCTION::STRINGAT

-Section: A collection of standard strin (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::stringat - Returns the char at a given position in the string -  -

SYNOPSIS

- -

-

-    stringat:long(str:string,pos:long)
-
- -  -

ARGUMENTS

- -

- -str -

-the string to fetch the character from -
- -

- -pos -

-the position to get the character from (first character is 0) -
- -  -

DESCRIPTION

- -

- -This function returns the character at a given position in the string or zero if the string doesn't have as many characters. Reports an error if pos is out of bounds. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::strlen.3stap.html b/man/function::strlen.3stap.html deleted file mode 100644 index 39ab5773..00000000 --- a/man/function::strlen.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::STRLEN - -

FUNCTION::STRLEN

-Section: A collection of standard strin (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::strlen - Returns the length of a string -  -

SYNOPSIS

- -

-

-    strlen:long(s:string)
-
- -  -

ARGUMENTS

- -

- -s -

-the string -
- -  -

DESCRIPTION

- -

- -This function returns the length of the string, which can be zero up to MAXSTRINGLEN. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::strtol.3stap.html b/man/function::strtol.3stap.html deleted file mode 100644 index 38274d4b..00000000 --- a/man/function::strtol.3stap.html +++ /dev/null @@ -1,81 +0,0 @@ - -Manpage of FUNCTION::STRTOL - -

FUNCTION::STRTOL

-Section: A collection of standard strin (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::strtol - strtol - Convert a string to a long -  -

SYNOPSIS

- -

-

-    strtol:long(str:string,base:long)
-
- -  -

ARGUMENTS

- -

- -str -

-string to convert -
- -

- -base -

-the base to use -
- -  -

DESCRIPTION

- -

- -This function converts the string representation of a number to an integer. The -base -parameter indicates the number base to assume for the string (eg. 16 for hex, 8 for octal, 2 for binary). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::substr.3stap.html b/man/function::substr.3stap.html deleted file mode 100644 index 8645d849..00000000 --- a/man/function::substr.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of FUNCTION::SUBSTR - -

FUNCTION::SUBSTR

-Section: A collection of standard strin (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::substr - Returns a substring -  -

SYNOPSIS

- -

-

-    substr:string(str:string,start:long,length:long)
-
- -  -

ARGUMENTS

- -

- -str -

-the string to take a substring from -
- -

- -start -

-starting position of the extracted string (first character is 0) -
- -

- -length -

-length of string to return -
- -  -

DESCRIPTION

- -

- -Returns the substring of the given string at the given start position with the given length (or smaller if the length of the original string is less than start + length, or length is bigger than MAXSTRINGLEN). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::symdata.3stap.html b/man/function::symdata.3stap.html deleted file mode 100644 index 453f28be..00000000 --- a/man/function::symdata.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::SYMDATA - -

FUNCTION::SYMDATA

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::symdata - Return the kernel symbol and module offset for the address -  -

SYNOPSIS

- -

-

-    symdata:string(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The address to translate -
- -  -

DESCRIPTION

- -

- -Returns the (function) symbol name associated with the given address if known, the offset from the start and size of the symbol, plus module name (between brackets). If symbol is unknown, but module is known, the offset inside the module, plus the size of the module is added. If any element is not known it will be omitted and if the symbol name is unknown it will return the hex string for the given address. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::symname.3stap.html b/man/function::symname.3stap.html deleted file mode 100644 index 44c6cae2..00000000 --- a/man/function::symname.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::SYMNAME - -

FUNCTION::SYMNAME

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::symname - Return the kernel symbol associated with the given address -  -

SYNOPSIS

- -

-

-    symname:string(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The address to translate -
- -  -

DESCRIPTION

- -

- -Returns the (function) symbol name associated with the given address if known. If not known it will return the hex string representation of addr. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::system.3stap.html b/man/function::system.3stap.html deleted file mode 100644 index 5397e12a..00000000 --- a/man/function::system.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::SYSTEM - -

FUNCTION::SYSTEM

-Section: Shell command functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::system - Issue a command to the system -  -

SYNOPSIS

- -

-

-    system(cmd:string)
-
- -  -

ARGUMENTS

- -

- -cmd -

-the command to issue to the system -
- -  -

DESCRIPTION

- -

- -This function runs a command on the system. The command is started in the background some time after the current probe completes. The command is run with the same UID as the user running the stap or staprun command. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::target.3stap.html b/man/function::target.3stap.html deleted file mode 100644 index 1f4701b1..00000000 --- a/man/function::target.3stap.html +++ /dev/null @@ -1,78 +0,0 @@ - -Manpage of FUNCTION::TARGET - -

FUNCTION::TARGET

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::target - Return the process ID of the target process -  -

SYNOPSIS

- -

-

-    target:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the process ID of the target process. This is useful in conjunction with the -x PID or -c CMD command-line options to stap. An example of its use is to create scripts that filter on a specific process. -

- --x <pid> -target -returns the pid specified by -x -

- --c <command> -target -returns the pid for the executed command specified by -c -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::target_set_pid.3stap.html b/man/function::target_set_pid.3stap.html deleted file mode 100644 index f85574e9..00000000 --- a/man/function::target_set_pid.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of FUNCTION::TARGET_SET - -

FUNCTION::TARGET_SET

-Section: Kernel Process Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::target_set_pid - Does pid descend from target process? -  -

SYNOPSIS

- -

-

-    target_set_pid(pid:)
-
- -  -

ARGUMENTS

- -

- -pid -

-The pid of the process to query -
- -  -

DESCRIPTION

- -

- -This function returns whether the given process-id is within the -"target set", that is whether it is a descendant of the top-level -target -process. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::target_set_report.3stap.html b/man/function::target_set_report.3stap.html deleted file mode 100644 index 794902b8..00000000 --- a/man/function::target_set_report.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::TARGET_SET - -

FUNCTION::TARGET_SET

-Section: Kernel Process Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::target_set_report - Print a report about the target set -  -

SYNOPSIS

- -

-

-    target_set_report()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function prints a report about the processes in the target set, and their ancestry. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_ancestry.3stap.html b/man/function::task_ancestry.3stap.html deleted file mode 100644 index 16e1ab61..00000000 --- a/man/function::task_ancestry.3stap.html +++ /dev/null @@ -1,80 +0,0 @@ - -Manpage of FUNCTION::TASK_ANCES - -

FUNCTION::TASK_ANCES

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_ancestry - The ancestry of the given task -  -

SYNOPSIS

- -

-

-    task_ancestry:string(task:long,with_time:long)
-
- -  -

ARGUMENTS

- -

- -task -

-task_struct pointer -
- -

- -with_time -

-set to 1 to also print the start time of processes (given as a delta from boot time) -
- -  -

DESCRIPTION

- -

- -Return the ancestry of the given task in the form of -"grandparent_process=>parent_process=>process". -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_backtrace.3stap.html b/man/function::task_backtrace.3stap.html deleted file mode 100644 index ac8351d3..00000000 --- a/man/function::task_backtrace.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_BACKT - -

FUNCTION::TASK_BACKT

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_backtrace - Hex backtrace of an arbitrary task -  -

SYNOPSIS

- -

-

-    task_backtrace:string(task:long)
-
- -  -

ARGUMENTS

- -

- -task -

-pointer to task_struct -
- -  -

DESCRIPTION

- -

- -This function returns a string of hex addresses that are a backtrace of the stack of a particular task Output may be truncated as per maximum string length. Deprecated in SystemTap 1.6. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_cpu.3stap.html b/man/function::task_cpu.3stap.html deleted file mode 100644 index 62f7884f..00000000 --- a/man/function::task_cpu.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_CPU - -

FUNCTION::TASK_CPU

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_cpu - The scheduled cpu of the task -  -

SYNOPSIS

- -

-

-    task_cpu:long(task:long)
-
- -  -

ARGUMENTS

- -

- -task -

-task_struct pointer -
- -  -

DESCRIPTION

- -

- -This function returns the scheduled cpu for the given task. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_current.3stap.html b/man/function::task_current.3stap.html deleted file mode 100644 index f8edab01..00000000 --- a/man/function::task_current.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::TASK_CURRE - -

FUNCTION::TASK_CURRE

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_current - The current task_struct of the current task -  -

SYNOPSIS

- -

-

-    task_current:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the task_struct representing the current process. This address can be passed to the various task_*() functions to extract more task-specific data. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_dentry_path.3stap.html b/man/function::task_dentry_path.3stap.html deleted file mode 100644 index a5c52522..00000000 --- a/man/function::task_dentry_path.3stap.html +++ /dev/null @@ -1,88 +0,0 @@ - -Manpage of FUNCTION::TASK_DENTR - -

FUNCTION::TASK_DENTR

-Section: Directory-entry (dentry) Tapse (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_dentry_path - get the full dentry path -  -

SYNOPSIS

- -

-

-    task_dentry_path:string(task:long,dentry:long,vfsmnt:long)
-
- -  -

ARGUMENTS

- -

- -task -

-task_struct pointer. -
- -

- -dentry -

-direntry pointer. -
- -

- -vfsmnt -

-vfsmnt pointer. -
- -  -

DESCRIPTION

- -

- -

- -Returns the full dirent name (full path to the root), like the kernel d_path function. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_egid.3stap.html b/man/function::task_egid.3stap.html deleted file mode 100644 index 04abc192..00000000 --- a/man/function::task_egid.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_EGID - -

FUNCTION::TASK_EGID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_egid - The effective group identifier of the task -  -

SYNOPSIS

- -

-

-    task_egid:long(task:long)
-
- -  -

ARGUMENTS

- -

- -task -

-task_struct pointer -
- -  -

DESCRIPTION

- -

- -This function returns the effective group id of the given task. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_euid.3stap.html b/man/function::task_euid.3stap.html deleted file mode 100644 index efc284dc..00000000 --- a/man/function::task_euid.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_EUID - -

FUNCTION::TASK_EUID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_euid - The effective user identifier of the task -  -

SYNOPSIS

- -

-

-    task_euid:long(task:long)
-
- -  -

ARGUMENTS

- -

- -task -

-task_struct pointer -
- -  -

DESCRIPTION

- -

- -This function returns the effective user id of the given task. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_execname.3stap.html b/man/function::task_execname.3stap.html deleted file mode 100644 index 6cfd11a1..00000000 --- a/man/function::task_execname.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_EXECN - -

FUNCTION::TASK_EXECN

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_execname - The name of the task -  -

SYNOPSIS

- -

-

-    task_execname:string(task:long)
-
- -  -

ARGUMENTS

- -

- -task -

-task_struct pointer -
- -  -

DESCRIPTION

- -

- -Return the name of the given task. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_gid.3stap.html b/man/function::task_gid.3stap.html deleted file mode 100644 index 2dbd6bb4..00000000 --- a/man/function::task_gid.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_GID - -

FUNCTION::TASK_GID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_gid - The group identifier of the task -  -

SYNOPSIS

- -

-

-    task_gid:long(task:long)
-
- -  -

ARGUMENTS

- -

- -task -

-task_struct pointer -
- -  -

DESCRIPTION

- -

- -This function returns the group id of the given task. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_max_file_handles.3stap.html b/man/function::task_max_file_handles.3stap.html deleted file mode 100644 index 1b1cb816..00000000 --- a/man/function::task_max_file_handles.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_MAX_F - -

FUNCTION::TASK_MAX_F

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_max_file_handles - The max number of open files for the task -  -

SYNOPSIS

- -

-

-    task_max_file_handles:long(task:long)
-
- -  -

ARGUMENTS

- -

- -task -

-task_struct pointer -
- -  -

DESCRIPTION

- -

- -This function returns the maximum number of file handlers for the given task. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_nice.3stap.html b/man/function::task_nice.3stap.html deleted file mode 100644 index 38aa870c..00000000 --- a/man/function::task_nice.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_NICE - -

FUNCTION::TASK_NICE

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_nice - The nice value of the task -  -

SYNOPSIS

- -

-

-    task_nice:long(task:long)
-
- -  -

ARGUMENTS

- -

- -task -

-task_struct pointer -
- -  -

DESCRIPTION

- -

- -This function returns the nice value of the given task. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_open_file_handles.3stap.html b/man/function::task_open_file_handles.3stap.html deleted file mode 100644 index 8ab2777a..00000000 --- a/man/function::task_open_file_handles.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_OPEN_ - -

FUNCTION::TASK_OPEN_

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_open_file_handles - The number of open files of the task -  -

SYNOPSIS

- -

-

-    task_open_file_handles:long(task:long)
-
- -  -

ARGUMENTS

- -

- -task -

-task_struct pointer -
- -  -

DESCRIPTION

- -

- -This function returns the number of open file handlers for the given task. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_parent.3stap.html b/man/function::task_parent.3stap.html deleted file mode 100644 index ae57a19a..00000000 --- a/man/function::task_parent.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_PAREN - -

FUNCTION::TASK_PAREN

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_parent - The task_struct of the parent task -  -

SYNOPSIS

- -

-

-    task_parent:long(task:long)
-
- -  -

ARGUMENTS

- -

- -task -

-task_struct pointer -
- -  -

DESCRIPTION

- -

- -This function returns the parent task_struct of the given task. This address can be passed to the various task_*() functions to extract more task-specific data. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_pid.3stap.html b/man/function::task_pid.3stap.html deleted file mode 100644 index fb5570d4..00000000 --- a/man/function::task_pid.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_PID - -

FUNCTION::TASK_PID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_pid - The process identifier of the task -  -

SYNOPSIS

- -

-

-    task_pid:long(task:long)
-
- -  -

ARGUMENTS

- -

- -task -

-task_struct pointer -
- -  -

DESCRIPTION

- -

- -This fucntion returns the process id of the given task. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_prio.3stap.html b/man/function::task_prio.3stap.html deleted file mode 100644 index 7f5368b8..00000000 --- a/man/function::task_prio.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_PRIO - -

FUNCTION::TASK_PRIO

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_prio - The priority value of the task -  -

SYNOPSIS

- -

-

-    task_prio:long(task:long)
-
- -  -

ARGUMENTS

- -

- -task -

-task_struct pointer -
- -  -

DESCRIPTION

- -

- -This function returns the priority value of the given task. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_start_time.3stap.html b/man/function::task_start_time.3stap.html deleted file mode 100644 index 6f57ef44..00000000 --- a/man/function::task_start_time.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_START - -

FUNCTION::TASK_START

-Section: Task Time Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_start_time - Start time of the given task -  -

SYNOPSIS

- -

-

-    task_start_time:long(tid:long)
-
- -  -

ARGUMENTS

- -

- -tid -

-Thread id of the given task -
- -  -

DESCRIPTION

- -

- -Returns the start time of the given task in nanoseconds since boot time or 0 if the task does not exist. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_state.3stap.html b/man/function::task_state.3stap.html deleted file mode 100644 index 1f4c817f..00000000 --- a/man/function::task_state.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_STATE - -

FUNCTION::TASK_STATE

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_state - The state of the task -  -

SYNOPSIS

- -

-

-    task_state:long(task:long)
-
- -  -

ARGUMENTS

- -

- -task -

-task_struct pointer -
- -  -

DESCRIPTION

- -

- -Return the state of the given task, one of: TASK_RUNNING (0), TASK_INTERRUPTIBLE (1), TASK_UNINTERRUPTIBLE (2), TASK_STOPPED (4), TASK_TRACED (8), EXIT_ZOMBIE (16), or EXIT_DEAD (32). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_stime.3stap.html b/man/function::task_stime.3stap.html deleted file mode 100644 index 3b72f6db..00000000 --- a/man/function::task_stime.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::TASK_STIME - -

FUNCTION::TASK_STIME

-Section: Task Time Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_stime - System time of the current task -  -

SYNOPSIS

- -

-

-    task_stime:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns the system time of the current task in cputime. Does not include any time used by other tasks in this process, nor does it include any time of the children of this task. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_stime_tid.3stap.html b/man/function::task_stime_tid.3stap.html deleted file mode 100644 index 77acf2dc..00000000 --- a/man/function::task_stime_tid.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_STIME - -

FUNCTION::TASK_STIME

-Section: Task Time Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_stime_tid - System time of the given task -  -

SYNOPSIS

- -

-

-    task_stime_tid:long(tid:long)
-
- -  -

ARGUMENTS

- -

- -tid -

-Thread id of the given task -
- -  -

DESCRIPTION

- -

- -Returns the system time of the given task in cputime, or zero if the task doesn't exist. Does not include any time used by other tasks in this process, nor does it include any time of the children of this task. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_tid.3stap.html b/man/function::task_tid.3stap.html deleted file mode 100644 index eb3fdd83..00000000 --- a/man/function::task_tid.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_TID - -

FUNCTION::TASK_TID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_tid - The thread identifier of the task -  -

SYNOPSIS

- -

-

-    task_tid:long(task:long)
-
- -  -

ARGUMENTS

- -

- -task -

-task_struct pointer -
- -  -

DESCRIPTION

- -

- -This function returns the thread id of the given task. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_time_string.3stap.html b/man/function::task_time_string.3stap.html deleted file mode 100644 index 0cc941d1..00000000 --- a/man/function::task_time_string.3stap.html +++ /dev/null @@ -1,69 +0,0 @@ - -Manpage of FUNCTION::TASK_TIME_ - -

FUNCTION::TASK_TIME_

-Section: Task Time Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_time_string - Human readable string of task time usage -  -

SYNOPSIS

- -

-

-    task_time_string:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns a human readable string showing the user and system time the current task has used up to now. For example -"usr: 0m12.908s, sys: 1m6.851s". -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_time_string_tid.3stap.html b/man/function::task_time_string_tid.3stap.html deleted file mode 100644 index 3a1bf25b..00000000 --- a/man/function::task_time_string_tid.3stap.html +++ /dev/null @@ -1,73 +0,0 @@ - -Manpage of FUNCTION::TASK_TIME_ - -

FUNCTION::TASK_TIME_

-Section: Task Time Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_time_string_tid - Human readable string of task time usage -  -

SYNOPSIS

- -

-

-    task_time_string_tid:string(tid:long)
-
- -  -

ARGUMENTS

- -

- -tid -

-Thread id of the given task -
- -  -

DESCRIPTION

- -

- -Returns a human readable string showing the user and system time the given task has used up to now. For example -"usr: 0m12.908s, sys: 1m6.851s". -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_uid.3stap.html b/man/function::task_uid.3stap.html deleted file mode 100644 index 36d5ae7b..00000000 --- a/man/function::task_uid.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_UID - -

FUNCTION::TASK_UID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_uid - The user identifier of the task -  -

SYNOPSIS

- -

-

-    task_uid:long(task:long)
-
- -  -

ARGUMENTS

- -

- -task -

-task_struct pointer -
- -  -

DESCRIPTION

- -

- -This function returns the user id of the given task. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_utime.3stap.html b/man/function::task_utime.3stap.html deleted file mode 100644 index 835b93d2..00000000 --- a/man/function::task_utime.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::TASK_UTIME - -

FUNCTION::TASK_UTIME

-Section: Task Time Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_utime - User time of the current task -  -

SYNOPSIS

- -

-

-    task_utime:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns the user time of the current task in cputime. Does not include any time used by other tasks in this process, nor does it include any time of the children of this task. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::task_utime_tid.3stap.html b/man/function::task_utime_tid.3stap.html deleted file mode 100644 index b5f5e207..00000000 --- a/man/function::task_utime_tid.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TASK_UTIME - -

FUNCTION::TASK_UTIME

-Section: Task Time Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::task_utime_tid - User time of the given task -  -

SYNOPSIS

- -

-

-    task_utime_tid:long(tid:long)
-
- -  -

ARGUMENTS

- -

- -tid -

-Thread id of the given task -
- -  -

DESCRIPTION

- -

- -Returns the user time of the given task in cputime, or zero if the task doesn't exist. Does not include any time used by other tasks in this process, nor does it include any time of the children of this task. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::tcpmib_filter_key.3stap.html b/man/function::tcpmib_filter_key.3stap.html deleted file mode 100644 index 5ad0145a..00000000 --- a/man/function::tcpmib_filter_key.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of FUNCTION::TCPMIB_FIL - -

FUNCTION::TCPMIB_FIL

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::tcpmib_filter_key - Default filter function for tcpmib.* probes -  -

SYNOPSIS

- -

-

-    tcpmib_filter_key:long(sk:long,op:long)
-
- -  -

ARGUMENTS

- -

- -sk -

-pointer to the struct sock being acted on -
- -

- -op -

-value to be counted if -sk -passes the filter -
- -  -

DESCRIPTION

- -

- -This function is a default filter function. The user can replace this function with their own. The user-supplied filter function returns an index key based on the values in -sk. A return value of 0 means this particular -sk -should be not be counted. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::tcpmib_get_state.3stap.html b/man/function::tcpmib_get_state.3stap.html deleted file mode 100644 index c2d0fe81..00000000 --- a/man/function::tcpmib_get_state.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TCPMIB_GET - -

FUNCTION::TCPMIB_GET

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::tcpmib_get_state - Get a socket's state -  -

SYNOPSIS

- -

-

-    tcpmib_get_state:long(sk:long)
-
- -  -

ARGUMENTS

- -

- -sk -

-pointer to a struct sock -
- -  -

DESCRIPTION

- -

- -Returns the sk_state from a struct sock. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::tcpmib_local_addr.3stap.html b/man/function::tcpmib_local_addr.3stap.html deleted file mode 100644 index 307b711d..00000000 --- a/man/function::tcpmib_local_addr.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TCPMIB_LOC - -

FUNCTION::TCPMIB_LOC

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::tcpmib_local_addr - Get the source address -  -

SYNOPSIS

- -

-

-    tcpmib_local_addr:long(sk:long)
-
- -  -

ARGUMENTS

- -

- -sk -

-pointer to a struct inet_sock -
- -  -

DESCRIPTION

- -

- -Returns the saddr from a struct inet_sock in host order. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::tcpmib_local_port.3stap.html b/man/function::tcpmib_local_port.3stap.html deleted file mode 100644 index 1b8fa2d4..00000000 --- a/man/function::tcpmib_local_port.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TCPMIB_LOC - -

FUNCTION::TCPMIB_LOC

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::tcpmib_local_port - Get the local port -  -

SYNOPSIS

- -

-

-    tcpmib_local_port:long(sk:long)
-
- -  -

ARGUMENTS

- -

- -sk -

-pointer to a struct inet_sock -
- -  -

DESCRIPTION

- -

- -Returns the sport from a struct inet_sock in host order. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::tcpmib_remote_addr.3stap.html b/man/function::tcpmib_remote_addr.3stap.html deleted file mode 100644 index 24f75681..00000000 --- a/man/function::tcpmib_remote_addr.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TCPMIB_REM - -

FUNCTION::TCPMIB_REM

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::tcpmib_remote_addr - Get the remote address -  -

SYNOPSIS

- -

-

-    tcpmib_remote_addr:long(sk:long)
-
- -  -

ARGUMENTS

- -

- -sk -

-pointer to a struct inet_sock -
- -  -

DESCRIPTION

- -

- -Returns the daddr from a struct inet_sock in host order. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::tcpmib_remote_port.3stap.html b/man/function::tcpmib_remote_port.3stap.html deleted file mode 100644 index db5696cd..00000000 --- a/man/function::tcpmib_remote_port.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TCPMIB_REM - -

FUNCTION::TCPMIB_REM

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::tcpmib_remote_port - Get the remote port -  -

SYNOPSIS

- -

-

-    tcpmib_remote_port:long(sk:long)
-
- -  -

ARGUMENTS

- -

- -sk -

-pointer to a struct inet_sock -
- -  -

DESCRIPTION

- -

- -Returns the dport from a struct inet_sock in host order. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::text_str.3stap.html b/man/function::text_str.3stap.html deleted file mode 100644 index 70d3afa9..00000000 --- a/man/function::text_str.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::TEXT_STR - -

FUNCTION::TEXT_STR

-Section: A collection of standard strin (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::text_str - Escape any non-printable chars in a string -  -

SYNOPSIS

- -

-

-    text_str:string(input:string)
-
- -  -

ARGUMENTS

- -

- -input -

-the string to escape -
- -  -

DESCRIPTION

- -

- -This function accepts a string argument, and any ASCII characters that are not printable are replaced by the corresponding escape sequence in the returned string. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::text_strn.3stap.html b/man/function::text_strn.3stap.html deleted file mode 100644 index 770d1d8c..00000000 --- a/man/function::text_strn.3stap.html +++ /dev/null @@ -1,88 +0,0 @@ - -Manpage of FUNCTION::TEXT_STRN - -

FUNCTION::TEXT_STRN

-Section: A collection of standard strin (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::text_strn - Escape any non-printable chars in a string -  -

SYNOPSIS

- -

-

-    text_strn:string(input:string,len:long,quoted:long)
-
- -  -

ARGUMENTS

- -

- -input -

-the string to escape -
- -

- -len -

-maximum length of string to return (0 implies MAXSTRINGLEN) -
- -

- -quoted -

-put double quotes around the string. If input string is truncated it will have -"..." -after the second quote -
- -  -

DESCRIPTION

- -

- -This function accepts a string of designated length, and any ASCII characters that are not printable are replaced by the corresponding escape sequence in the returned string. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::thread_indent.3stap.html b/man/function::thread_indent.3stap.html deleted file mode 100644 index 4adeb9ec..00000000 --- a/man/function::thread_indent.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::THREAD_IND - -

FUNCTION::THREAD_IND

-Section: Utility functions for using an (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::thread_indent - returns an amount of space with the current task information -  -

SYNOPSIS

- -

-

-    thread_indent:string(delta:long)
-
- -  -

ARGUMENTS

- -

- -delta -

-the amount of space added/removed for each call -
- -  -

DESCRIPTION

- -

- -This function returns a string with appropriate indentation for a thread. Call it with a small positive or matching negative delta. If this is the real outermost, initial level of indentation, then the function resets the relative timestamp base to zero. An example is shown at the end of this file. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::thread_indent_depth.3stap.html b/man/function::thread_indent_depth.3stap.html deleted file mode 100644 index 5cad19f5..00000000 --- a/man/function::thread_indent_depth.3stap.html +++ /dev/null @@ -1,73 +0,0 @@ - -Manpage of FUNCTION::THREAD_IND - -

FUNCTION::THREAD_IND

-Section: Utility functions for using an (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::thread_indent_depth - returns the nested-depth of the current task -  -

SYNOPSIS

- -

-

-    thread_indent_depth:long(delta:long)
-
- -  -

ARGUMENTS

- -

- -delta -

-the amount of depth added/removed for each call -
- -  -

DESCRIPTION

- -

- -This function returns an integer equal to the nested function-call depth starting from the outermost initial level. This function is useful for saving space (consumed by whitespace) in traces with long nested function calls. Use this function in a similar fashion to -thread_indent, i.e., in call-probe, use thread_indent_depth(1) and in return-probe, use thread_indent_depth(-1) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::tid.3stap.html b/man/function::tid.3stap.html deleted file mode 100644 index 5a9cac76..00000000 --- a/man/function::tid.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::TID - -

FUNCTION::TID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::tid - Returns the thread ID of a target process -  -

SYNOPSIS

- -

-

-    tid:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the thread ID of the target process. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::tokenize.3stap.html b/man/function::tokenize.3stap.html deleted file mode 100644 index 5f72cb00..00000000 --- a/man/function::tokenize.3stap.html +++ /dev/null @@ -1,80 +0,0 @@ - -Manpage of FUNCTION::TOKENIZE - -

FUNCTION::TOKENIZE

-Section: A collection of standard strin (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::tokenize - Return the next non-empty token in a string -  -

SYNOPSIS

- -

-

-    tokenize:string(input:string,delim:string)
-
- -  -

ARGUMENTS

- -

- -input -

-string to tokenize. If empty, returns the next non-empty token in the string passed in the previous call to -tokenize. -
- -

- -delim -

-set of characters that delimit the tokens -
- -  -

DESCRIPTION

- -

- -This function returns the next non-empty token in the given input string, where the tokens are delimited by characters in the delim string. If the input string is non-empty, it returns the first token. If the input string is empty, it returns the next token in the string passed in the previous call to tokenize. If no delimiter is found, the entire remaining input string is returned. It returns empty when no more tokens are available. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::tz_ctime.3stap.html b/man/function::tz_ctime.3stap.html deleted file mode 100644 index f67950d4..00000000 --- a/man/function::tz_ctime.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of FUNCTION::TZ_CTIME - -

FUNCTION::TZ_CTIME

-Section: Time utility functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::tz_ctime - Convert seconds since epoch into human readable date/time string, with local time zone -  -

SYNOPSIS

- -

-

-    tz_ctime(epochsecs:)
-
- -  -

ARGUMENTS

- -

- -epochsecs -

-number of seconds since epoch (as returned by -gettimeofday_s) -
- -  -

DESCRIPTION

- -

- -Takes an argument of seconds since the epoch as returned by -gettimeofday_s. Returns a string of the same form as -ctime, but offsets the epoch time for the local time zone, and appends the name of the local time zone. The string length may vary. The time zone information is passed by staprun at script startup only. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::tz_gmtoff.3stap.html b/man/function::tz_gmtoff.3stap.html deleted file mode 100644 index 6890107a..00000000 --- a/man/function::tz_gmtoff.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::TZ_GMTOFF - -

FUNCTION::TZ_GMTOFF

-Section: Time utility functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::tz_gmtoff - Return local time zone offset -  -

SYNOPSIS

- -

-

-    tz_gmtoff()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns the local time zone offset (seconds west of UTC), as passed by staprun at script startup only. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::tz_name.3stap.html b/man/function::tz_name.3stap.html deleted file mode 100644 index 500e7336..00000000 --- a/man/function::tz_name.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::TZ_NAME - -

FUNCTION::TZ_NAME

-Section: Time utility functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::tz_name - Return local time zone name -  -

SYNOPSIS

- -

-

-    tz_name()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns the local time zone name, as passed by staprun at script startup only. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::u32_arg.3stap.html b/man/function::u32_arg.3stap.html deleted file mode 100644 index 7dba9732..00000000 --- a/man/function::u32_arg.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::U32_ARG - -

FUNCTION::U32_ARG

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::u32_arg - Return function argument as unsigned 32-bit value -  -

SYNOPSIS

- -

-

-    u32_arg:long(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-index of argument to return -
- -  -

DESCRIPTION

- -

- -Return the unsigned 32-bit value of argument n, same as uint_arg. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::u64_arg.3stap.html b/man/function::u64_arg.3stap.html deleted file mode 100644 index af8ccd8d..00000000 --- a/man/function::u64_arg.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::U64_ARG - -

FUNCTION::U64_ARG

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::u64_arg - Return function argument as unsigned 64-bit value -  -

SYNOPSIS

- -

-

-    u64_arg:long(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-index of argument to return -
- -  -

DESCRIPTION

- -

- -Return the unsigned 64-bit value of argument n, same as ulonglong_arg. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::u_register.3stap.html b/man/function::u_register.3stap.html deleted file mode 100644 index 0ee75174..00000000 --- a/man/function::u_register.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::U_REGISTER - -

FUNCTION::U_REGISTER

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::u_register - Return the unsigned value of the named CPU register -  -

SYNOPSIS

- -

-

-    u_register:long(name:string)
-
- -  -

ARGUMENTS

- -

- -name -

-Name of the register to return -
- -  -

DESCRIPTION

- -

- -Same as register(name), except that if the register is 32 bits wide, it is zero-extended to 64 bits. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::uaddr.3stap.html b/man/function::uaddr.3stap.html deleted file mode 100644 index ab030b6d..00000000 --- a/man/function::uaddr.3stap.html +++ /dev/null @@ -1,71 +0,0 @@ - -Manpage of FUNCTION::UADDR - -

FUNCTION::UADDR

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::uaddr - User space address of current running task -  -

SYNOPSIS

- -

-

-    uaddr:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -Returns the address in userspace that the current task was at when the probe occurred. When the current running task isn't a user space thread, or the address cannot be found, zero is returned. Can be used to see where the current task is combined with -usymname -or -usymdata. Often the task will be in the VDSO where it entered the kernel. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::ubacktrace.3stap.html b/man/function::ubacktrace.3stap.html deleted file mode 100644 index dd1ae94d..00000000 --- a/man/function::ubacktrace.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::UBACKTRACE - -

FUNCTION::UBACKTRACE

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ubacktrace - Hex backtrace of current user-space task stack. -  -

SYNOPSIS

- -

-

-    ubacktrace:string()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -

- -Return a string of hex addresses that are a backtrace of the stack of the current task. Output may be truncated as per maximum string length. Returns empty string when current probe point cannot determine user backtrace. See -backtrace -for kernel traceback. -  -

NOTE

- -

- -To get (full) backtraces for user space applications and shared shared libraries not mentioned in the current script run stap with -d /path/to/exe-or-so and/or add --ldd to load all needed unwind data. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
NOTE
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::ucallers.3stap.html b/man/function::ucallers.3stap.html deleted file mode 100644 index b1246be8..00000000 --- a/man/function::ucallers.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::UCALLERS - -

FUNCTION::UCALLERS

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ucallers - Return first n elements of user stack backtrace -  -

SYNOPSIS

- -

-

-    ucallers:string(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-number of levels to descend in the stack (not counting the top level). If n is -1, print the entire stack. -
- -  -

DESCRIPTION

- -

- -This function returns a string of the first n hex addresses from the backtrace of the user stack. Output may be truncated as per maximum string length (MAXSTRINGLEN). -  -

NOTE

- -

- -To get (full) backtraces for user space applications and shared shared libraries not mentioned in the current script run stap with -d /path/to/exe-or-so and/or add --ldd to load all needed unwind data. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
NOTE
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::udelay.3stap.html b/man/function::udelay.3stap.html deleted file mode 100644 index 788dffc4..00000000 --- a/man/function::udelay.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::UDELAY - -

FUNCTION::UDELAY

-Section: Guru tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::udelay - microsecond delay -  -

SYNOPSIS

- -

-

-    udelay(us:long)
-
- -  -

ARGUMENTS

- -

- -us -

-Number of microseconds to delay. -
- -  -

DESCRIPTION

- -

- -This function inserts a multi-microsecond busy-delay into a probe handler. It requires guru mode. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::uid.3stap.html b/man/function::uid.3stap.html deleted file mode 100644 index f0e4dd4a..00000000 --- a/man/function::uid.3stap.html +++ /dev/null @@ -1,68 +0,0 @@ - -Manpage of FUNCTION::UID - -

FUNCTION::UID

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::uid - Returns the user ID of a target process -  -

SYNOPSIS

- -

-

-    uid:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -This function returns the user ID of the target process. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::uint_arg.3stap.html b/man/function::uint_arg.3stap.html deleted file mode 100644 index a34755b8..00000000 --- a/man/function::uint_arg.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::UINT_ARG - -

FUNCTION::UINT_ARG

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::uint_arg - Return function argument as unsigned int -  -

SYNOPSIS

- -

-

-    uint_arg:long(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-index of argument to return -
- -  -

DESCRIPTION

- -

- -Return the value of argument n as an unsigned int (i.e., a 32-bit integer zero-extended to 64 bits). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::ulong_arg.3stap.html b/man/function::ulong_arg.3stap.html deleted file mode 100644 index df092eed..00000000 --- a/man/function::ulong_arg.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::ULONG_ARG - -

FUNCTION::ULONG_ARG

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ulong_arg - Return function argument as unsigned long -  -

SYNOPSIS

- -

-

-    ulong_arg:long(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-index of argument to return -
- -  -

DESCRIPTION

- -

- -Return the value of argument n as an unsigned long. On architectures where a long is 32 bits, the value is zero-extended to 64 bits. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::ulonglong_arg.3stap.html b/man/function::ulonglong_arg.3stap.html deleted file mode 100644 index c91efa92..00000000 --- a/man/function::ulonglong_arg.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::ULONGLONG_ - -

FUNCTION::ULONGLONG_

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ulonglong_arg - Return function argument as 64-bit value -  -

SYNOPSIS

- -

-

-    ulonglong_arg:long(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-index of argument to return -
- -  -

DESCRIPTION

- -

- -Return the value of argument n as a 64-bit value. (Same as longlong_arg.) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::umodname.3stap.html b/man/function::umodname.3stap.html deleted file mode 100644 index d3148586..00000000 --- a/man/function::umodname.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::UMODNAME - -

FUNCTION::UMODNAME

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::umodname - Returns the (short) name of the user module. -  -

SYNOPSIS

- -

-

-    umodname:string(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-User-space address -
- -  -

DESCRIPTION

- -

- -Returns the short name of the user space module for the current task that that the given address is part of. Reports an error when the address isn't in a (mapped in) module, or the module cannot be found for some reason. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::usecs_to_string.3stap.html b/man/function::usecs_to_string.3stap.html deleted file mode 100644 index 438b3e8d..00000000 --- a/man/function::usecs_to_string.3stap.html +++ /dev/null @@ -1,73 +0,0 @@ - -Manpage of FUNCTION::USECS_TO_S - -

FUNCTION::USECS_TO_S

-Section: Task Time Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::usecs_to_string - Human readable string for given microseconds -  -

SYNOPSIS

- -

-

-    usecs_to_string:string(usecs:long)
-
- -  -

ARGUMENTS

- -

- -usecs -

-Number of microseconds to translate. -
- -  -

DESCRIPTION

- -

- -Returns a string representing the number of microseconds as a human readable string consisting of -"XmY.ZZZZZZs", where X is the number of minutes, Y is the number of seconds and ZZZZZZ is the number of microseconds. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_char.3stap.html b/man/function::user_char.3stap.html deleted file mode 100644 index ae3ba83d..00000000 --- a/man/function::user_char.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_CHAR - -

FUNCTION::USER_CHAR

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_char - Retrieves a char value stored in user space -  -

SYNOPSIS

- -

-

-    user_char:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the char from -
- -  -

DESCRIPTION

- -

- -Returns the char value from a given user space address. Returns zero when user space data is not accessible. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_char_warn.3stap.html b/man/function::user_char_warn.3stap.html deleted file mode 100644 index 1fe65ad3..00000000 --- a/man/function::user_char_warn.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_CHAR_ - -

FUNCTION::USER_CHAR_

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_char_warn - Retrieves a char value stored in user space -  -

SYNOPSIS

- -

-

-    user_char_warn:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the char from -
- -  -

DESCRIPTION

- -

- -Returns the char value from a given user space address. Returns zero when user space and warns (but does not abort) about the failure. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_int.3stap.html b/man/function::user_int.3stap.html deleted file mode 100644 index c2924519..00000000 --- a/man/function::user_int.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_INT - -

FUNCTION::USER_INT

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_int - Retrieves an int value stored in user space -  -

SYNOPSIS

- -

-

-    user_int:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the int from -
- -  -

DESCRIPTION

- -

- -Returns the int value from a given user space address. Returns zero when user space data is not accessible. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_int16.3stap.html b/man/function::user_int16.3stap.html deleted file mode 100644 index 57350ba2..00000000 --- a/man/function::user_int16.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_INT16 - -

FUNCTION::USER_INT16

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_int16 - Retrieves a 16-bit integer value stored in user space -  -

SYNOPSIS

- -

-

-    user_int16:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the 16-bit integer from -
- -  -

DESCRIPTION

- -

- -Returns the 16-bit integer value from a given user space address. Returns zero when user space data is not accessible. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_int32.3stap.html b/man/function::user_int32.3stap.html deleted file mode 100644 index 9efe6d67..00000000 --- a/man/function::user_int32.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_INT32 - -

FUNCTION::USER_INT32

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_int32 - Retrieves a 32-bit integer value stored in user space -  -

SYNOPSIS

- -

-

-    user_int32:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the 32-bit integer from -
- -  -

DESCRIPTION

- -

- -Returns the 32-bit integer value from a given user space address. Returns zero when user space data is not accessible. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_int64.3stap.html b/man/function::user_int64.3stap.html deleted file mode 100644 index f9edaeef..00000000 --- a/man/function::user_int64.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_INT64 - -

FUNCTION::USER_INT64

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_int64 - Retrieves a 64-bit integer value stored in user space -  -

SYNOPSIS

- -

-

-    user_int64:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the 64-bit integer from -
- -  -

DESCRIPTION

- -

- -Returns the 64-bit integer value from a given user space address. Returns zero when user space data is not accessible. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_int8.3stap.html b/man/function::user_int8.3stap.html deleted file mode 100644 index 4e11c283..00000000 --- a/man/function::user_int8.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_INT8 - -

FUNCTION::USER_INT8

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_int8 - Retrieves a 8-bit integer value stored in user space -  -

SYNOPSIS

- -

-

-    user_int8:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the 8-bit integer from -
- -  -

DESCRIPTION

- -

- -Returns the 8-bit integer value from a given user space address. Returns zero when user space data is not accessible. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_int_warn.3stap.html b/man/function::user_int_warn.3stap.html deleted file mode 100644 index efc1a57f..00000000 --- a/man/function::user_int_warn.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_INT_W - -

FUNCTION::USER_INT_W

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_int_warn - Retrieves an int value stored in user space -  -

SYNOPSIS

- -

-

-    user_int_warn:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the int from -
- -  -

DESCRIPTION

- -

- -Returns the int value from a given user space address. Returns zero when user space and warns (but does not abort) about the failure. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_long.3stap.html b/man/function::user_long.3stap.html deleted file mode 100644 index 555441cc..00000000 --- a/man/function::user_long.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_LONG - -

FUNCTION::USER_LONG

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_long - Retrieves a long value stored in user space -  -

SYNOPSIS

- -

-

-    user_long:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the long from -
- -  -

DESCRIPTION

- -

- -Returns the long value from a given user space address. Returns zero when user space data is not accessible. Note that the size of the long depends on the architecture of the current user space task (for those architectures that support both 64/32 bit compat tasks). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_long_warn.3stap.html b/man/function::user_long_warn.3stap.html deleted file mode 100644 index b6fa73b0..00000000 --- a/man/function::user_long_warn.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_LONG_ - -

FUNCTION::USER_LONG_

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_long_warn - Retrieves a long value stored in user space -  -

SYNOPSIS

- -

-

-    user_long_warn:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the long from -
- -  -

DESCRIPTION

- -

- -Returns the long value from a given user space address. Returns zero when user space and warns (but does not abort) about the failure. Note that the size of the long depends on the architecture of the current user space task (for those architectures that support both 64/32 bit compat tasks). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_mode.3stap.html b/man/function::user_mode.3stap.html deleted file mode 100644 index 1a6ee0df..00000000 --- a/man/function::user_mode.3stap.html +++ /dev/null @@ -1,70 +0,0 @@ - -Manpage of FUNCTION::USER_MODE - -

FUNCTION::USER_MODE

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_mode - Determines if probe point occurs in user-mode -  -

SYNOPSIS

- -

-

-    user_mode:long()
-
- -  -

ARGUMENTS

- -

- -None -  -

DESCRIPTION

- -

- -

- -Return 1 if the probe point occurred in user-mode. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_short.3stap.html b/man/function::user_short.3stap.html deleted file mode 100644 index 9982be7c..00000000 --- a/man/function::user_short.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_SHORT - -

FUNCTION::USER_SHORT

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_short - Retrieves a short value stored in user space -  -

SYNOPSIS

- -

-

-    user_short:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the short from -
- -  -

DESCRIPTION

- -

- -Returns the short value from a given user space address. Returns zero when user space data is not accessible. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_short_warn.3stap.html b/man/function::user_short_warn.3stap.html deleted file mode 100644 index 8bf153f1..00000000 --- a/man/function::user_short_warn.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_SHORT - -

FUNCTION::USER_SHORT

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_short_warn - Retrieves a short value stored in user space -  -

SYNOPSIS

- -

-

-    user_short_warn:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the short from -
- -  -

DESCRIPTION

- -

- -Returns the short value from a given user space address. Returns zero when user space and warns (but does not abort) about the failure. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_string.3stap.html b/man/function::user_string.3stap.html deleted file mode 100644 index cb478c81..00000000 --- a/man/function::user_string.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_STRIN - -

FUNCTION::USER_STRIN

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_string - Retrieves string from user space -  -

SYNOPSIS

- -

-

-    user_string:string(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the string from -
- -  -

DESCRIPTION

- -

- -Returns the null terminated C string from a given user space memory address. Reports an error on the rare cases when userspace data is not accessible. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_string2.3stap.html b/man/function::user_string2.3stap.html deleted file mode 100644 index 5e5788f8..00000000 --- a/man/function::user_string2.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::USER_STRIN - -

FUNCTION::USER_STRIN

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_string2 - Retrieves string from user space with alternative error string -  -

SYNOPSIS

- -

-

-    user_string2:string(addr:long,err_msg:string)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the string from -
- -

- -err_msg -

-the error message to return when data isn't available -
- -  -

DESCRIPTION

- -

- -Returns the null terminated C string from a given user space memory address. Reports the given error message on the rare cases when userspace data is not accessible. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_string2_n_warn.3stap.html b/man/function::user_string2_n_warn.3stap.html deleted file mode 100644 index 8390930f..00000000 --- a/man/function::user_string2_n_warn.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of FUNCTION::USER_STRIN - -

FUNCTION::USER_STRIN

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_string2_n_warn - Retrieves string from user space with alternative warning string -  -

SYNOPSIS

- -

-

-    user_string2_n_warn:string(addr:long,n:long,warn_msg:string)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the string from -
- -

- -n -

-the maximum length of the string (if not null terminated) -
- -

- -warn_msg -

-the warning message to return when data isn't available -
- -  -

DESCRIPTION

- -

- -Returns up to n characters of a C string from a given user space memory address. Reports the given warning message on the rare cases when userspace data is not accessible and warns (but does not abort) about the failure. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_string2_utf16.3stap.html b/man/function::user_string2_utf16.3stap.html deleted file mode 100644 index 8c9b13c5..00000000 --- a/man/function::user_string2_utf16.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::USER_STRIN - -

FUNCTION::USER_STRIN

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_string2_utf16 - Retrieves UTF-16 string from user memory with alternative error string -  -

SYNOPSIS

- -

-

-    user_string2_utf16:string(addr:long,err_msg:string)
-
- -  -

ARGUMENTS

- -

- -addr -

-The user address to retrieve the string from -
- -

- -err_msg -

-The error message to return when data isn't available -
- -  -

DESCRIPTION

- -

- -This function returns a null terminated UTF-8 string converted from the UTF-16 string at a given user memory address. Reports the given error message on string copy fault or conversion error. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_string2_utf32.3stap.html b/man/function::user_string2_utf32.3stap.html deleted file mode 100644 index 6376c4f0..00000000 --- a/man/function::user_string2_utf32.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::USER_STRIN - -

FUNCTION::USER_STRIN

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_string2_utf32 - Retrieves UTF-32 string from user memory with alternative error string -  -

SYNOPSIS

- -

-

-    user_string2_utf32:string(addr:long,err_msg:string)
-
- -  -

ARGUMENTS

- -

- -addr -

-The user address to retrieve the string from -
- -

- -err_msg -

-The error message to return when data isn't available -
- -  -

DESCRIPTION

- -

- -This function returns a null terminated UTF-8 string converted from the UTF-32 string at a given user memory address. Reports the given error message on string copy fault or conversion error. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_string2_warn.3stap.html b/man/function::user_string2_warn.3stap.html deleted file mode 100644 index 4fc312cd..00000000 --- a/man/function::user_string2_warn.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::USER_STRIN - -

FUNCTION::USER_STRIN

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_string2_warn - Retrieves string from user space with alternative warning string -  -

SYNOPSIS

- -

-

-    user_string2_warn:string(addr:long,warn_msg:string)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the string from -
- -

- -warn_msg -

-the warning message to return when data isn't available -
- -  -

DESCRIPTION

- -

- -Returns the null terminated C string from a given user space memory address. Reports the given warning message on the rare cases when userspace data is not accessible and warns (but does not abort) about the failure. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_string_n.3stap.html b/man/function::user_string_n.3stap.html deleted file mode 100644 index f7d7337f..00000000 --- a/man/function::user_string_n.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::USER_STRIN - -

FUNCTION::USER_STRIN

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_string_n - Retrieves string of given length from user space -  -

SYNOPSIS

- -

-

-    user_string_n:string(addr:long,n:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the string from -
- -

- -n -

-the maximum length of the string (if not null terminated) -
- -  -

DESCRIPTION

- -

- -Returns the C string of a maximum given length from a given user space address. Reports an error on the rare cases when userspace data is not accessible at the given address. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_string_n2.3stap.html b/man/function::user_string_n2.3stap.html deleted file mode 100644 index f09b9374..00000000 --- a/man/function::user_string_n2.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of FUNCTION::USER_STRIN - -

FUNCTION::USER_STRIN

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_string_n2 - Retrieves string of given length from user space -  -

SYNOPSIS

- -

-

-    user_string_n2:string(addr:long,n:long,err_msg:string)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the string from -
- -

- -n -

-the maximum length of the string (if not null terminated) -
- -

- -err_msg -

-the error message to return when data isn't available -
- -  -

DESCRIPTION

- -

- -Returns the C string of a maximum given length from a given user space address. Returns the given error message string on the rare cases when userspace data is not accessible at the given address. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_string_n2_quoted.3stap.html b/man/function::user_string_n2_quoted.3stap.html deleted file mode 100644 index d4e0ef4f..00000000 --- a/man/function::user_string_n2_quoted.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of FUNCTION::USER_STRIN - -

FUNCTION::USER_STRIN

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_string_n2_quoted - Retrieves and quotes string from user space -  -

SYNOPSIS

- -

-

-    user_string_n2_quoted:string(addr:long,inlen:long,outlen:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the string from -
- -

- -inlen -

-the maximum length of the string to read (if not null terminated) -
- -

- -outlen -

-the maximum length of the output string -
- -  -

DESCRIPTION

- -

- -Reads up to inlen characters of a C string from the given user space memory address, and returns up to outlen characters, where any ASCII characters that are not printable are replaced by the corresponding escape sequence in the returned string. Note that the string will be surrounded by double quotes. On the rare cases when userspace data is not accessible at the given address, the address itself is returned as a string, without double quotes. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_string_n_quoted.3stap.html b/man/function::user_string_n_quoted.3stap.html deleted file mode 100644 index cfb8b4d9..00000000 --- a/man/function::user_string_n_quoted.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of FUNCTION::USER_STRIN - -

FUNCTION::USER_STRIN

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_string_n_quoted - Retrieves and quotes string from user space -  -

SYNOPSIS

- -

-

-    user_string_n_quoted:string(addr:long,n:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the string from -
- -

- -n -

-the maximum length of the string (if not null terminated) -
- -  -

DESCRIPTION

- -

- -Returns up to n characters of a C string from the given user space memory address where any ASCII characters that are not printable are replaced by the corresponding escape sequence in the returned string. Note that the string will be surrounded by double quotes. On the rare cases when userspace data is not accessible at the given address, the address itself is returned as a string, without double quotes. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_string_n_warn.3stap.html b/man/function::user_string_n_warn.3stap.html deleted file mode 100644 index da128ff9..00000000 --- a/man/function::user_string_n_warn.3stap.html +++ /dev/null @@ -1,81 +0,0 @@ - -Manpage of FUNCTION::USER_STRIN - -

FUNCTION::USER_STRIN

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_string_n_warn - Retrieves string from user space -  -

SYNOPSIS

- -

-

-    user_string_n_warn:string(addr:long,n:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the string from -
- -

- -n -

-the maximum length of the string (if not null terminated) -
- -  -

DESCRIPTION

- -

- -Returns up to n characters of a C string from a given user space memory address. Reports -"<unknown>" -on the rare cases when userspace data is not accessible and warns (but does not abort) about the failure. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_string_quoted.3stap.html b/man/function::user_string_quoted.3stap.html deleted file mode 100644 index ba4690a3..00000000 --- a/man/function::user_string_quoted.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_STRIN - -

FUNCTION::USER_STRIN

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_string_quoted - Retrieves and quotes string from user space -  -

SYNOPSIS

- -

-

-    user_string_quoted:string(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the string from -
- -  -

DESCRIPTION

- -

- -Returns the null terminated C string from a given user space memory address where any ASCII characters that are not printable are replaced by the corresponding escape sequence in the returned string. Note that the string will be surrounded by double quotes. On the rare cases when userspace data is not accessible at the given address, the address itself is returned as a string, without double quotes. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_string_utf16.3stap.html b/man/function::user_string_utf16.3stap.html deleted file mode 100644 index 0ab009ac..00000000 --- a/man/function::user_string_utf16.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_STRIN - -

FUNCTION::USER_STRIN

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_string_utf16 - Retrieves UTF-16 string from user memory -  -

SYNOPSIS

- -

-

-    user_string_utf16:string(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The user address to retrieve the string from -
- -  -

DESCRIPTION

- -

- -This function returns a null terminated UTF-8 string converted from the UTF-16 string at a given user memory address. Reports an error on string copy fault or conversion error. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_string_utf32.3stap.html b/man/function::user_string_utf32.3stap.html deleted file mode 100644 index 6f67cb96..00000000 --- a/man/function::user_string_utf32.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_STRIN - -

FUNCTION::USER_STRIN

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_string_utf32 - Retrieves UTF-32 string from user memory -  -

SYNOPSIS

- -

-

-    user_string_utf32:string(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The user address to retrieve the string from -
- -  -

DESCRIPTION

- -

- -This function returns a null terminated UTF-8 string converted from the UTF-32 string at a given user memory address. Reports an error on string copy fault or conversion error. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_string_warn.3stap.html b/man/function::user_string_warn.3stap.html deleted file mode 100644 index 984ea2ee..00000000 --- a/man/function::user_string_warn.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_STRIN - -

FUNCTION::USER_STRIN

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_string_warn - Retrieves string from user space -  -

SYNOPSIS

- -

-

-    user_string_warn:string(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the string from -
- -  -

DESCRIPTION

- -

- -Returns the null terminated C string from a given user space memory address. Reports "" on the rare cases when userspace data is not accessible and warns (but does not abort) about the failure. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_uint16.3stap.html b/man/function::user_uint16.3stap.html deleted file mode 100644 index fdacec9b..00000000 --- a/man/function::user_uint16.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_UINT1 - -

FUNCTION::USER_UINT1

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_uint16 - Retrieves an unsigned 16-bit integer value stored in user space -  -

SYNOPSIS

- -

-

-    user_uint16:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the unsigned 16-bit integer from -
- -  -

DESCRIPTION

- -

- -Returns the unsigned 16-bit integer value from a given user space address. Returns zero when user space data is not accessible. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_uint32.3stap.html b/man/function::user_uint32.3stap.html deleted file mode 100644 index 5e5027ce..00000000 --- a/man/function::user_uint32.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_UINT3 - -

FUNCTION::USER_UINT3

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_uint32 - Retrieves an unsigned 32-bit integer value stored in user space -  -

SYNOPSIS

- -

-

-    user_uint32:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the unsigned 32-bit integer from -
- -  -

DESCRIPTION

- -

- -Returns the unsigned 32-bit integer value from a given user space address. Returns zero when user space data is not accessible. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:27 GMT, March 18, 2014 - - diff --git a/man/function::user_uint64.3stap.html b/man/function::user_uint64.3stap.html deleted file mode 100644 index a44ebe08..00000000 --- a/man/function::user_uint64.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_UINT6 - -

FUNCTION::USER_UINT6

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_uint64 - Retrieves an unsigned 64-bit integer value stored in user space -  -

SYNOPSIS

- -

-

-    user_uint64:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the unsigned 64-bit integer from -
- -  -

DESCRIPTION

- -

- -Returns the unsigned 64-bit integer value from a given user space address. Returns zero when user space data is not accessible. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/function::user_uint8.3stap.html b/man/function::user_uint8.3stap.html deleted file mode 100644 index a2e62194..00000000 --- a/man/function::user_uint8.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_UINT8 - -

FUNCTION::USER_UINT8

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_uint8 - Retrieves an unsigned 8-bit integer value stored in user space -  -

SYNOPSIS

- -

-

-    user_uint8:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the unsigned 8-bit integer from -
- -  -

DESCRIPTION

- -

- -Returns the unsigned 8-bit integer value from a given user space address. Returns zero when user space data is not accessible. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/function::user_ushort.3stap.html b/man/function::user_ushort.3stap.html deleted file mode 100644 index 969f9af8..00000000 --- a/man/function::user_ushort.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_USHOR - -

FUNCTION::USER_USHOR

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_ushort - Retrieves an unsigned short value stored in user space -  -

SYNOPSIS

- -

-

-    user_ushort:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the unsigned short from -
- -  -

DESCRIPTION

- -

- -Returns the unsigned short value from a given user space address. Returns zero when user space data is not accessible. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/function::user_ushort_warn.3stap.html b/man/function::user_ushort_warn.3stap.html deleted file mode 100644 index 3807e342..00000000 --- a/man/function::user_ushort_warn.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USER_USHOR - -

FUNCTION::USER_USHOR

-Section: String and data retrieving fun (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::user_ushort_warn - Retrieves an unsigned short value stored in user space -  -

SYNOPSIS

- -

-

-    user_ushort_warn:long(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-the user space address to retrieve the unsigned short from -
- -  -

DESCRIPTION

- -

- -Returns the unsigned short value from a given user space address. Returns zero when user space and warns (but does not abort) about the failure. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/function::usrdev2kerndev.3stap.html b/man/function::usrdev2kerndev.3stap.html deleted file mode 100644 index 2003cc2e..00000000 --- a/man/function::usrdev2kerndev.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of FUNCTION::USRDEV2KER - -

FUNCTION::USRDEV2KER

-Section: Device Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::usrdev2kerndev - Converts a user-space device number into the format used in the kernel -  -

SYNOPSIS

- -

-

-    usrdev2kerndev:long(dev:long)
-
- -  -

ARGUMENTS

- -

- -dev -

-Device number in user-space format. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/function::ustack.3stap.html b/man/function::ustack.3stap.html deleted file mode 100644 index 91fb3a42..00000000 --- a/man/function::ustack.3stap.html +++ /dev/null @@ -1,74 +0,0 @@ - -Manpage of FUNCTION::USTACK - -

FUNCTION::USTACK

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::ustack - Return address at given depth of user stack backtrace -  -

SYNOPSIS

- -

-

-    ustack:long(n:long)
-
- -  -

ARGUMENTS

- -

- -n -

-number of levels to descend in the stack. -
- -  -

DESCRIPTION

- -

- -Performs a simple (user space) backtrace, and returns the element at the specified position. The results of the backtrace itself are cached, so that the backtrace computation is performed at most once no matter how many times -ustack -is called, or in what order. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/function::usymdata.3stap.html b/man/function::usymdata.3stap.html deleted file mode 100644 index 17a85124..00000000 --- a/man/function::usymdata.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USYMDATA - -

FUNCTION::USYMDATA

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::usymdata - Return the symbol and module offset of an address. -  -

SYNOPSIS

- -

-

-    usymdata:string(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The address to translate. -
- -  -

DESCRIPTION

- -

- -Returns the (function) symbol name associated with the given address in the current task if known, the offset from the start and the size of the symbol, plus the module name (between brackets). If symbol is unknown, but module is known, the offset inside the module, plus the size of the module is added. If any element is not known it will be omitted and if the symbol name is unknown it will return the hex string for the given address. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/function::usymname.3stap.html b/man/function::usymname.3stap.html deleted file mode 100644 index a565526f..00000000 --- a/man/function::usymname.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::USYMNAME - -

FUNCTION::USYMNAME

-Section: Context Functions (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::usymname - Return the symbol of an address in the current task. -  -

SYNOPSIS

- -

-

-    usymname:string(addr:long)
-
- -  -

ARGUMENTS

- -

- -addr -

-The address to translate. -
- -  -

DESCRIPTION

- -

- -Returns the (function) symbol name associated with the given address if known. If not known it will return the hex string representation of addr. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/function::vm_fault_contains.3stap.html b/man/function::vm_fault_contains.3stap.html deleted file mode 100644 index 4dfe4388..00000000 --- a/man/function::vm_fault_contains.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::VM_FAULT_C - -

FUNCTION::VM_FAULT_C

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::vm_fault_contains - Test return value for page fault reason -  -

SYNOPSIS

- -

-

-    vm_fault_contains:long(value:long,test:long)
-
- -  -

ARGUMENTS

- -

- -value -

-the fault_type returned by vm.page_fault.return -
- -

- -test -

-the type of fault to test for (VM_FAULT_OOM or similar) -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/function::warn.3stap.html b/man/function::warn.3stap.html deleted file mode 100644 index 1b79bc56..00000000 --- a/man/function::warn.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of FUNCTION::WARN - -

FUNCTION::WARN

-Section: Logging Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -function::warn - Send a line to the warning stream -  -

SYNOPSIS

- -

-

-    warn(msg:string)
-
- -  -

ARGUMENTS

- -

- -msg -

-The formatted message string -
- -  -

DESCRIPTION

- -

- -This function sends a warning message immediately to staprun. It is also sent over the bulk transport (relayfs) if it is being used. If the last characater is not a newline, the one is added. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
ARGUMENTS
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/index.html b/man/index.html deleted file mode 100644 index c6f8a8e8..00000000 --- a/man/index.html +++ /dev/null @@ -1,712 +0,0 @@ -systemtap man page index diff --git a/man/probe::ioblock.end.3stap.html b/man/probe::ioblock.end.3stap.html deleted file mode 100644 index 1a25150f..00000000 --- a/man/probe::ioblock.end.3stap.html +++ /dev/null @@ -1,102 +0,0 @@ - -Manpage of PROBE::IOBLOCK\&.END - -

PROBE::IOBLOCK\&.END

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioblock.end - Fires whenever a block I/O transfer is complete. -  -

SYNOPSIS

- -

-

-ioblock.end 
-
- -  -

VALUES

- -

- -None -  -

DESCRIPTION

- -

- -

- -name -- name of the probe point -devname -- block device name -ino -- i-node number of the mapped file -bytes_done -- number of bytes transferred -sector -- beginning sector for the entire bio -flags -- see below BIO_UPTODATE 0 ok after I/O completion BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block BIO_EOF 2 out-out-bounds error BIO_SEG_VALID 3 nr_hw_seg valid BIO_CLONED 4 doesn't own data BIO_BOUNCED 5 bio is a bounce bio BIO_USER_MAPPED 6 contains user pages BIO_EOPNOTSUPP 7 not supported -error -- 0 on success -rw -- binary trace for read/write request -vcnt -- bio vector count which represents number of array element (page, offset, length) which makes up this I/O request -idx -- offset into the bio vector array -phys_segments -- number of segments in this bio after physical address coalescing is performed. -hw_segments -- number of segments after physical and DMA remapping hardware coalescing is performed -size -- total size in bytes -  -

CONTEXT

- -

- -The process signals the transfer is done. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioblock.request.3stap.html b/man/probe::ioblock.request.3stap.html deleted file mode 100644 index 0106c617..00000000 --- a/man/probe::ioblock.request.3stap.html +++ /dev/null @@ -1,106 +0,0 @@ - -Manpage of PROBE::IOBLOCK\&.REQ - -

PROBE::IOBLOCK\&.REQ

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioblock.request - Fires whenever making a generic block I/O request. -  -

SYNOPSIS

- -

-

-ioblock.request 
-
- -  -

VALUES

- -

- -None -  -

DESCRIPTION

- -

- -

- -name -- name of the probe point -devname -- block device name -ino -- i-node number of the mapped file -sector -- beginning sector for the entire bio -flags -- see below BIO_UPTODATE 0 ok after I/O completion BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block BIO_EOF 2 out-out-bounds error BIO_SEG_VALID 3 nr_hw_seg valid BIO_CLONED 4 doesn't own data BIO_BOUNCED 5 bio is a bounce bio BIO_USER_MAPPED 6 contains user pages BIO_EOPNOTSUPP 7 not supported -

- -rw -- binary trace for read/write request -vcnt -- bio vector count which represents number of array element (page, offset, length) which make up this I/O request -idx -- offset into the bio vector array -phys_segments -- number of segments in this bio after physical address coalescing is performed -hw_segments -- number of segments after physical and DMA remapping hardware coalescing is performed -size -- total size in bytes -bdev -- target block device -bdev_contains -- points to the device object which contains the partition (when bio structure represents a partition) -p_start_sect -- points to the start sector of the partition structure of the device -  -

CONTEXT

- -

- -The process makes block I/O request -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioblock_trace.bounce.3stap.html b/man/probe::ioblock_trace.bounce.3stap.html deleted file mode 100644 index 4931ec14..00000000 --- a/man/probe::ioblock_trace.bounce.3stap.html +++ /dev/null @@ -1,106 +0,0 @@ - -Manpage of PROBE::IOBLOCK_TRACE - -

PROBE::IOBLOCK_TRACE

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioblock_trace.bounce - Fires whenever a buffer bounce is needed for at least one page of a block IO request. -  -

SYNOPSIS

- -

-

-ioblock_trace.bounce 
-
- -  -

VALUES

- -

- -None -  -

DESCRIPTION

- -

- -

- -name -- name of the probe point -q -- request queue on which this bio was queued. -devname -- device for which a buffer bounce was needed. -ino -- i-node number of the mapped file -bytes_done -- number of bytes transferred -sector -- beginning sector for the entire bio -flags -- see below BIO_UPTODATE 0 ok after I/O completion BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block BIO_EOF 2 out-out-bounds error BIO_SEG_VALID 3 nr_hw_seg valid BIO_CLONED 4 doesn't own data BIO_BOUNCED 5 bio is a bounce bio BIO_USER_MAPPED 6 contains user pages BIO_EOPNOTSUPP 7 not supported -rw -- binary trace for read/write request -vcnt -- bio vector count which represents number of array element (page, offset, length) which makes up this I/O request -idx -- offset into the bio vector array -phys_segments -- number of segments in this bio after physical address coalescing is performed. -size -- total size in bytes -bdev -- target block device -bdev_contains -- points to the device object which contains the partition (when bio structure represents a partition) -p_start_sect -- points to the start sector of the partition structure of the device -  -

CONTEXT

- -

- -The process creating a block IO request. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioblock_trace.end.3stap.html b/man/probe::ioblock_trace.end.3stap.html deleted file mode 100644 index 17d42889..00000000 --- a/man/probe::ioblock_trace.end.3stap.html +++ /dev/null @@ -1,108 +0,0 @@ - -Manpage of PROBE::IOBLOCK_TRACE - -

PROBE::IOBLOCK_TRACE

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioblock_trace.end - Fires whenever a block I/O transfer is complete. -  -

SYNOPSIS

- -

-

-ioblock_trace.end 
-
- -  -

VALUES

- -

- -None -  -

DESCRIPTION

- -

- -

- -name -- name of the probe point -q -- request queue on which this bio was queued. -devname -- block device name -ino -- i-node number of the mapped file -bytes_done -- number of bytes transferred -sector -- beginning sector for the entire bio -flags -- see below BIO_UPTODATE 0 ok after I/O completion BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block BIO_EOF 2 out-out-bounds error BIO_SEG_VALID 3 nr_hw_seg valid BIO_CLONED 4 doesn't own data BIO_BOUNCED 5 bio is a bounce bio BIO_USER_MAPPED 6 contains user pages BIO_EOPNOTSUPP 7 not supported -

- -rw -- binary trace for read/write request -vcnt -- bio vector count which represents number of array element (page, offset, length) which makes up this I/O request -idx -- offset into the bio vector array -phys_segments -- number of segments in this bio after physical address coalescing is performed. -size -- total size in bytes -bdev -- target block device -bdev_contains -- points to the device object which contains the partition (when bio structure represents a partition) -p_start_sect -- points to the start sector of the partition structure of the device -  -

CONTEXT

- -

- -The process signals the transfer is done. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioblock_trace.request.3stap.html b/man/probe::ioblock_trace.request.3stap.html deleted file mode 100644 index 8c3c4c90..00000000 --- a/man/probe::ioblock_trace.request.3stap.html +++ /dev/null @@ -1,108 +0,0 @@ - -Manpage of PROBE::IOBLOCK_TRACE - -

PROBE::IOBLOCK_TRACE

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioblock_trace.request - Fires just as a generic block I/O request is created for a bio. -  -

SYNOPSIS

- -

-

-ioblock_trace.request 
-
- -  -

VALUES

- -

- -None -  -

DESCRIPTION

- -

- -

- -name -- name of the probe point -q -- request queue on which this bio was queued. -devname -- block device name -ino -- i-node number of the mapped file -bytes_done -- number of bytes transferred -sector -- beginning sector for the entire bio -flags -- see below BIO_UPTODATE 0 ok after I/O completion BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block BIO_EOF 2 out-out-bounds error BIO_SEG_VALID 3 nr_hw_seg valid BIO_CLONED 4 doesn't own data BIO_BOUNCED 5 bio is a bounce bio BIO_USER_MAPPED 6 contains user pages BIO_EOPNOTSUPP 7 not supported -

- -rw -- binary trace for read/write request -vcnt -- bio vector count which represents number of array element (page, offset, length) which make up this I/O request -idx -- offset into the bio vector array -phys_segments -- number of segments in this bio after physical address coalescing is performed. -size -- total size in bytes -bdev -- target block device -bdev_contains -- points to the device object which contains the partition (when bio structure represents a partition) -p_start_sect -- points to the start sector of the partition structure of the device -  -

CONTEXT

- -

- -The process makes block I/O request -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioscheduler.elv_add_request.3stap.html b/man/probe::ioscheduler.elv_add_request.3stap.html deleted file mode 100644 index 9b27e1ef..00000000 --- a/man/probe::ioscheduler.elv_add_request.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::IOSCHEDULER\& - -

PROBE::IOSCHEDULER\&

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioscheduler.elv_add_request - probe to indicate request is added to the request queue. -  -

SYNOPSIS

- -

-

-ioscheduler.elv_add_request 
-
- -  -

VALUES

- -

- -disk_major -

-Disk major no of request. -
- -

- -rq -

-Address of request. -
- -

- -q -

-Pointer to request queue. -
- -

- -elevator_name -

-The type of I/O elevator currently enabled. -
- -

- -disk_minor -

-Disk minor number of request. -
- -

- -rq_flags -

-Request flags. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioscheduler.elv_add_request.kp.3stap.html b/man/probe::ioscheduler.elv_add_request.kp.3stap.html deleted file mode 100644 index 0ac7ef23..00000000 --- a/man/probe::ioscheduler.elv_add_request.kp.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::IOSCHEDULER\& - -

PROBE::IOSCHEDULER\&

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioscheduler.elv_add_request.kp - kprobe based probe to indicate that a request was added to the request queue -  -

SYNOPSIS

- -

-

-ioscheduler.elv_add_request.kp 
-
- -  -

VALUES

- -

- -disk_major -

-Disk major number of the request -
- -

- -rq -

-Address of the request -
- -

- -q -

-pointer to request queue -
- -

- -name -

-Name of the probe point -
- -

- -elevator_name -

-The type of I/O elevator currently enabled -
- -

- -disk_minor -

-Disk minor number of the request -
- -

- -rq_flags -

-Request flags -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioscheduler.elv_add_request.tp.3stap.html b/man/probe::ioscheduler.elv_add_request.tp.3stap.html deleted file mode 100644 index 806518a1..00000000 --- a/man/probe::ioscheduler.elv_add_request.tp.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::IOSCHEDULER\& - -

PROBE::IOSCHEDULER\&

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioscheduler.elv_add_request.tp - tracepoint based probe to indicate a request is added to the request queue. -  -

SYNOPSIS

- -

-

-ioscheduler.elv_add_request.tp 
-
- -  -

VALUES

- -

- -disk_major -

-Disk major no of request. -
- -

- -rq -

-Address of request. -
- -

- -q -

-Pointer to request queue. -
- -

- -name -

-Name of the probe point -
- -

- -elevator_name -

-The type of I/O elevator currently enabled. -
- -

- -disk_minor -

-Disk minor number of request. -
- -

- -rq_flags -

-Request flags. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioscheduler.elv_completed_request.3stap.html b/man/probe::ioscheduler.elv_completed_request.3stap.html deleted file mode 100644 index 7c377c56..00000000 --- a/man/probe::ioscheduler.elv_completed_request.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::IOSCHEDULER\& - -

PROBE::IOSCHEDULER\&

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioscheduler.elv_completed_request - Fires when a request is completed -  -

SYNOPSIS

- -

-

-ioscheduler.elv_completed_request 
-
- -  -

VALUES

- -

- -disk_major -

-Disk major number of the request -
- -

- -rq -

-Address of the request -
- -

- -name -

-Name of the probe point -
- -

- -elevator_name -

-The type of I/O elevator currently enabled -
- -

- -disk_minor -

-Disk minor number of the request -
- -

- -rq_flags -

-Request flags -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioscheduler.elv_next_request.3stap.html b/man/probe::ioscheduler.elv_next_request.3stap.html deleted file mode 100644 index 91b1923c..00000000 --- a/man/probe::ioscheduler.elv_next_request.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::IOSCHEDULER\& - -

PROBE::IOSCHEDULER\&

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioscheduler.elv_next_request - Fires when a request is retrieved from the request queue -  -

SYNOPSIS

- -

-

-ioscheduler.elv_next_request 
-
- -  -

VALUES

- -

- -name -

-Name of the probe point -
- -

- -elevator_name -

-The type of I/O elevator currently enabled -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioscheduler.elv_next_request.return.3stap.html b/man/probe::ioscheduler.elv_next_request.return.3stap.html deleted file mode 100644 index 5f66e857..00000000 --- a/man/probe::ioscheduler.elv_next_request.return.3stap.html +++ /dev/null @@ -1,93 +0,0 @@ - -Manpage of PROBE::IOSCHEDULER\& - -

PROBE::IOSCHEDULER\&

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioscheduler.elv_next_request.return - Fires when a request retrieval issues a return signal -  -

SYNOPSIS

- -

-

-ioscheduler.elv_next_request.return 
-
- -  -

VALUES

- -

- -disk_major -

-Disk major number of the request -
- -

- -rq -

-Address of the request -
- -

- -name -

-Name of the probe point -
- -

- -disk_minor -

-Disk minor number of the request -
- -

- -rq_flags -

-Request flags -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioscheduler_trace.elv_abort_request.3stap.html b/man/probe::ioscheduler_trace.elv_abort_request.3stap.html deleted file mode 100644 index e9497196..00000000 --- a/man/probe::ioscheduler_trace.elv_abort_request.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::IOSCHEDULER_T - -

PROBE::IOSCHEDULER_T

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioscheduler_trace.elv_abort_request - Fires when a request is aborted. -  -

SYNOPSIS

- -

-

-ioscheduler_trace.elv_abort_request 
-
- -  -

VALUES

- -

- -disk_major -

-Disk major no of request. -
- -

- -rq -

-Address of request. -
- -

- -name -

-Name of the probe point -
- -

- -elevator_name -

-The type of I/O elevator currently enabled. -
- -

- -disk_minor -

-Disk minor number of request. -
- -

- -rq_flags -

-Request flags. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioscheduler_trace.elv_completed_request.3stap.html b/man/probe::ioscheduler_trace.elv_completed_request.3stap.html deleted file mode 100644 index 11f6b911..00000000 --- a/man/probe::ioscheduler_trace.elv_completed_request.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::IOSCHEDULER_T - -

PROBE::IOSCHEDULER_T

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioscheduler_trace.elv_completed_request - Fires when a request is -  -

SYNOPSIS

- -

-

-ioscheduler_trace.elv_completed_request 
-
- -  -

VALUES

- -

- -disk_major -

-Disk major no of request. -
- -

- -rq -

-Address of request. -
- -

- -name -

-Name of the probe point -
- -

- -elevator_name -

-The type of I/O elevator currently enabled. -
- -

- -disk_minor -

-Disk minor number of request. -
- -

- -rq_flags -

-Request flags. -
- -  -

DESCRIPTION

- -

- -completed. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioscheduler_trace.elv_issue_request.3stap.html b/man/probe::ioscheduler_trace.elv_issue_request.3stap.html deleted file mode 100644 index 958abc2d..00000000 --- a/man/probe::ioscheduler_trace.elv_issue_request.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::IOSCHEDULER_T - -

PROBE::IOSCHEDULER_T

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioscheduler_trace.elv_issue_request - Fires when a request is -  -

SYNOPSIS

- -

-

-ioscheduler_trace.elv_issue_request 
-
- -  -

VALUES

- -

- -disk_major -

-Disk major no of request. -
- -

- -rq -

-Address of request. -
- -

- -name -

-Name of the probe point -
- -

- -elevator_name -

-The type of I/O elevator currently enabled. -
- -

- -disk_minor -

-Disk minor number of request. -
- -

- -rq_flags -

-Request flags. -
- -  -

DESCRIPTION

- -

- -scheduled. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioscheduler_trace.elv_requeue_request.3stap.html b/man/probe::ioscheduler_trace.elv_requeue_request.3stap.html deleted file mode 100644 index 19efbdd3..00000000 --- a/man/probe::ioscheduler_trace.elv_requeue_request.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::IOSCHEDULER_T - -

PROBE::IOSCHEDULER_T

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioscheduler_trace.elv_requeue_request - Fires when a request is -  -

SYNOPSIS

- -

-

-ioscheduler_trace.elv_requeue_request 
-
- -  -

VALUES

- -

- -disk_major -

-Disk major no of request. -
- -

- -rq -

-Address of request. -
- -

- -name -

-Name of the probe point -
- -

- -elevator_name -

-The type of I/O elevator currently enabled. -
- -

- -disk_minor -

-Disk minor number of request. -
- -

- -rq_flags -

-Request flags. -
- -  -

DESCRIPTION

- -

- -put back on the queue, when the hadware cannot accept more requests. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioscheduler_trace.plug.3stap.html b/man/probe::ioscheduler_trace.plug.3stap.html deleted file mode 100644 index 6e6ff0b0..00000000 --- a/man/probe::ioscheduler_trace.plug.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::IOSCHEDULER_T - -

PROBE::IOSCHEDULER_T

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioscheduler_trace.plug - Fires when a request queue is plugged; -  -

SYNOPSIS

- -

-

-ioscheduler_trace.plug 
-
- -  -

VALUES

- -

- -name -

-Name of the probe point -
- -

- -rq_queue -

-request queue -
- -  -

DESCRIPTION

- -

- -ie, requests in the queue cannot be serviced by block driver. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioscheduler_trace.unplug_io.3stap.html b/man/probe::ioscheduler_trace.unplug_io.3stap.html deleted file mode 100644 index 8525a242..00000000 --- a/man/probe::ioscheduler_trace.unplug_io.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::IOSCHEDULER_T - -

PROBE::IOSCHEDULER_T

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioscheduler_trace.unplug_io - Fires when a request queue is unplugged; -  -

SYNOPSIS

- -

-

-ioscheduler_trace.unplug_io 
-
- -  -

VALUES

- -

- -name -

-Name of the probe point -
- -

- -rq_queue -

-request queue -
- -  -

DESCRIPTION

- -

- -Either, when number of pending requests in the queue exceeds threshold or, upon expiration of timer that was activated when queue was plugged. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ioscheduler_trace.unplug_timer.3stap.html b/man/probe::ioscheduler_trace.unplug_timer.3stap.html deleted file mode 100644 index 3e505226..00000000 --- a/man/probe::ioscheduler_trace.unplug_timer.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::IOSCHEDULER_T - -

PROBE::IOSCHEDULER_T

-Section: IO Scheduler and block IO Taps (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ioscheduler_trace.unplug_timer - Fires when unplug timer associated -  -

SYNOPSIS

- -

-

-ioscheduler_trace.unplug_timer 
-
- -  -

VALUES

- -

- -name -

-Name of the probe point -
- -

- -rq_queue -

-request queue -
- -  -

DESCRIPTION

- -

- -with a request queue expires. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ipmib.ForwDatagrams.3stap.html b/man/probe::ipmib.ForwDatagrams.3stap.html deleted file mode 100644 index aa9ebc20..00000000 --- a/man/probe::ipmib.ForwDatagrams.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::IPMIB\&.FORWD - -

PROBE::IPMIB\&.FORWD

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ipmib.ForwDatagrams - Count forwarded packet -  -

SYNOPSIS

- -

-

-ipmib.ForwDatagrams 
-
- -  -

VALUES

- -

- -skb -

-pointer to the struct sk_buff being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -ipmib_filter_key. If the packet passes the filter is is counted in the global -ForwDatagrams -(equivalent to SNMP's MIB IPSTATS_MIB_OUTFORWDATAGRAMS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ipmib.FragFails.3stap.html b/man/probe::ipmib.FragFails.3stap.html deleted file mode 100644 index 40df17ea..00000000 --- a/man/probe::ipmib.FragFails.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::IPMIB\&.FRAGF - -

PROBE::IPMIB\&.FRAGF

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ipmib.FragFails - Count datagram fragmented unsuccessfully -  -

SYNOPSIS

- -

-

-ipmib.FragFails 
-
- -  -

VALUES

- -

- -skb -

-pointer to the struct sk_buff being acted on -
- -

- -op -

-Value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -ipmib_filter_key. If the packet passes the filter is is counted in the global -FragFails -(equivalent to SNMP's MIB IPSTATS_MIB_FRAGFAILS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ipmib.FragOKs.3stap.html b/man/probe::ipmib.FragOKs.3stap.html deleted file mode 100644 index 16990841..00000000 --- a/man/probe::ipmib.FragOKs.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::IPMIB\&.FRAGO - -

PROBE::IPMIB\&.FRAGO

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ipmib.FragOKs - Count datagram fragmented successfully -  -

SYNOPSIS

- -

-

-ipmib.FragOKs 
-
- -  -

VALUES

- -

- -skb -

-pointer to the struct sk_buff being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -ipmib_filter_key. If the packet passes the filter is is counted in the global -FragOKs -(equivalent to SNMP's MIB IPSTATS_MIB_FRAGOKS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ipmib.InAddrErrors.3stap.html b/man/probe::ipmib.InAddrErrors.3stap.html deleted file mode 100644 index fad250b8..00000000 --- a/man/probe::ipmib.InAddrErrors.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::IPMIB\&.INADD - -

PROBE::IPMIB\&.INADD

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ipmib.InAddrErrors - Count arriving packets with an incorrect address -  -

SYNOPSIS

- -

-

-ipmib.InAddrErrors 
-
- -  -

VALUES

- -

- -skb -

-pointer to the struct sk_buff being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -ipmib_filter_key. If the packet passes the filter is is counted in the global -InAddrErrors -(equivalent to SNMP's MIB IPSTATS_MIB_INADDRERRORS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ipmib.InDiscards.3stap.html b/man/probe::ipmib.InDiscards.3stap.html deleted file mode 100644 index 5f867412..00000000 --- a/man/probe::ipmib.InDiscards.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::IPMIB\&.INDIS - -

PROBE::IPMIB\&.INDIS

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ipmib.InDiscards - Count discarded inbound packets -  -

SYNOPSIS

- -

-

-ipmib.InDiscards 
-
- -  -

VALUES

- -

- -skb -

-pointer to the struct sk_buff being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -ipmib_filter_key. If the packet passes the filter is is counted in the global -InDiscards -(equivalent to SNMP's MIB STATS_MIB_INDISCARDS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ipmib.InNoRoutes.3stap.html b/man/probe::ipmib.InNoRoutes.3stap.html deleted file mode 100644 index 72d6950a..00000000 --- a/man/probe::ipmib.InNoRoutes.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::IPMIB\&.INNOR - -

PROBE::IPMIB\&.INNOR

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ipmib.InNoRoutes - Count an arriving packet with no matching socket -  -

SYNOPSIS

- -

-

-ipmib.InNoRoutes 
-
- -  -

VALUES

- -

- -skb -

-pointer to the struct sk_buff being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -ipmib_filter_key. If the packet passes the filter is is counted in the global -InNoRoutes -(equivalent to SNMP's MIB IPSTATS_MIB_INNOROUTES) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ipmib.InReceives.3stap.html b/man/probe::ipmib.InReceives.3stap.html deleted file mode 100644 index 86dbe59f..00000000 --- a/man/probe::ipmib.InReceives.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::IPMIB\&.INREC - -

PROBE::IPMIB\&.INREC

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ipmib.InReceives - Count an arriving packet -  -

SYNOPSIS

- -

-

-ipmib.InReceives 
-
- -  -

VALUES

- -

- -skb -

-pointer to the struct sk_buff being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -ipmib_filter_key. If the packet passes the filter is is counted in the global -InReceives -(equivalent to SNMP's MIB IPSTATS_MIB_INRECEIVES) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ipmib.InUnknownProtos.3stap.html b/man/probe::ipmib.InUnknownProtos.3stap.html deleted file mode 100644 index 8052353f..00000000 --- a/man/probe::ipmib.InUnknownProtos.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::IPMIB\&.INUNK - -

PROBE::IPMIB\&.INUNK

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ipmib.InUnknownProtos - Count arriving packets with an unbound proto -  -

SYNOPSIS

- -

-

-ipmib.InUnknownProtos 
-
- -  -

VALUES

- -

- -skb -

-pointer to the struct sk_buff being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -ipmib_filter_key. If the packet passes the filter is is counted in the global -InUnknownProtos -(equivalent to SNMP's MIB IPSTATS_MIB_INUNKNOWNPROTOS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ipmib.OutRequests.3stap.html b/man/probe::ipmib.OutRequests.3stap.html deleted file mode 100644 index 0fcae8b6..00000000 --- a/man/probe::ipmib.OutRequests.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::IPMIB\&.OUTRE - -

PROBE::IPMIB\&.OUTRE

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ipmib.OutRequests - Count a request to send a packet -  -

SYNOPSIS

- -

-

-ipmib.OutRequests 
-
- -  -

VALUES

- -

- -skb -

-pointer to the struct sk_buff being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -ipmib_filter_key. If the packet passes the filter is is counted in the global -OutRequests -(equivalent to SNMP's MIB IPSTATS_MIB_OUTREQUESTS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ipmib.ReasmReqds.3stap.html b/man/probe::ipmib.ReasmReqds.3stap.html deleted file mode 100644 index 855de988..00000000 --- a/man/probe::ipmib.ReasmReqds.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::IPMIB\&.REASM - -

PROBE::IPMIB\&.REASM

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ipmib.ReasmReqds - Count number of packet fragments reassembly requests -  -

SYNOPSIS

- -

-

-ipmib.ReasmReqds 
-
- -  -

VALUES

- -

- -skb -

-pointer to the struct sk_buff being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -ipmib_filter_key. If the packet passes the filter is is counted in the global -ReasmReqds -(equivalent to SNMP's MIB IPSTATS_MIB_REASMREQDS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::ipmib.ReasmTimeout.3stap.html b/man/probe::ipmib.ReasmTimeout.3stap.html deleted file mode 100644 index 503aa7df..00000000 --- a/man/probe::ipmib.ReasmTimeout.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::IPMIB\&.REASM - -

PROBE::IPMIB\&.REASM

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::ipmib.ReasmTimeout - Count Reassembly Timeouts -  -

SYNOPSIS

- -

-

-ipmib.ReasmTimeout 
-
- -  -

VALUES

- -

- -skb -

-pointer to the struct sk_buff being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -ipmib_filter_key. If the packet passes the filter is is counted in the global -ReasmTimeout -(equivalent to SNMP's MIB IPSTATS_MIB_REASMTIMEOUT) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::irq_handler.entry.3stap.html b/man/probe::irq_handler.entry.3stap.html deleted file mode 100644 index dd41812a..00000000 --- a/man/probe::irq_handler.entry.3stap.html +++ /dev/null @@ -1,142 +0,0 @@ - -Manpage of PROBE::IRQ_HANDLER\& - -

PROBE::IRQ_HANDLER\&

-Section: Interrupt Request (IRQ) Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::irq_handler.entry - Execution of interrupt handler starting -  -

SYNOPSIS

- -

-

-irq_handler.entry 
-
- -  -

VALUES

- -

- -dev_name -

-name of device -
- -

- -flags -

-Flags for IRQ handler -
- -

- -dev_id -

-Cookie to identify device -
- -

- -dir -

-pointer to the proc/irq/NN/name entry -
- -

- -irq -

-irq number -
- -

- -next_irqaction -

-pointer to next irqaction for shared interrupts -
- -

- -thread_flags -

-Flags related to thread -
- -

- -thread -

-thread pointer for threaded interrupts -
- -

- -thread_fn -

-interrupt handler function for threaded interrupts -
- -

- -handler -

-interrupt handler function -
- -

- -flags_str -

-symbolic string representation of IRQ flags -
- -

- -action -

-struct irqaction* for this interrupt num -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::irq_handler.exit.3stap.html b/man/probe::irq_handler.exit.3stap.html deleted file mode 100644 index c3b0c6d3..00000000 --- a/man/probe::irq_handler.exit.3stap.html +++ /dev/null @@ -1,149 +0,0 @@ - -Manpage of PROBE::IRQ_HANDLER\& - -

PROBE::IRQ_HANDLER\&

-Section: Interrupt Request (IRQ) Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::irq_handler.exit - Execution of interrupt handler completed -  -

SYNOPSIS

- -

-

-irq_handler.exit 
-
- -  -

VALUES

- -

- -dev_name -

-name of device -
- -

- -ret -

-return value of the handler -
- -

- -flags -

-flags for IRQ handler -
- -

- -dev_id -

-Cookie to identify device -
- -

- -dir -

-pointer to the proc/irq/NN/name entry -
- -

- -next_irqaction -

-pointer to next irqaction for shared interrupts -
- -

- -irq -

-interrupt number -
- -

- -thread_flags -

-Flags related to thread -
- -

- -thread -

-thread pointer for threaded interrupts -
- -

- -thread_fn -

-interrupt handler function for threaded interrupts -
- -

- -flags_str -

-symbolic string representation of IRQ flags -
- -

- -handler -

-interrupt handler function that was executed -
- -

- -action -

-struct irqaction* -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::kprocess.create.3stap.html b/man/probe::kprocess.create.3stap.html deleted file mode 100644 index 05a39b20..00000000 --- a/man/probe::kprocess.create.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::KPROCESS\&.CR - -

PROBE::KPROCESS\&.CR

-Section: Kernel Process Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::kprocess.create - Fires whenever a new process or thread is successfully created -  -

SYNOPSIS

- -

-

-kprocess.create 
-
- -  -

VALUES

- -

- -new_tid -

-The TID of the newly created task -
- -

- -new_pid -

-The PID of the newly created process -
- -  -

CONTEXT

- -

- -Parent of the created process. -  -

DESCRIPTION

- -

- -Fires whenever a new process is successfully created, either as a result of fork (or one of its syscall variants), or a new kernel thread. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::kprocess.exec.3stap.html b/man/probe::kprocess.exec.3stap.html deleted file mode 100644 index 0d438d69..00000000 --- a/man/probe::kprocess.exec.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::KPROCESS\&.EX - -

PROBE::KPROCESS\&.EX

-Section: Kernel Process Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::kprocess.exec - Attempt to exec to a new program -  -

SYNOPSIS

- -

-

-kprocess.exec 
-
- -  -

VALUES

- -

- -argstr -

-A string containing the filename followed by the arguments to pass, excluding 0th arg (SystemTap v2.5+) -
- -

- -filename -

-The path to the new executable -
- -

- -args -

-The arguments to pass to the new executable, including the 0th arg (SystemTap v2.5+) -
- -

- -name -

-Name of the system call ("execve") (SystemTap v2.5+) -
- -  -

CONTEXT

- -

- -The caller of exec. -  -

DESCRIPTION

- -

- -Fires whenever a process attempts to exec to a new program. Aliased to the syscall.execve probe in SystemTap v2.5+. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::kprocess.exec_complete.3stap.html b/man/probe::kprocess.exec_complete.3stap.html deleted file mode 100644 index 34fc4adb..00000000 --- a/man/probe::kprocess.exec_complete.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::KPROCESS\&.EX - -

PROBE::KPROCESS\&.EX

-Section: Kernel Process Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::kprocess.exec_complete - Return from exec to a new program -  -

SYNOPSIS

- -

-

-kprocess.exec_complete 
-
- -  -

VALUES

- -

- -retstr -

-A string representation of errno (SystemTap v2.5+) -
- -

- -success -

-A boolean indicating whether the exec was successful -
- -

- -name -

-Name of the system call ("execve") (SystemTap v2.5+) -
- -

- -errno -

-The error number resulting from the exec -
- -  -

CONTEXT

- -

- -On success, the context of the new executable. On failure, remains in the context of the caller. -  -

DESCRIPTION

- -

- -Fires at the completion of an exec call. Aliased to the syscall.execve.return probe in SystemTap v2.5+. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::kprocess.exit.3stap.html b/man/probe::kprocess.exit.3stap.html deleted file mode 100644 index f1bdb02c..00000000 --- a/man/probe::kprocess.exit.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::KPROCESS\&.EX - -

PROBE::KPROCESS\&.EX

-Section: Kernel Process Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::kprocess.exit - Exit from process -  -

SYNOPSIS

- -

-

-kprocess.exit 
-
- -  -

VALUES

- -

- -code -

-The exit code of the process -
- -  -

CONTEXT

- -

- -The process which is terminating. -  -

DESCRIPTION

- -

- -Fires when a process terminates. This will always be followed by a kprocess.release, though the latter may be delayed if the process waits in a zombie state. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::kprocess.release.3stap.html b/man/probe::kprocess.release.3stap.html deleted file mode 100644 index 6a391311..00000000 --- a/man/probe::kprocess.release.3stap.html +++ /dev/null @@ -1,102 +0,0 @@ - -Manpage of PROBE::KPROCESS\&.RE - -

PROBE::KPROCESS\&.RE

-Section: Kernel Process Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::kprocess.release - Process released -  -

SYNOPSIS

- -

-

-kprocess.release 
-
- -  -

VALUES

- -

- -pid -

-Same as -released_pid -for compatibility (deprecated) -
- -

- -released_pid -

-PID of the process being released -
- -

- -released_tid -

-TID of the task being released -
- -

- -task -

-A task handle to the process being released -
- -  -

CONTEXT

- -

- -The context of the parent, if it wanted notification of this process' termination, else the context of the process itself. -  -

DESCRIPTION

- -

- -Fires when a process is released from the kernel. This always follows a kprocess.exit, though it may be delayed somewhat if the process waits in a zombie state. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::kprocess.start.3stap.html b/man/probe::kprocess.start.3stap.html deleted file mode 100644 index 870af978..00000000 --- a/man/probe::kprocess.start.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of PROBE::KPROCESS\&.ST - -

PROBE::KPROCESS\&.ST

-Section: Kernel Process Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::kprocess.start - Starting new process -  -

SYNOPSIS

- -

-

-kprocess.start 
-
- -  -

VALUES

- -

- -None -  -

CONTEXT

- -

- -Newly created process. -  -

DESCRIPTION

- -

- -Fires immediately before a new process begins execution. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::linuxmib.DelayedACKs.3stap.html b/man/probe::linuxmib.DelayedACKs.3stap.html deleted file mode 100644 index c35c121f..00000000 --- a/man/probe::linuxmib.DelayedACKs.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::LINUXMIB\&.DE - -

PROBE::LINUXMIB\&.DE

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::linuxmib.DelayedACKs - Count of delayed acks -  -

SYNOPSIS

- -

-

-linuxmib.DelayedACKs 
-
- -  -

VALUES

- -

- -sk -

-Pointer to the struct sock being acted on -
- -

- -op -

-Value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -linuxmib_filter_key. If the packet passes the filter is is counted in the global -DelayedACKs -(equivalent to SNMP's MIB LINUX_MIB_DELAYEDACKS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::linuxmib.ListenDrops.3stap.html b/man/probe::linuxmib.ListenDrops.3stap.html deleted file mode 100644 index bc1bd331..00000000 --- a/man/probe::linuxmib.ListenDrops.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::LINUXMIB\&.LI - -

PROBE::LINUXMIB\&.LI

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::linuxmib.ListenDrops - Count of times conn request that were dropped -  -

SYNOPSIS

- -

-

-linuxmib.ListenDrops 
-
- -  -

VALUES

- -

- -sk -

-Pointer to the struct sock being acted on -
- -

- -op -

-Value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -linuxmib_filter_key. If the packet passes the filter is is counted in the global -ListenDrops -(equivalent to SNMP's MIB LINUX_MIB_LISTENDROPS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::linuxmib.ListenOverflows.3stap.html b/man/probe::linuxmib.ListenOverflows.3stap.html deleted file mode 100644 index eb0c479e..00000000 --- a/man/probe::linuxmib.ListenOverflows.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::LINUXMIB\&.LI - -

PROBE::LINUXMIB\&.LI

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::linuxmib.ListenOverflows - Count of times a listen queue overflowed -  -

SYNOPSIS

- -

-

-linuxmib.ListenOverflows 
-
- -  -

VALUES

- -

- -sk -

-Pointer to the struct sock being acted on -
- -

- -op -

-Value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -linuxmib_filter_key. If the packet passes the filter is is counted in the global -ListenOverflows -(equivalent to SNMP's MIB LINUX_MIB_LISTENOVERFLOWS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::linuxmib.TCPMemoryPressures.3stap.html b/man/probe::linuxmib.TCPMemoryPressures.3stap.html deleted file mode 100644 index abf8edd5..00000000 --- a/man/probe::linuxmib.TCPMemoryPressures.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::LINUXMIB\&.TC - -

PROBE::LINUXMIB\&.TC

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::linuxmib.TCPMemoryPressures - Count of times memory pressure was used -  -

SYNOPSIS

- -

-

-linuxmib.TCPMemoryPressures 
-
- -  -

VALUES

- -

- -sk -

-Pointer to the struct sock being acted on -
- -

- -op -

-Value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -linuxmib_filter_key. If the packet passes the filter is is counted in the global -TCPMemoryPressures -(equivalent to SNMP's MIB LINUX_MIB_TCPMEMORYPRESSURES) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netdev.change_mac.3stap.html b/man/probe::netdev.change_mac.3stap.html deleted file mode 100644 index a1a67836..00000000 --- a/man/probe::netdev.change_mac.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::NETDEV\&.CHAN - -

PROBE::NETDEV\&.CHAN

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netdev.change_mac - Called when the netdev_name has the MAC changed -  -

SYNOPSIS

- -

-

-netdev.change_mac 
-
- -  -

VALUES

- -

- -dev_name -

-The device that will have the MAC changed -
- -

- -new_mac -

-The new MAC address -
- -

- -mac_len -

-The MAC length -
- -

- -old_mac -

-The current MAC address -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netdev.change_mtu.3stap.html b/man/probe::netdev.change_mtu.3stap.html deleted file mode 100644 index e2ec2571..00000000 --- a/man/probe::netdev.change_mtu.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::NETDEV\&.CHAN - -

PROBE::NETDEV\&.CHAN

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netdev.change_mtu - Called when the netdev MTU is changed -  -

SYNOPSIS

- -

-

-netdev.change_mtu 
-
- -  -

VALUES

- -

- -dev_name -

-The device that will have the MTU changed -
- -

- -new_mtu -

-The new MTU -
- -

- -old_mtu -

-The current MTU -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netdev.change_rx_flag.3stap.html b/man/probe::netdev.change_rx_flag.3stap.html deleted file mode 100644 index 06ee3687..00000000 --- a/man/probe::netdev.change_rx_flag.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::NETDEV\&.CHAN - -

PROBE::NETDEV\&.CHAN

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netdev.change_rx_flag - Called when the device RX flag will be changed -  -

SYNOPSIS

- -

-

-netdev.change_rx_flag 
-
- -  -

VALUES

- -

- -dev_name -

-The device that will be changed -
- -

- -flags -

-The new flags -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netdev.close.3stap.html b/man/probe::netdev.close.3stap.html deleted file mode 100644 index 3887b378..00000000 --- a/man/probe::netdev.close.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of PROBE::NETDEV\&.CLOS - -

PROBE::NETDEV\&.CLOS

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netdev.close - Called when the device is closed -  -

SYNOPSIS

- -

-

-netdev.close 
-
- -  -

VALUES

- -

- -dev_name -

-The device that is going to be closed -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netdev.get_stats.3stap.html b/man/probe::netdev.get_stats.3stap.html deleted file mode 100644 index b33e2caa..00000000 --- a/man/probe::netdev.get_stats.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of PROBE::NETDEV\&.GET_ - -

PROBE::NETDEV\&.GET_

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netdev.get_stats - Called when someone asks the device statistics -  -

SYNOPSIS

- -

-

-netdev.get_stats 
-
- -  -

VALUES

- -

- -dev_name -

-The device that is going to provide the statistics -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netdev.hard_transmit.3stap.html b/man/probe::netdev.hard_transmit.3stap.html deleted file mode 100644 index 480fe1bb..00000000 --- a/man/probe::netdev.hard_transmit.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::NETDEV\&.HARD - -

PROBE::NETDEV\&.HARD

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netdev.hard_transmit - Called when the devices is going to TX (hard) -  -

SYNOPSIS

- -

-

-netdev.hard_transmit 
-
- -  -

VALUES

- -

- -protocol -

-The protocol used in the transmission -
- -

- -dev_name -

-The device scheduled to transmit -
- -

- -length -

-The length of the transmit buffer. -
- -

- -truesize -

-The size of the data to be transmitted. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netdev.ioctl.3stap.html b/man/probe::netdev.ioctl.3stap.html deleted file mode 100644 index ee694939..00000000 --- a/man/probe::netdev.ioctl.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::NETDEV\&.IOCT - -

PROBE::NETDEV\&.IOCT

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netdev.ioctl - Called when the device suffers an IOCTL -  -

SYNOPSIS

- -

-

-netdev.ioctl 
-
- -  -

VALUES

- -

- -cmd -

-The IOCTL request -
- -

- -arg -

-The IOCTL argument (usually the netdev interface) -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netdev.open.3stap.html b/man/probe::netdev.open.3stap.html deleted file mode 100644 index 8b199ce2..00000000 --- a/man/probe::netdev.open.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of PROBE::NETDEV\&.OPEN - -

PROBE::NETDEV\&.OPEN

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netdev.open - Called when the device is opened -  -

SYNOPSIS

- -

-

-netdev.open 
-
- -  -

VALUES

- -

- -dev_name -

-The device that is going to be opened -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netdev.receive.3stap.html b/man/probe::netdev.receive.3stap.html deleted file mode 100644 index 5af92a13..00000000 --- a/man/probe::netdev.receive.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::NETDEV\&.RECE - -

PROBE::NETDEV\&.RECE

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netdev.receive - Data received from network device. -  -

SYNOPSIS

- -

-

-netdev.receive 
-
- -  -

VALUES

- -

- -protocol -

-Protocol of received packet. -
- -

- -dev_name -

-The name of the device. e.g: eth0, ath1. -
- -

- -length -

-The length of the receiving buffer. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netdev.register.3stap.html b/man/probe::netdev.register.3stap.html deleted file mode 100644 index 258f6795..00000000 --- a/man/probe::netdev.register.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of PROBE::NETDEV\&.REGI - -

PROBE::NETDEV\&.REGI

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netdev.register - Called when the device is registered -  -

SYNOPSIS

- -

-

-netdev.register 
-
- -  -

VALUES

- -

- -dev_name -

-The device that is going to be registered -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netdev.rx.3stap.html b/man/probe::netdev.rx.3stap.html deleted file mode 100644 index e0f892dc..00000000 --- a/man/probe::netdev.rx.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::NETDEV\&.RX - -

PROBE::NETDEV\&.RX

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netdev.rx - Called when the device is going to receive a packet -  -

SYNOPSIS

- -

-

-netdev.rx 
-
- -  -

VALUES

- -

- -protocol -

-The packet protocol -
- -

- -dev_name -

-The device received the packet -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netdev.set_promiscuity.3stap.html b/man/probe::netdev.set_promiscuity.3stap.html deleted file mode 100644 index ce7d2deb..00000000 --- a/man/probe::netdev.set_promiscuity.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::NETDEV\&.SET_ - -

PROBE::NETDEV\&.SET_

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netdev.set_promiscuity - Called when the device enters/leaves promiscuity -  -

SYNOPSIS

- -

-

-netdev.set_promiscuity 
-
- -  -

VALUES

- -

- -dev_name -

-The device that is entering/leaving promiscuity mode -
- -

- -enable -

-If the device is entering promiscuity mode -
- -

- -inc -

-Count the number of promiscuity openers -
- -

- -disable -

-If the device is leaving promiscuity mode -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netdev.transmit.3stap.html b/man/probe::netdev.transmit.3stap.html deleted file mode 100644 index 53bc28bb..00000000 --- a/man/probe::netdev.transmit.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::NETDEV\&.TRAN - -

PROBE::NETDEV\&.TRAN

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netdev.transmit - Network device transmitting buffer -  -

SYNOPSIS

- -

-

-netdev.transmit 
-
- -  -

VALUES

- -

- -protocol -

-The protocol of this packet(defined in include/linux/if_ether.h). -
- -

- -dev_name -

-The name of the device. e.g: eth0, ath1. -
- -

- -length -

-The length of the transmit buffer. -
- -

- -truesize -

-The size of the data to be transmitted. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netdev.unregister.3stap.html b/man/probe::netdev.unregister.3stap.html deleted file mode 100644 index 899fc982..00000000 --- a/man/probe::netdev.unregister.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of PROBE::NETDEV\&.UNRE - -

PROBE::NETDEV\&.UNRE

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netdev.unregister - Called when the device is being unregistered -  -

SYNOPSIS

- -

-

-netdev.unregister 
-
- -  -

VALUES

- -

- -dev_name -

-The device that is going to be unregistered -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netfilter.arp.forward.3stap.html b/man/probe::netfilter.arp.forward.3stap.html deleted file mode 100644 index 32e0e2c6..00000000 --- a/man/probe::netfilter.arp.forward.3stap.html +++ /dev/null @@ -1,220 +0,0 @@ - -Manpage of PROBE::NETFILTER\&.A - -

PROBE::NETFILTER\&.A

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netfilter.arp.forward - - Called for each ARP packet to be forwarded -  -

SYNOPSIS

- -

-

-netfilter.arp.forward 
-
- -  -

VALUES

- -

- -indev -

-Address of net_device representing input device, 0 if unknown -
- -

- -nf_accept -

-Constant used to signify an 'accept' verdict -
- -

- -ar_sha -

-Ethernet+IP only (ar_pro==0x800): source hardware (MAC) address -
- -

- -pf -

-Protocol family -- always -"arp" -
- -

- -ar_sip -

-Ethernet+IP only (ar_pro==0x800): source IP address -
- -

- -nf_queue -

-Constant used to signify a 'queue' verdict -
- -

- -ar_op -

-ARP opcode (command) -
- -

- -nf_stolen -

-Constant used to signify a 'stolen' verdict -
- -

- -outdev_name -

-Name of network device packet will be routed to (if known) -
- -

- -nf_drop -

-Constant used to signify a 'drop' verdict -
- -

- -ar_hln -

-Length of hardware address -
- -

- -ar_pro -

-Format of protocol address -
- -

- -ar_pln -

-Length of protocol address -
- -

- -ar_tip -

-Ethernet+IP only (ar_pro==0x800): target IP address -
- -

- -nf_stop -

-Constant used to signify a 'stop' verdict -
- -

- -arphdr -

-Address of ARP header -
- -

- -length -

-The length of the packet buffer contents, in bytes -
- -

- -outdev -

-Address of net_device representing output device, 0 if unknown -
- -

- -ar_tha -

-Ethernet+IP only (ar_pro==0x800): target hardware (MAC) address -
- -

- -ar_data -

-Address of ARP packet data region (after the header) -
- -

- -nf_repeat -

-Constant used to signify a 'repeat' verdict -
- -

- -indev_name -

-Name of network device packet was received on (if known) -
- -

- -ar_hrd -

-Format of hardware address -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netfilter.arp.in.3stap.html b/man/probe::netfilter.arp.in.3stap.html deleted file mode 100644 index c31a21a9..00000000 --- a/man/probe::netfilter.arp.in.3stap.html +++ /dev/null @@ -1,220 +0,0 @@ - -Manpage of PROBE::NETFILTER\&.A - -

PROBE::NETFILTER\&.A

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netfilter.arp.in - - Called for each incoming ARP packet -  -

SYNOPSIS

- -

-

-netfilter.arp.in 
-
- -  -

VALUES

- -

- -indev -

-Address of net_device representing input device, 0 if unknown -
- -

- -nf_accept -

-Constant used to signify an 'accept' verdict -
- -

- -ar_sha -

-Ethernet+IP only (ar_pro==0x800): source hardware (MAC) address -
- -

- -pf -

-Protocol family -- always -"arp" -
- -

- -ar_sip -

-Ethernet+IP only (ar_pro==0x800): source IP address -
- -

- -nf_queue -

-Constant used to signify a 'queue' verdict -
- -

- -ar_op -

-ARP opcode (command) -
- -

- -nf_stolen -

-Constant used to signify a 'stolen' verdict -
- -

- -outdev_name -

-Name of network device packet will be routed to (if known) -
- -

- -nf_drop -

-Constant used to signify a 'drop' verdict -
- -

- -ar_hln -

-Length of hardware address -
- -

- -ar_pro -

-Format of protocol address -
- -

- -ar_pln -

-Length of protocol address -
- -

- -ar_tip -

-Ethernet+IP only (ar_pro==0x800): target IP address -
- -

- -nf_stop -

-Constant used to signify a 'stop' verdict -
- -

- -arphdr -

-Address of ARP header -
- -

- -length -

-The length of the packet buffer contents, in bytes -
- -

- -outdev -

-Address of net_device representing output device, 0 if unknown -
- -

- -ar_tha -

-Ethernet+IP only (ar_pro==0x800): target hardware (MAC) address -
- -

- -ar_data -

-Address of ARP packet data region (after the header) -
- -

- -nf_repeat -

-Constant used to signify a 'repeat' verdict -
- -

- -indev_name -

-Name of network device packet was received on (if known) -
- -

- -ar_hrd -

-Format of hardware address -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netfilter.arp.out.3stap.html b/man/probe::netfilter.arp.out.3stap.html deleted file mode 100644 index 7723dbb9..00000000 --- a/man/probe::netfilter.arp.out.3stap.html +++ /dev/null @@ -1,220 +0,0 @@ - -Manpage of PROBE::NETFILTER\&.A - -

PROBE::NETFILTER\&.A

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netfilter.arp.out - - Called for each outgoing ARP packet -  -

SYNOPSIS

- -

-

-netfilter.arp.out 
-
- -  -

VALUES

- -

- -indev -

-Address of net_device representing input device, 0 if unknown -
- -

- -nf_accept -

-Constant used to signify an 'accept' verdict -
- -

- -ar_sha -

-Ethernet+IP only (ar_pro==0x800): source hardware (MAC) address -
- -

- -pf -

-Protocol family -- always -"arp" -
- -

- -ar_sip -

-Ethernet+IP only (ar_pro==0x800): source IP address -
- -

- -nf_queue -

-Constant used to signify a 'queue' verdict -
- -

- -ar_op -

-ARP opcode (command) -
- -

- -nf_stolen -

-Constant used to signify a 'stolen' verdict -
- -

- -outdev_name -

-Name of network device packet will be routed to (if known) -
- -

- -nf_drop -

-Constant used to signify a 'drop' verdict -
- -

- -ar_hln -

-Length of hardware address -
- -

- -ar_pro -

-Format of protocol address -
- -

- -ar_pln -

-Length of protocol address -
- -

- -ar_tip -

-Ethernet+IP only (ar_pro==0x800): target IP address -
- -

- -nf_stop -

-Constant used to signify a 'stop' verdict -
- -

- -arphdr -

-Address of ARP header -
- -

- -length -

-The length of the packet buffer contents, in bytes -
- -

- -outdev -

-Address of net_device representing output device, 0 if unknown -
- -

- -ar_tha -

-Ethernet+IP only (ar_pro==0x800): target hardware (MAC) address -
- -

- -ar_data -

-Address of ARP packet data region (after the header) -
- -

- -nf_repeat -

-Constant used to signify a 'repeat' verdict -
- -

- -indev_name -

-Name of network device packet was received on (if known) -
- -

- -ar_hrd -

-Format of hardware address -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netfilter.bridge.forward.3stap.html b/man/probe::netfilter.bridge.forward.3stap.html deleted file mode 100644 index ee925f52..00000000 --- a/man/probe::netfilter.bridge.forward.3stap.html +++ /dev/null @@ -1,143 +0,0 @@ - -Manpage of PROBE::NETFILTER\&.B - -

PROBE::NETFILTER\&.B

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netfilter.bridge.forward - Called on an incoming bridging packet destined for some other computer -  -

SYNOPSIS

- -

-

-netfilter.bridge.forward 
-
- -  -

VALUES

- -

- -indev -

-Address of net_device representing input device, 0 if unknown -
- -

- -nf_accept -

-Constant used to signify an 'accept' verdict -
- -

- -pf -

-Protocol family -- always -"bridge" -
- -

- -nf_queue -

-Constant used to signify a 'queue' verdict -
- -

- -nf_stolen -

-Constant used to signify a 'stolen' verdict -
- -

- -outdev_name -

-Name of network device packet will be routed to (if known) -
- -

- -nf_drop -

-Constant used to signify a 'drop' verdict -
- -

- -nf_stop -

-Constant used to signify a 'stop' verdict -
- -

- -length -

-The length of the packet buffer contents, in bytes -
- -

- -outdev -

-Address of net_device representing output device, 0 if unknown -
- -

- -nf_repeat -

-Constant used to signify a 'repeat' verdict -
- -

- -indev_name -

-Name of network device packet was received on (if known) -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netfilter.bridge.local_in.3stap.html b/man/probe::netfilter.bridge.local_in.3stap.html deleted file mode 100644 index a65c4560..00000000 --- a/man/probe::netfilter.bridge.local_in.3stap.html +++ /dev/null @@ -1,143 +0,0 @@ - -Manpage of PROBE::NETFILTER\&.B - -

PROBE::NETFILTER\&.B

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netfilter.bridge.local_in - Called on a bridging packet destined for the local computer -  -

SYNOPSIS

- -

-

-netfilter.bridge.local_in 
-
- -  -

VALUES

- -

- -indev -

-Address of net_device representing input device, 0 if unknown -
- -

- -nf_accept -

-Constant used to signify an 'accept' verdict -
- -

- -pf -

-Protocol family -- always -"bridge" -
- -

- -nf_queue -

-Constant used to signify a 'queue' verdict -
- -

- -nf_stolen -

-Constant used to signify a 'stolen' verdict -
- -

- -outdev_name -

-Name of network device packet will be routed to (if known) -
- -

- -nf_drop -

-Constant used to signify a 'drop' verdict -
- -

- -nf_stop -

-Constant used to signify a 'stop' verdict -
- -

- -length -

-The length of the packet buffer contents, in bytes -
- -

- -outdev -

-Address of net_device representing output device, 0 if unknown -
- -

- -nf_repeat -

-Constant used to signify a 'repeat' verdict -
- -

- -indev_name -

-Name of network device packet was received on (if known) -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netfilter.bridge.local_out.3stap.html b/man/probe::netfilter.bridge.local_out.3stap.html deleted file mode 100644 index a105004a..00000000 --- a/man/probe::netfilter.bridge.local_out.3stap.html +++ /dev/null @@ -1,143 +0,0 @@ - -Manpage of PROBE::NETFILTER\&.B - -

PROBE::NETFILTER\&.B

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netfilter.bridge.local_out - Called on a bridging packet coming from a local process -  -

SYNOPSIS

- -

-

-netfilter.bridge.local_out 
-
- -  -

VALUES

- -

- -indev -

-Address of net_device representing input device, 0 if unknown -
- -

- -nf_accept -

-Constant used to signify an 'accept' verdict -
- -

- -pf -

-Protocol family -- always -"bridge" -
- -

- -nf_queue -

-Constant used to signify a 'queue' verdict -
- -

- -nf_stolen -

-Constant used to signify a 'stolen' verdict -
- -

- -outdev_name -

-Name of network device packet will be routed to (if known) -
- -

- -nf_drop -

-Constant used to signify a 'drop' verdict -
- -

- -nf_stop -

-Constant used to signify a 'stop' verdict -
- -

- -length -

-The length of the packet buffer contents, in bytes -
- -

- -outdev -

-Address of net_device representing output device, 0 if unknown -
- -

- -nf_repeat -

-Constant used to signify a 'repeat' verdict -
- -

- -indev_name -

-Name of network device packet was received on (if known) -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netfilter.bridge.post_routing.3stap.html b/man/probe::netfilter.bridge.post_routing.3stap.html deleted file mode 100644 index d0830b23..00000000 --- a/man/probe::netfilter.bridge.post_routing.3stap.html +++ /dev/null @@ -1,143 +0,0 @@ - -Manpage of PROBE::NETFILTER\&.B - -

PROBE::NETFILTER\&.B

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netfilter.bridge.post_routing - - Called before a bridging packet hits the wire -  -

SYNOPSIS

- -

-

-netfilter.bridge.post_routing 
-
- -  -

VALUES

- -

- -indev -

-Address of net_device representing input device, 0 if unknown -
- -

- -nf_accept -

-Constant used to signify an 'accept' verdict -
- -

- -pf -

-Protocol family -- always -"bridge" -
- -

- -nf_queue -

-Constant used to signify a 'queue' verdict -
- -

- -nf_stolen -

-Constant used to signify a 'stolen' verdict -
- -

- -outdev_name -

-Name of network device packet will be routed to (if known) -
- -

- -nf_drop -

-Constant used to signify a 'drop' verdict -
- -

- -nf_stop -

-Constant used to signify a 'stop' verdict -
- -

- -length -

-The length of the packet buffer contents, in bytes -
- -

- -outdev -

-Address of net_device representing output device, 0 if unknown -
- -

- -nf_repeat -

-Constant used to signify a 'repeat' verdict -
- -

- -indev_name -

-Name of network device packet was received on (if known) -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netfilter.bridge.pre_routing.3stap.html b/man/probe::netfilter.bridge.pre_routing.3stap.html deleted file mode 100644 index 4a18b984..00000000 --- a/man/probe::netfilter.bridge.pre_routing.3stap.html +++ /dev/null @@ -1,143 +0,0 @@ - -Manpage of PROBE::NETFILTER\&.B - -

PROBE::NETFILTER\&.B

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netfilter.bridge.pre_routing - - Called before a bridging packet is routed -  -

SYNOPSIS

- -

-

-netfilter.bridge.pre_routing 
-
- -  -

VALUES

- -

- -indev -

-Address of net_device representing input device, 0 if unknown -
- -

- -nf_accept -

-Constant used to signify an 'accept' verdict -
- -

- -pf -

-Protocol family -- always -"bridge" -
- -

- -nf_queue -

-Constant used to signify a 'queue' verdict -
- -

- -nf_stolen -

-Constant used to signify a 'stolen' verdict -
- -

- -outdev_name -

-Name of network device packet will be routed to (if known) -
- -

- -nf_drop -

-Constant used to signify a 'drop' verdict -
- -

- -nf_stop -

-Constant used to signify a 'stop' verdict -
- -

- -length -

-The length of the packet buffer contents, in bytes -
- -

- -outdev -

-Address of net_device representing output device, 0 if unknown -
- -

- -nf_repeat -

-Constant used to signify a 'repeat' verdict -
- -

- -indev_name -

-Name of network device packet was received on (if known) -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netfilter.ip.forward.3stap.html b/man/probe::netfilter.ip.forward.3stap.html deleted file mode 100644 index 706ee030..00000000 --- a/man/probe::netfilter.ip.forward.3stap.html +++ /dev/null @@ -1,250 +0,0 @@ - -Manpage of PROBE::NETFILTER\&.I - -

PROBE::NETFILTER\&.I

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netfilter.ip.forward - Called on an incoming IP packet addressed to some other computer -  -

SYNOPSIS

- -

-

-netfilter.ip.forward 
-
- -  -

VALUES

- -

- -urg -

-TCP URG flag (if protocol is TCP; ipv4 only) -
- -

- -protocol -

-Packet protocol from driver (ipv4 only) -
- -

- -indev -

-Address of net_device representing input device, 0 if unknown -
- -

- -nf_accept -

-Constant used to signify an 'accept' verdict -
- -

- -pf -

-Protocol family -- either -"ipv4" -or -"ipv6" -
- -

- -ipproto_tcp -

-Constant used to signify that the packet protocol is TCP -
- -

- -rst -

-TCP RST flag (if protocol is TCP; ipv4 only) -
- -

- -dport -

-TCP or UDP destination port (ipv4 only) -
- -

- -nf_queue -

-Constant used to signify a 'queue' verdict -
- -

- -nf_stolen -

-Constant used to signify a 'stolen' verdict -
- -

- -ipproto_udp -

-Constant used to signify that the packet protocol is UDP -
- -

- -outdev_name -

-Name of network device packet will be routed to (if known) -
- -

- -ack -

-TCP ACK flag (if protocol is TCP; ipv4 only) -
- -

- -fin -

-TCP FIN flag (if protocol is TCP; ipv4 only) -
- -

- -nf_drop -

-Constant used to signify a 'drop' verdict -
- -

- -psh -

-TCP PSH flag (if protocol is TCP; ipv4 only) -
- -

- -saddr -

-A string representing the source IP address -
- -

- -nf_stop -

-Constant used to signify a 'stop' verdict -
- -

- -length -

-The length of the packet buffer contents, in bytes -
- -

- -daddr -

-A string representing the destination IP address -
- -

- -outdev -

-Address of net_device representing output device, 0 if unknown -
- -

- -syn -

-TCP SYN flag (if protocol is TCP; ipv4 only) -
- -

- -sport -

-TCP or UDP source port (ipv4 only) -
- -

- -nf_repeat -

-Constant used to signify a 'repeat' verdict -
- -

- -indev_name -

-Name of network device packet was received on (if known) -
- -

- -family -

-IP address family -
- -

- -iphdr -

-Address of IP header -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netfilter.ip.local_in.3stap.html b/man/probe::netfilter.ip.local_in.3stap.html deleted file mode 100644 index 7f76edde..00000000 --- a/man/probe::netfilter.ip.local_in.3stap.html +++ /dev/null @@ -1,250 +0,0 @@ - -Manpage of PROBE::NETFILTER\&.I - -

PROBE::NETFILTER\&.I

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netfilter.ip.local_in - Called on an incoming IP packet addressed to the local computer -  -

SYNOPSIS

- -

-

-netfilter.ip.local_in 
-
- -  -

VALUES

- -

- -urg -

-TCP URG flag (if protocol is TCP; ipv4 only) -
- -

- -protocol -

-Packet protocol from driver (ipv4 only) -
- -

- -indev -

-Address of net_device representing input device, 0 if unknown -
- -

- -nf_accept -

-Constant used to signify an 'accept' verdict -
- -

- -pf -

-Protocol family -- either -"ipv4" -or -"ipv6" -
- -

- -ipproto_tcp -

-Constant used to signify that the packet protocol is TCP -
- -

- -rst -

-TCP RST flag (if protocol is TCP; ipv4 only) -
- -

- -dport -

-TCP or UDP destination port (ipv4 only) -
- -

- -nf_queue -

-Constant used to signify a 'queue' verdict -
- -

- -nf_stolen -

-Constant used to signify a 'stolen' verdict -
- -

- -ipproto_udp -

-Constant used to signify that the packet protocol is UDP -
- -

- -outdev_name -

-Name of network device packet will be routed to (if known) -
- -

- -ack -

-TCP ACK flag (if protocol is TCP; ipv4 only) -
- -

- -fin -

-TCP FIN flag (if protocol is TCP; ipv4 only) -
- -

- -nf_drop -

-Constant used to signify a 'drop' verdict -
- -

- -psh -

-TCP PSH flag (if protocol is TCP; ipv4 only) -
- -

- -saddr -

-A string representing the source IP address -
- -

- -nf_stop -

-Constant used to signify a 'stop' verdict -
- -

- -length -

-The length of the packet buffer contents, in bytes -
- -

- -daddr -

-A string representing the destination IP address -
- -

- -outdev -

-Address of net_device representing output device, 0 if unknown -
- -

- -syn -

-TCP SYN flag (if protocol is TCP; ipv4 only) -
- -

- -sport -

-TCP or UDP source port (ipv4 only) -
- -

- -nf_repeat -

-Constant used to signify a 'repeat' verdict -
- -

- -indev_name -

-Name of network device packet was received on (if known) -
- -

- -family -

-IP address family -
- -

- -iphdr -

-Address of IP header -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netfilter.ip.local_out.3stap.html b/man/probe::netfilter.ip.local_out.3stap.html deleted file mode 100644 index e9df3cbb..00000000 --- a/man/probe::netfilter.ip.local_out.3stap.html +++ /dev/null @@ -1,250 +0,0 @@ - -Manpage of PROBE::NETFILTER\&.I - -

PROBE::NETFILTER\&.I

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netfilter.ip.local_out - Called on an outgoing IP packet -  -

SYNOPSIS

- -

-

-netfilter.ip.local_out 
-
- -  -

VALUES

- -

- -urg -

-TCP URG flag (if protocol is TCP; ipv4 only) -
- -

- -protocol -

-Packet protocol from driver (ipv4 only) -
- -

- -indev -

-Address of net_device representing input device, 0 if unknown -
- -

- -nf_accept -

-Constant used to signify an 'accept' verdict -
- -

- -pf -

-Protocol family -- either -"ipv4" -or -"ipv6" -
- -

- -ipproto_tcp -

-Constant used to signify that the packet protocol is TCP -
- -

- -rst -

-TCP RST flag (if protocol is TCP; ipv4 only) -
- -

- -dport -

-TCP or UDP destination port (ipv4 only) -
- -

- -nf_queue -

-Constant used to signify a 'queue' verdict -
- -

- -nf_stolen -

-Constant used to signify a 'stolen' verdict -
- -

- -ipproto_udp -

-Constant used to signify that the packet protocol is UDP -
- -

- -outdev_name -

-Name of network device packet will be routed to (if known) -
- -

- -ack -

-TCP ACK flag (if protocol is TCP; ipv4 only) -
- -

- -fin -

-TCP FIN flag (if protocol is TCP; ipv4 only) -
- -

- -nf_drop -

-Constant used to signify a 'drop' verdict -
- -

- -psh -

-TCP PSH flag (if protocol is TCP; ipv4 only) -
- -

- -saddr -

-A string representing the source IP address -
- -

- -nf_stop -

-Constant used to signify a 'stop' verdict -
- -

- -length -

-The length of the packet buffer contents, in bytes -
- -

- -daddr -

-A string representing the destination IP address -
- -

- -outdev -

-Address of net_device representing output device, 0 if unknown -
- -

- -syn -

-TCP SYN flag (if protocol is TCP; ipv4 only) -
- -

- -sport -

-TCP or UDP source port (ipv4 only) -
- -

- -nf_repeat -

-Constant used to signify a 'repeat' verdict -
- -

- -indev_name -

-Name of network device packet was received on (if known) -
- -

- -family -

-IP address family -
- -

- -iphdr -

-Address of IP header -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netfilter.ip.post_routing.3stap.html b/man/probe::netfilter.ip.post_routing.3stap.html deleted file mode 100644 index 76434797..00000000 --- a/man/probe::netfilter.ip.post_routing.3stap.html +++ /dev/null @@ -1,250 +0,0 @@ - -Manpage of PROBE::NETFILTER\&.I - -

PROBE::NETFILTER\&.I

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netfilter.ip.post_routing - Called immediately before an outgoing IP packet leaves the computer -  -

SYNOPSIS

- -

-

-netfilter.ip.post_routing 
-
- -  -

VALUES

- -

- -urg -

-TCP URG flag (if protocol is TCP; ipv4 only) -
- -

- -protocol -

-Packet protocol from driver (ipv4 only) -
- -

- -indev -

-Address of net_device representing input device, 0 if unknown -
- -

- -nf_accept -

-Constant used to signify an 'accept' verdict -
- -

- -pf -

-Protocol family -- either -"ipv4" -or -"ipv6" -
- -

- -ipproto_tcp -

-Constant used to signify that the packet protocol is TCP -
- -

- -rst -

-TCP RST flag (if protocol is TCP; ipv4 only) -
- -

- -dport -

-TCP or UDP destination port (ipv4 only) -
- -

- -nf_queue -

-Constant used to signify a 'queue' verdict -
- -

- -nf_stolen -

-Constant used to signify a 'stolen' verdict -
- -

- -ipproto_udp -

-Constant used to signify that the packet protocol is UDP -
- -

- -outdev_name -

-Name of network device packet will be routed to (if known) -
- -

- -ack -

-TCP ACK flag (if protocol is TCP; ipv4 only) -
- -

- -fin -

-TCP FIN flag (if protocol is TCP; ipv4 only) -
- -

- -nf_drop -

-Constant used to signify a 'drop' verdict -
- -

- -psh -

-TCP PSH flag (if protocol is TCP; ipv4 only) -
- -

- -saddr -

-A string representing the source IP address -
- -

- -nf_stop -

-Constant used to signify a 'stop' verdict -
- -

- -length -

-The length of the packet buffer contents, in bytes -
- -

- -daddr -

-A string representing the destination IP address -
- -

- -outdev -

-Address of net_device representing output device, 0 if unknown -
- -

- -syn -

-TCP SYN flag (if protocol is TCP; ipv4 only) -
- -

- -sport -

-TCP or UDP source port (ipv4 only) -
- -

- -nf_repeat -

-Constant used to signify a 'repeat' verdict -
- -

- -indev_name -

-Name of network device packet was received on (if known) -
- -

- -family -

-IP address family -
- -

- -iphdr -

-Address of IP header -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::netfilter.ip.pre_routing.3stap.html b/man/probe::netfilter.ip.pre_routing.3stap.html deleted file mode 100644 index 9c3a3e97..00000000 --- a/man/probe::netfilter.ip.pre_routing.3stap.html +++ /dev/null @@ -1,247 +0,0 @@ - -Manpage of PROBE::NETFILTER\&.I - -

PROBE::NETFILTER\&.I

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::netfilter.ip.pre_routing - Called before an IP packet is routed -  -

SYNOPSIS

- -

-

-netfilter.ip.pre_routing 
-
- -  -

VALUES

- -

- -urg -

-TCP URG flag (if protocol is TCP; ipv4 only) -
- -

- -protocol -

-Packet protocol from driver (ipv4 only) -
- -

- -indev -

-Address of net_device representing input device, 0 if unknown -
- -

- -nf_accept -

-Constant used to signify an 'accept' verdict -
- -

- -pf -

-Protocol family - either 'ipv4' or 'ipv6' -
- -

- -ipproto_tcp -

-Constant used to signify that the packet protocol is TCP -
- -

- -rst -

-TCP RST flag (if protocol is TCP; ipv4 only) -
- -

- -dport -

-TCP or UDP destination port (ipv4 only) -
- -

- -nf_queue -

-Constant used to signify a 'queue' verdict -
- -

- -nf_stolen -

-Constant used to signify a 'stolen' verdict -
- -

- -ipproto_udp -

-Constant used to signify that the packet protocol is UDP -
- -

- -outdev_name -

-Name of network device packet will be routed to (if known) -
- -

- -ack -

-TCP ACK flag (if protocol is TCP; ipv4 only) -
- -

- -fin -

-TCP FIN flag (if protocol is TCP; ipv4 only) -
- -

- -nf_drop -

-Constant used to signify a 'drop' verdict -
- -

- -psh -

-TCP PSH flag (if protocol is TCP; ipv4 only) -
- -

- -saddr -

-A string representing the source IP address -
- -

- -nf_stop -

-Constant used to signify a 'stop' verdict -
- -

- -length -

-The length of the packet buffer contents, in bytes -
- -

- -daddr -

-A string representing the destination IP address -
- -

- -outdev -

-Address of net_device representing output device, 0 if unknown -
- -

- -syn -

-TCP SYN flag (if protocol is TCP; ipv4 only) -
- -

- -sport -

-TCP or UDP source port (ipv4 only) -
- -

- -indev_name -

-Name of network device packet was received on (if known) -
- -

- -nf_repeat -

-Constant used to signify a 'repeat' verdict -
- -

- -family -

-IP address family -
- -

- -iphdr -

-Address of IP header -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.aop.readpage.3stap.html b/man/probe::nfs.aop.readpage.3stap.html deleted file mode 100644 index c5ea3740..00000000 --- a/man/probe::nfs.aop.readpage.3stap.html +++ /dev/null @@ -1,135 +0,0 @@ - -Manpage of PROBE::NFS\&.AOP\&.R - -

PROBE::NFS\&.AOP\&.R

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.aop.readpage - NFS client synchronously reading a page -  -

SYNOPSIS

- -

-

-nfs.aop.readpage 
-
- -  -

VALUES

- -

- -i_size -

-file length in bytes -
- -

- -dev -

-device identifier -
- -

- -rsize -

-read size (in bytes) -
- -

- -sb_flag -

-super block flags -
- -

- -file -

-file argument -
- -

- -page_index -

-offset within mapping, can used a page identifier and position identifier in the page frame -
- -

- -__page -

-the address of page -
- -

- -size -

-number of pages to be read in this execution -
- -

- -i_flag -

-file flags -
- -

- -ino -

-inode number -
- -  -

DESCRIPTION

- -

- -Read the page over, only fires when a previous async read operation failed -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.aop.readpages.3stap.html b/man/probe::nfs.aop.readpages.3stap.html deleted file mode 100644 index 9bb87dd2..00000000 --- a/man/probe::nfs.aop.readpages.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::NFS\&.AOP\&.R - -

PROBE::NFS\&.AOP\&.R

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.aop.readpages - NFS client reading multiple pages -  -

SYNOPSIS

- -

-

-nfs.aop.readpages 
-
- -  -

VALUES

- -

- -dev -

-device identifier -
- -

- -rsize -

-read size (in bytes) -
- -

- -file -

-filp argument -
- -

- -size -

-number of pages attempted to read in this execution -
- -

- -nr_pages -

-number of pages attempted to read in this execution -
- -

- -rpages -

-read size (in pages) -
- -

- -ino -

-inode number -
- -  -

DESCRIPTION

- -

- -Fires when in readahead way, read several pages once -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.aop.release_page.3stap.html b/man/probe::nfs.aop.release_page.3stap.html deleted file mode 100644 index def3f764..00000000 --- a/man/probe::nfs.aop.release_page.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::NFS\&.AOP\&.R - -

PROBE::NFS\&.AOP\&.R

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.aop.release_page - NFS client releasing page -  -

SYNOPSIS

- -

-

-nfs.aop.release_page 
-
- -  -

VALUES

- -

- -dev -

-device identifier -
- -

- -page_index -

-offset within mapping, can used a page identifier and position identifier in the page frame -
- -

- -__page -

-the address of page -
- -

- -size -

-release pages -
- -

- -ino -

-inode number -
- -  -

DESCRIPTION

- -

- -Fires when do a release operation on NFS. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.aop.set_page_dirty.3stap.html b/man/probe::nfs.aop.set_page_dirty.3stap.html deleted file mode 100644 index 32c39034..00000000 --- a/man/probe::nfs.aop.set_page_dirty.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::NFS\&.AOP\&.S - -

PROBE::NFS\&.AOP\&.S

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.aop.set_page_dirty - NFS client marking page as dirty -  -

SYNOPSIS

- -

-

-nfs.aop.set_page_dirty 
-
- -  -

VALUES

- -

- -__page -

-the address of page -
- -

- -page_flag -

-page flags -
- -  -

DESCRIPTION

- -

- -This probe attaches to the generic __set_page_dirty_nobuffers function. Thus, this probe is going to fire on many other file systems in addition to the NFS client. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.aop.write_begin.3stap.html b/man/probe::nfs.aop.write_begin.3stap.html deleted file mode 100644 index 9e818382..00000000 --- a/man/probe::nfs.aop.write_begin.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::NFS\&.AOP\&.W - -

PROBE::NFS\&.AOP\&.W

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.aop.write_begin - NFS client begin to write data -  -

SYNOPSIS

- -

-

-nfs.aop.write_begin 
-
- -  -

VALUES

- -

- -dev -

-device identifier -
- -

- -page_index -

-offset within mapping, can used a page identifier and position identifier in the page frame -
- -

- -__page -

-the address of page -
- -

- -size -

-write bytes -
- -

- -to -

-end address of this write operation -
- -

- -ino -

-inode number -
- -

- -offset -

-start address of this write operation -
- -  -

DESCRIPTION

- -

- -Occurs when write operation occurs on nfs. It prepare a page for writing, look for a request corresponding to the page. If there is one, and it belongs to another file, it flush it out before it tries to copy anything into the page. Also do the same if it finds a request from an existing dropped page -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.aop.write_end.3stap.html b/man/probe::nfs.aop.write_end.3stap.html deleted file mode 100644 index 8d9a19d9..00000000 --- a/man/probe::nfs.aop.write_end.3stap.html +++ /dev/null @@ -1,138 +0,0 @@ - -Manpage of PROBE::NFS\&.AOP\&.W - -

PROBE::NFS\&.AOP\&.W

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.aop.write_end - NFS client complete writing data -  -

SYNOPSIS

- -

-

-nfs.aop.write_end 
-
- -  -

VALUES

- -

- -i_size -

-file length in bytes -
- -

- -dev -

-device identifier -
- -

- -sb_flag -

-super block flags -
- -

- -page_index -

-offset within mapping, can used a page identifier and position identifier in the page frame -
- -

- -__page -

-the address of page -
- -

- -size -

-write bytes -
- -

- -i_flag -

-file flags -
- -

- -to -

-end address of this write operation -
- -

- -ino -

-inode number -
- -

- -offset -

-start address of this write operation -
- -  -

DESCRIPTION

- -

- -Fires when do a write operation on nfs, often after prepare_write -

- -Update and possibly write a cached page of an NFS file. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.aop.writepage.3stap.html b/man/probe::nfs.aop.writepage.3stap.html deleted file mode 100644 index 2c7a0564..00000000 --- a/man/probe::nfs.aop.writepage.3stap.html +++ /dev/null @@ -1,152 +0,0 @@ - -Manpage of PROBE::NFS\&.AOP\&.W - -

PROBE::NFS\&.AOP\&.W

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.aop.writepage - NFS client writing a mapped page to the NFS server -  -

SYNOPSIS

- -

-

-nfs.aop.writepage 
-
- -  -

VALUES

- -

- -for_reclaim -

-a flag of writeback_control, indicates if it's invoked from the page allocator -
- -

- -i_size -

-file length in bytes -
- -

- -dev -

-device identifier -
- -

- -sb_flag -

-super block flags -
- -

- -page_index -

-offset within mapping, can used a page identifier and position identifier in the page frame -
- -

- -__page -

-the address of page -
- -

- -size -

-number of pages to be written in this execution -
- -

- -for_kupdate -

-a flag of writeback_control, indicates if it's a kupdate writeback -
- -

- -wsize -

-write size -
- -

- -i_flag -

-file flags -
- -

- -i_state -

-inode state flags -
- -

- -ino -

-inode number -
- -  -

DESCRIPTION

- -

- -The priority of wb is decided by the flags -for_reclaim -and -for_kupdate. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.aop.writepages.3stap.html b/man/probe::nfs.aop.writepages.3stap.html deleted file mode 100644 index 2087585e..00000000 --- a/man/probe::nfs.aop.writepages.3stap.html +++ /dev/null @@ -1,124 +0,0 @@ - -Manpage of PROBE::NFS\&.AOP\&.W - -

PROBE::NFS\&.AOP\&.W

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.aop.writepages - NFS client writing several dirty pages to the NFS server -  -

SYNOPSIS

- -

-

-nfs.aop.writepages 
-
- -  -

VALUES

- -

- -for_reclaim -

-a flag of writeback_control, indicates if it's invoked from the page allocator -
- -

- -dev -

-device identifier -
- -

- -wpages -

-write size (in pages) -
- -

- -size -

-number of pages attempted to be written in this execution -
- -

- -for_kupdate -

-a flag of writeback_control, indicates if it's a kupdate writeback -
- -

- -wsize -

-write size -
- -

- -nr_to_write -

-number of pages attempted to be written in this execution -
- -

- -ino -

-inode number -
- -  -

DESCRIPTION

- -

- -The priority of wb is decided by the flags -for_reclaim -and -for_kupdate. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.fop.aio_read.3stap.html b/man/probe::nfs.fop.aio_read.3stap.html deleted file mode 100644 index b435238a..00000000 --- a/man/probe::nfs.fop.aio_read.3stap.html +++ /dev/null @@ -1,128 +0,0 @@ - -Manpage of PROBE::NFS\&.FOP\&.A - -

PROBE::NFS\&.FOP\&.A

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.fop.aio_read - NFS client aio_read file operation -  -

SYNOPSIS

- -

-

-nfs.fop.aio_read 
-
- -  -

VALUES

- -

- -attrtimeo -

-how long the cached information is assumed to be valid. We need to revalidate the cached attrs for this inode if jiffies - read_cache_jiffies > attrtimeo. -
- -

- -cache_valid -

-cache related bit mask flag -
- -

- -count -

-read bytes -
- -

- -parent_name -

-parent dir name -
- -

- -dev -

-device identifier -
- -

- -buf -

-the address of buf in user space -
- -

- -cache_time -

-when we started read-caching this inode -
- -

- -file_name -

-file name -
- -

- -pos -

-current position of file -
- -

- -ino -

-inode number -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.fop.aio_write.3stap.html b/man/probe::nfs.fop.aio_write.3stap.html deleted file mode 100644 index 3fc4c448..00000000 --- a/man/probe::nfs.fop.aio_write.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::NFS\&.FOP\&.A - -

PROBE::NFS\&.FOP\&.A

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.fop.aio_write - NFS client aio_write file operation -  -

SYNOPSIS

- -

-

-nfs.fop.aio_write 
-
- -  -

VALUES

- -

- -count -

-read bytes -
- -

- -parent_name -

-parent dir name -
- -

- -dev -

-device identifier -
- -

- -buf -

-the address of buf in user space -
- -

- -file_name -

-file name -
- -

- -pos -

-offset of the file -
- -

- -ino -

-inode number -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.fop.check_flags.3stap.html b/man/probe::nfs.fop.check_flags.3stap.html deleted file mode 100644 index d87d9770..00000000 --- a/man/probe::nfs.fop.check_flags.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of PROBE::NFS\&.FOP\&.C - -

PROBE::NFS\&.FOP\&.C

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.fop.check_flags - NFS client checking flag operation -  -

SYNOPSIS

- -

-

-nfs.fop.check_flags 
-
- -  -

VALUES

- -

- -flag -

-file flag -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.fop.flush.3stap.html b/man/probe::nfs.fop.flush.3stap.html deleted file mode 100644 index 55cb6381..00000000 --- a/man/probe::nfs.fop.flush.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::NFS\&.FOP\&.F - -

PROBE::NFS\&.FOP\&.F

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.fop.flush - NFS client flush file operation -  -

SYNOPSIS

- -

-

-nfs.fop.flush 
-
- -  -

VALUES

- -

- -dev -

-device identifier -
- -

- -mode -

-file mode -
- -

- -ndirty -

-number of dirty page -
- -

- -ino -

-inode number -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.fop.fsync.3stap.html b/man/probe::nfs.fop.fsync.3stap.html deleted file mode 100644 index c671f76b..00000000 --- a/man/probe::nfs.fop.fsync.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::NFS\&.FOP\&.F - -

PROBE::NFS\&.FOP\&.F

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.fop.fsync - NFS client fsync operation -  -

SYNOPSIS

- -

-

-nfs.fop.fsync 
-
- -  -

VALUES

- -

- -dev -

-device identifier -
- -

- -ndirty -

-number of dirty pages -
- -

- -ino -

-inode number -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.fop.llseek.3stap.html b/man/probe::nfs.fop.llseek.3stap.html deleted file mode 100644 index 8bd74b44..00000000 --- a/man/probe::nfs.fop.llseek.3stap.html +++ /dev/null @@ -1,93 +0,0 @@ - -Manpage of PROBE::NFS\&.FOP\&.L - -

PROBE::NFS\&.FOP\&.L

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.fop.llseek - NFS client llseek operation -  -

SYNOPSIS

- -

-

-nfs.fop.llseek 
-
- -  -

VALUES

- -

- -whence_str -

-symbolic string representation of the position to seek from -
- -

- -whence -

-the position to seek from -
- -

- -dev -

-device identifier -
- -

- -ino -

-inode number -
- -

- -offset -

-the offset of the file will be repositioned -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.fop.lock.3stap.html b/man/probe::nfs.fop.lock.3stap.html deleted file mode 100644 index b6d9679c..00000000 --- a/man/probe::nfs.fop.lock.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::NFS\&.FOP\&.L - -

PROBE::NFS\&.FOP\&.L

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.fop.lock - NFS client file lock operation -  -

SYNOPSIS

- -

-

-nfs.fop.lock 
-
- -  -

VALUES

- -

- -cmd -

-cmd arguments -
- -

- -dev -

-device identifier -
- -

- -fl_type -

-lock type -
- -

- -fl_end -

-ending offset of locked region -
- -

- -fl_flag -

-lock flags -
- -

- -i_mode -

-file type and access rights -
- -

- -fl_start -

-starting offset of locked region -
- -

- -ino -

-inode number -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.fop.mmap.3stap.html b/man/probe::nfs.fop.mmap.3stap.html deleted file mode 100644 index 02c9e205..00000000 --- a/man/probe::nfs.fop.mmap.3stap.html +++ /dev/null @@ -1,135 +0,0 @@ - -Manpage of PROBE::NFS\&.FOP\&.M - -

PROBE::NFS\&.FOP\&.M

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.fop.mmap - NFS client mmap operation -  -

SYNOPSIS

- -

-

-nfs.fop.mmap 
-
- -  -

VALUES

- -

- -attrtimeo -

-how long the cached information is assumed to be valid. We need to revalidate the cached attrs for this inode if jiffies - read_cache_jiffies > attrtimeo. -
- -

- -cache_valid -

-cache related bit mask flag -
- -

- -parent_name -

-parent dir name -
- -

- -vm_flag -

-vm flags -
- -

- -vm_start -

-start address within vm_mm -
- -

- -dev -

-device identifier -
- -

- -buf -

-the address of buf in user space -
- -

- -vm_end -

-the first byte after end address within vm_mm -
- -

- -cache_time -

-when we started read-caching this inode -
- -

- -file_name -

-file name -
- -

- -ino -

-inode number -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.fop.open.3stap.html b/man/probe::nfs.fop.open.3stap.html deleted file mode 100644 index 0bce7886..00000000 --- a/man/probe::nfs.fop.open.3stap.html +++ /dev/null @@ -1,93 +0,0 @@ - -Manpage of PROBE::NFS\&.FOP\&.O - -

PROBE::NFS\&.FOP\&.O

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.fop.open - NFS client file open operation -  -

SYNOPSIS

- -

-

-nfs.fop.open 
-
- -  -

VALUES

- -

- -i_size -

-file length in bytes -
- -

- -dev -

-device identifier -
- -

- -flag -

-file flag -
- -

- -file_name -

-file name -
- -

- -ino -

-inode number -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.fop.read.3stap.html b/man/probe::nfs.fop.read.3stap.html deleted file mode 100644 index 965f3d02..00000000 --- a/man/probe::nfs.fop.read.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::NFS\&.FOP\&.R - -

PROBE::NFS\&.FOP\&.R

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.fop.read - NFS client read operation -  -

SYNOPSIS

- -

-

-nfs.fop.read 
-
- -  -

VALUES

- -

- -devname -

-block device name -
- -  -

DESCRIPTION

- -

- -SystemTap uses the vfs.do_sync_read probe to implement this probe and as a result will get operations other than the NFS client read operations. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.fop.release.3stap.html b/man/probe::nfs.fop.release.3stap.html deleted file mode 100644 index 23208475..00000000 --- a/man/probe::nfs.fop.release.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::NFS\&.FOP\&.R - -

PROBE::NFS\&.FOP\&.R

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.fop.release - NFS client release page operation -  -

SYNOPSIS

- -

-

-nfs.fop.release 
-
- -  -

VALUES

- -

- -dev -

-device identifier -
- -

- -mode -

-file mode -
- -

- -ino -

-inode number -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.fop.sendfile.3stap.html b/man/probe::nfs.fop.sendfile.3stap.html deleted file mode 100644 index 68340cef..00000000 --- a/man/probe::nfs.fop.sendfile.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::NFS\&.FOP\&.S - -

PROBE::NFS\&.FOP\&.S

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.fop.sendfile - NFS client send file operation -  -

SYNOPSIS

- -

-

-nfs.fop.sendfile 
-
- -  -

VALUES

- -

- -attrtimeo -

-how long the cached information is assumed to be valid. We need to revalidate the cached attrs for this inode if jiffies - read_cache_jiffies > attrtimeo. -
- -

- -cache_valid -

-cache related bit mask flag -
- -

- -count -

-read bytes -
- -

- -ppos -

-current position of file -
- -

- -dev -

-device identifier -
- -

- -cache_time -

-when we started read-caching this inode -
- -

- -ino -

-inode number -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.fop.write.3stap.html b/man/probe::nfs.fop.write.3stap.html deleted file mode 100644 index a4854805..00000000 --- a/man/probe::nfs.fop.write.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::NFS\&.FOP\&.W - -

PROBE::NFS\&.FOP\&.W

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.fop.write - NFS client write operation -  -

SYNOPSIS

- -

-

-nfs.fop.write 
-
- -  -

VALUES

- -

- -devname -

-block device name -
- -  -

DESCRIPTION

- -

- -SystemTap uses the vfs.do_sync_write probe to implement this probe and as a result will get operations other than the NFS client write operations. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.proc.commit.3stap.html b/man/probe::nfs.proc.commit.3stap.html deleted file mode 100644 index f0f67452..00000000 --- a/man/probe::nfs.proc.commit.3stap.html +++ /dev/null @@ -1,117 +0,0 @@ - -Manpage of PROBE::NFS\&.PROC\&. - -

PROBE::NFS\&.PROC\&.

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.proc.commit - NFS client committing data on server -  -

SYNOPSIS

- -

-

-nfs.proc.commit 
-
- -  -

VALUES

- -

- -bitmask1 -

-V4 bitmask representing the set of attributes supported on this filesystem -
- -

- -version -

-NFS version -
- -

- -bitmask0 -

-V4 bitmask representing the set of attributes supported on this filesystem -
- -

- -prot -

-transfer protocol -
- -

- -size -

-read bytes in this execution -
- -

- -offset -

-the file offset -
- -

- -server_ip -

-IP address of server -
- -  -

DESCRIPTION

- -

- -All the nfs.proc.commit kernel functions were removed in kernel commit 200baa in December 2006, so these probes do not exist on Linux 2.6.21 and newer kernels. -

- -Fires when client writes the buffered data to disk. The buffered data is asynchronously written by client earlier. The commit function works in sync way. This probe point does not exist in NFSv2. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.proc.commit_done.3stap.html b/man/probe::nfs.proc.commit_done.3stap.html deleted file mode 100644 index 00529902..00000000 --- a/man/probe::nfs.proc.commit_done.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::NFS\&.PROC\&. - -

PROBE::NFS\&.PROC\&.

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.proc.commit_done - NFS client response to a commit RPC task -  -

SYNOPSIS

- -

-

-nfs.proc.commit_done 
-
- -  -

VALUES

- -

- -count -

-number of bytes committed -
- -

- -status -

-result of last operation -
- -

- -version -

-NFS version -
- -

- -prot -

-transfer protocol -
- -

- -valid -

-fattr->valid, indicates which fields are valid -
- -

- -timestamp -

-V4 timestamp, which is used for lease renewal -
- -

- -server_ip -

-IP address of server -
- -  -

DESCRIPTION

- -

- -Fires when a reply to a commit RPC task is received or some commit operation error occur (timeout or socket shutdown). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.proc.commit_setup.3stap.html b/man/probe::nfs.proc.commit_setup.3stap.html deleted file mode 100644 index 5e502fe4..00000000 --- a/man/probe::nfs.proc.commit_setup.3stap.html +++ /dev/null @@ -1,121 +0,0 @@ - -Manpage of PROBE::NFS\&.PROC\&. - -

PROBE::NFS\&.PROC\&.

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.proc.commit_setup - NFS client setting up a commit RPC task -  -

SYNOPSIS

- -

-

-nfs.proc.commit_setup 
-
- -  -

VALUES

- -

- -count -

-bytes in this commit -
- -

- -bitmask1 -

-V4 bitmask representing the set of attributes supported on this filesystem -
- -

- -version -

-NFS version -
- -

- -bitmask0 -

-V4 bitmask representing the set of attributes supported on this filesystem -
- -

- -prot -

-transfer protocol -
- -

- -size -

-bytes in this commit -
- -

- -offset -

-the file offset -
- -

- -server_ip -

-IP address of server -
- -  -

DESCRIPTION

- -

- -The commit_setup function is used to setup a commit RPC task. Is is not doing the actual commit operation. It is does not exist in NFSv2. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.proc.create.3stap.html b/man/probe::nfs.proc.create.3stap.html deleted file mode 100644 index 81a51c1b..00000000 --- a/man/probe::nfs.proc.create.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::NFS\&.PROC\&. - -

PROBE::NFS\&.PROC\&.

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.proc.create - NFS client creating file on server -  -

SYNOPSIS

- -

-

-nfs.proc.create 
-
- -  -

VALUES

- -

- -version -

-NFS version (the function is used for all NFS version) -
- -

- -flag -

-indicates create mode (only for NFSv3 and NFSv4) -
- -

- -prot -

-transfer protocol -
- -

- -filelen -

-length of file name -
- -

- -filename -

-file name -
- -

- -fh -

-file handler of parent dir -
- -

- -server_ip -

-IP address of server -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.proc.handle_exception.3stap.html b/man/probe::nfs.proc.handle_exception.3stap.html deleted file mode 100644 index 93cc522f..00000000 --- a/man/probe::nfs.proc.handle_exception.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::NFS\&.PROC\&. - -

PROBE::NFS\&.PROC\&.

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.proc.handle_exception - NFS client handling an NFSv4 exception -  -

SYNOPSIS

- -

-

-nfs.proc.handle_exception 
-
- -  -

VALUES

- -

- -errorcode -

-indicates the type of error -
- -  -

DESCRIPTION

- -

- -This is the error handling routine for processes for NFSv4. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.proc.lookup.3stap.html b/man/probe::nfs.proc.lookup.3stap.html deleted file mode 100644 index 2f8680b4..00000000 --- a/man/probe::nfs.proc.lookup.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::NFS\&.PROC\&. - -

PROBE::NFS\&.PROC\&.

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.proc.lookup - NFS client opens/searches a file on server -  -

SYNOPSIS

- -

-

-nfs.proc.lookup 
-
- -  -

VALUES

- -

- -name_len -

-the length of file name -
- -

- -filename -

-the name of file which client opens/searches on server -
- -

- -bitmask1 -

-V4 bitmask representing the set of attributes supported on this filesystem -
- -

- -version -

-NFS version -
- -

- -bitmask0 -

-V4 bitmask representing the set of attributes supported on this filesystem -
- -

- -prot -

-transfer protocol -
- -

- -server_ip -

-IP address of server -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.proc.open.3stap.html b/man/probe::nfs.proc.open.3stap.html deleted file mode 100644 index 0d5f7495..00000000 --- a/man/probe::nfs.proc.open.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::NFS\&.PROC\&. - -

PROBE::NFS\&.PROC\&.

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.proc.open - NFS client allocates file read/write context information -  -

SYNOPSIS

- -

-

-nfs.proc.open 
-
- -  -

VALUES

- -

- -mode -

-file mode -
- -

- -version -

-NFS version (the function is used for all NFS version) -
- -

- -flag -

-file flag -
- -

- -prot -

-transfer protocol -
- -

- -filename -

-file name -
- -

- -server_ip -

-IP address of server -
- -  -

DESCRIPTION

- -

- -Allocate file read/write context information -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.proc.read.3stap.html b/man/probe::nfs.proc.read.3stap.html deleted file mode 100644 index e359d02c..00000000 --- a/man/probe::nfs.proc.read.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::NFS\&.PROC\&. - -

PROBE::NFS\&.PROC\&.

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.proc.read - NFS client synchronously reads file from server -  -

SYNOPSIS

- -

-

-nfs.proc.read 
-
- -  -

VALUES

- -

- -count -

-read bytes in this execution -
- -

- -flags -

-used to set task->tk_flags in rpc_init_task function -
- -

- -version -

-NFS version -
- -

- -prot -

-transfer protocol -
- -

- -offset -

-the file offset -
- -

- -server_ip -

-IP address of server -
- -  -

DESCRIPTION

- -

- -All the nfs.proc.read kernel functions were removed in kernel commit 8e0969 in December 2006, so these probes do not exist on Linux 2.6.21 and newer kernels. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.proc.read_done.3stap.html b/man/probe::nfs.proc.read_done.3stap.html deleted file mode 100644 index ffec965f..00000000 --- a/man/probe::nfs.proc.read_done.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::NFS\&.PROC\&. - -

PROBE::NFS\&.PROC\&.

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.proc.read_done - NFS client response to a read RPC task -  -

SYNOPSIS

- -

-

-nfs.proc.read_done 
-
- -  -

VALUES

- -

- -count -

-number of bytes read -
- -

- -status -

-result of last operation -
- -

- -version -

-NFS version -
- -

- -prot -

-transfer protocol -
- -

- -timestamp -

-V4 timestamp, which is used for lease renewal -
- -

- -server_ip -

-IP address of server -
- -  -

DESCRIPTION

- -

- -Fires when a reply to a read RPC task is received or some read error occurs (timeout or socket shutdown). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.proc.read_setup.3stap.html b/man/probe::nfs.proc.read_setup.3stap.html deleted file mode 100644 index c0c5c012..00000000 --- a/man/probe::nfs.proc.read_setup.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::NFS\&.PROC\&. - -

PROBE::NFS\&.PROC\&.

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.proc.read_setup - NFS client setting up a read RPC task -  -

SYNOPSIS

- -

-

-nfs.proc.read_setup 
-
- -  -

VALUES

- -

- -count -

-read bytes in this execution -
- -

- -version -

-NFS version -
- -

- -prot -

-transfer protocol -
- -

- -size -

-read bytes in this execution -
- -

- -offset -

-the file offset -
- -

- -server_ip -

-IP address of server -
- -  -

DESCRIPTION

- -

- -The read_setup function is used to setup a read RPC task. It is not doing the actual read operation. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.proc.release.3stap.html b/man/probe::nfs.proc.release.3stap.html deleted file mode 100644 index 15fa35e4..00000000 --- a/man/probe::nfs.proc.release.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::NFS\&.PROC\&. - -

PROBE::NFS\&.PROC\&.

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.proc.release - NFS client releases file read/write context information -  -

SYNOPSIS

- -

-

-nfs.proc.release 
-
- -  -

VALUES

- -

- -mode -

-file mode -
- -

- -version -

-NFS version (the function is used for all NFS version) -
- -

- -flag -

-file flag -
- -

- -prot -

-transfer protocol -
- -

- -filename -

-file name -
- -

- -server_ip -

-IP address of server -
- -  -

DESCRIPTION

- -

- -Release file read/write context information -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.proc.remove.3stap.html b/man/probe::nfs.proc.remove.3stap.html deleted file mode 100644 index ce3a6d0e..00000000 --- a/man/probe::nfs.proc.remove.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::NFS\&.PROC\&. - -

PROBE::NFS\&.PROC\&.

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.proc.remove - NFS client removes a file on server -  -

SYNOPSIS

- -

-

-nfs.proc.remove 
-
- -  -

VALUES

- -

- -version -

-NFS version (the function is used for all NFS version) -
- -

- -prot -

-transfer protocol -
- -

- -filelen -

-length of file name -
- -

- -filename -

-file name -
- -

- -fh -

-file handler of parent dir -
- -

- -server_ip -

-IP address of server -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.proc.rename.3stap.html b/man/probe::nfs.proc.rename.3stap.html deleted file mode 100644 index 2da63b8b..00000000 --- a/man/probe::nfs.proc.rename.3stap.html +++ /dev/null @@ -1,121 +0,0 @@ - -Manpage of PROBE::NFS\&.PROC\&. - -

PROBE::NFS\&.PROC\&.

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.proc.rename - NFS client renames a file on server -  -

SYNOPSIS

- -

-

-nfs.proc.rename 
-
- -  -

VALUES

- -

- -new_fh -

-file handler of new parent dir -
- -

- -old_filelen -

-length of old file name -
- -

- -version -

-NFS version (the function is used for all NFS version) -
- -

- -prot -

-transfer protocol -
- -

- -new_filelen -

-length of new file name -
- -

- -old_fh -

-file handler of old parent dir -
- -

- -new_name -

-new file name -
- -

- -old_name -

-old file name -
- -

- -server_ip -

-IP address of server -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.proc.write.3stap.html b/man/probe::nfs.proc.write.3stap.html deleted file mode 100644 index 4c996be8..00000000 --- a/man/probe::nfs.proc.write.3stap.html +++ /dev/null @@ -1,121 +0,0 @@ - -Manpage of PROBE::NFS\&.PROC\&. - -

PROBE::NFS\&.PROC\&.

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.proc.write - NFS client synchronously writes file to server -  -

SYNOPSIS

- -

-

-nfs.proc.write 
-
- -  -

VALUES

- -

- -flags -

-used to set task->tk_flags in rpc_init_task function -
- -

- -bitmask1 -

-V4 bitmask representing the set of attributes supported on this filesystem -
- -

- -version -

-NFS version -
- -

- -bitmask0 -

-V4 bitmask representing the set of attributes supported on this filesystem -
- -

- -prot -

-transfer protocol -
- -

- -size -

-read bytes in this execution -
- -

- -server_ip -

-IP address of server -
- -

- -offset -

-the file offset -
- -  -

DESCRIPTION

- -

- -All the nfs.proc.write kernel functions were removed in kernel commit 200baa in December 2006, so these probes do not exist on Linux 2.6.21 and newer kernels. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.proc.write_done.3stap.html b/man/probe::nfs.proc.write_done.3stap.html deleted file mode 100644 index 113d00b1..00000000 --- a/man/probe::nfs.proc.write_done.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::NFS\&.PROC\&. - -

PROBE::NFS\&.PROC\&.

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.proc.write_done - NFS client response to a write RPC task -  -

SYNOPSIS

- -

-

-nfs.proc.write_done 
-
- -  -

VALUES

- -

- -count -

-number of bytes written -
- -

- -status -

-result of last operation -
- -

- -version -

-NFS version -
- -

- -prot -

-transfer protocol -
- -

- -valid -

-fattr->valid, indicates which fields are valid -
- -

- -timestamp -

-V4 timestamp, which is used for lease renewal -
- -

- -server_ip -

-IP address of server -
- -  -

DESCRIPTION

- -

- -Fires when a reply to a write RPC task is received or some write error occurs (timeout or socket shutdown). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfs.proc.write_setup.3stap.html b/man/probe::nfs.proc.write_setup.3stap.html deleted file mode 100644 index 79aa79a7..00000000 --- a/man/probe::nfs.proc.write_setup.3stap.html +++ /dev/null @@ -1,128 +0,0 @@ - -Manpage of PROBE::NFS\&.PROC\&. - -

PROBE::NFS\&.PROC\&.

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfs.proc.write_setup - NFS client setting up a write RPC task -  -

SYNOPSIS

- -

-

-nfs.proc.write_setup 
-
- -  -

VALUES

- -

- -count -

-bytes written in this execution -
- -

- -bitmask1 -

-V4 bitmask representing the set of attributes supported on this filesystem -
- -

- -how -

-used to set args.stable. The stable value could be: NFS_UNSTABLE,NFS_DATA_SYNC,NFS_FILE_SYNC (in nfs.proc3.write_setup and nfs.proc4.write_setup) -
- -

- -version -

-NFS version -
- -

- -bitmask0 -

-V4 bitmask representing the set of attributes supported on this filesystem -
- -

- -prot -

-transfer protocol -
- -

- -size -

-bytes written in this execution -
- -

- -offset -

-the file offset -
- -

- -server_ip -

-IP address of server -
- -  -

DESCRIPTION

- -

- -The write_setup function is used to setup a write RPC task. It is not doing the actual write operation. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.close.3stap.html b/man/probe::nfsd.close.3stap.html deleted file mode 100644 index 50e7d74c..00000000 --- a/man/probe::nfsd.close.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of PROBE::NFSD\&.CLOSE - -

PROBE::NFSD\&.CLOSE

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.close - NFS server closing a file for client -  -

SYNOPSIS

- -

-

-nfsd.close 
-
- -  -

VALUES

- -

- -filename -

-file name -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.commit.3stap.html b/man/probe::nfsd.commit.3stap.html deleted file mode 100644 index 31e6873d..00000000 --- a/man/probe::nfsd.commit.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::NFSD\&.COMMIT - -

PROBE::NFSD\&.COMMIT

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.commit - NFS server committing all pending writes to stable storage -  -

SYNOPSIS

- -

-

-nfsd.commit 
-
- -  -

VALUES

- -

- -count -

-read bytes -
- -

- -flag -

-indicates whether this execution is a sync operation -
- -

- -size -

-read bytes -
- -

- -fh -

-file handle (the first part is the length of the file handle) -
- -

- -client_ip -

-the ip address of client -
- -

- -offset -

-the offset of file -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.create.3stap.html b/man/probe::nfsd.create.3stap.html deleted file mode 100644 index 821c5bc6..00000000 --- a/man/probe::nfsd.create.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::NFSD\&.CREATE - -

PROBE::NFSD\&.CREATE

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.create - NFS server creating a file(regular,dir,device,fifo) for client -  -

SYNOPSIS

- -

-

-nfsd.create 
-
- -  -

VALUES

- -

- -iap_mode -

-file access mode -
- -

- -iap_valid -

-Attribute flags -
- -

- -filelen -

-the length of file name -
- -

- -filename -

-file name -
- -

- -fh -

-file handle (the first part is the length of the file handle) -
- -

- -client_ip -

-the ip address of client -
- -

- -type -

-file type(regular,dir,device,fifo ...) -
- -  -

DESCRIPTION

- -

- -Sometimes nfsd will call nfsd_create_v3 instead of this this probe point. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.createv3.3stap.html b/man/probe::nfsd.createv3.3stap.html deleted file mode 100644 index ff5964ad..00000000 --- a/man/probe::nfsd.createv3.3stap.html +++ /dev/null @@ -1,128 +0,0 @@ - -Manpage of PROBE::NFSD\&.CREATE - -

PROBE::NFSD\&.CREATE

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.createv3 - NFS server creating a regular file or set file attributes for client -  -

SYNOPSIS

- -

-

-nfsd.createv3 
-
- -  -

VALUES

- -

- -iap_mode -

-file access mode -
- -

- -createmode -

-create mode .The possible values could be: NFS3_CREATE_EXCLUSIVE, NFS3_CREATE_UNCHECKED, or NFS3_CREATE_GUARDED -
- -

- -verifier -

-file attributes (atime,mtime,mode). It's used to reset file attributes for CREATE_EXCLUSIVE -
- -

- -iap_valid -

-Attribute flags -
- -

- -truncp -

-trunp arguments, indicates if the file shouldbe truncate -
- -

- -filelen -

-the length of file name -
- -

- -filename -

-file name -
- -

- -fh -

-file handle (the first part is the length of the file handle) -
- -

- -client_ip -

-the ip address of client -
- -  -

DESCRIPTION

- -

- -This probepoints is only called by nfsd3_proc_create and nfsd4_open when op_claim_type is NFS4_OPEN_CLAIM_NULL. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.dispatch.3stap.html b/man/probe::nfsd.dispatch.3stap.html deleted file mode 100644 index 541434f3..00000000 --- a/man/probe::nfsd.dispatch.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::NFSD\&.DISPAT - -

PROBE::NFSD\&.DISPAT

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.dispatch - NFS server receives an operation from client -  -

SYNOPSIS

- -

-

-nfsd.dispatch 
-
- -  -

VALUES

- -

- -proto -

-transfer protocol -
- -

- -proc -

-procedure number -
- -

- -prog -

-program number -
- -

- -version -

-nfs version -
- -

- -client_ip -

-the ip address of client -
- -

- -xid -

-transmission id -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.lookup.3stap.html b/man/probe::nfsd.lookup.3stap.html deleted file mode 100644 index b08eca32..00000000 --- a/man/probe::nfsd.lookup.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::NFSD\&.LOOKUP - -

PROBE::NFSD\&.LOOKUP

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.lookup - NFS server opening or searching file for a file for client -  -

SYNOPSIS

- -

-

-nfsd.lookup 
-
- -  -

VALUES

- -

- -filelen -

-the length of file name -
- -

- -filename -

-file name -
- -

- -fh -

-file handle of parent dir(the first part is the length of the file handle) -
- -

- -client_ip -

-the ip address of client -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.open.3stap.html b/man/probe::nfsd.open.3stap.html deleted file mode 100644 index 6f253efe..00000000 --- a/man/probe::nfsd.open.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::NFSD\&.OPEN - -

PROBE::NFSD\&.OPEN

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.open - NFS server opening a file for client -  -

SYNOPSIS

- -

-

-nfsd.open 
-
- -  -

VALUES

- -

- -access -

-indicates the type of open (read/write/commit/readdir...) -
- -

- -fh -

-file handle (the first part is the length of the file handle) -
- -

- -client_ip -

-the ip address of client -
- -

- -type -

-type of file (regular file or dir) -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.proc.commit.3stap.html b/man/probe::nfsd.proc.commit.3stap.html deleted file mode 100644 index 0f191342..00000000 --- a/man/probe::nfsd.proc.commit.3stap.html +++ /dev/null @@ -1,121 +0,0 @@ - -Manpage of PROBE::NFSD\&.PROC\& - -

PROBE::NFSD\&.PROC\&

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.proc.commit - NFS server performing a commit operation for client -  -

SYNOPSIS

- -

-

-nfsd.proc.commit 
-
- -  -

VALUES

- -

- -count -

-read bytes -
- -

- -proto -

-transfer protocol -
- -

- -uid -

-requester's user id -
- -

- -version -

-nfs version -
- -

- -size -

-read bytes -
- -

- -fh -

-file handle (the first part is the length of the file handle) -
- -

- -client_ip -

-the ip address of client -
- -

- -gid -

-requester's group id -
- -

- -offset -

-the offset of file -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.proc.create.3stap.html b/man/probe::nfsd.proc.create.3stap.html deleted file mode 100644 index ab6daf98..00000000 --- a/man/probe::nfsd.proc.create.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::NFSD\&.PROC\& - -

PROBE::NFSD\&.PROC\&

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.proc.create - NFS server creating a file for client -  -

SYNOPSIS

- -

-

-nfsd.proc.create 
-
- -  -

VALUES

- -

- -proto -

-transfer protocol -
- -

- -uid -

-requester's user id -
- -

- -version -

-nfs version -
- -

- -filelen -

-length of file name -
- -

- -filename -

-file name -
- -

- -fh -

-file handle (the first part is the length of the file handle) -
- -

- -client_ip -

-the ip address of client -
- -

- -gid -

-requester's group id -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.proc.lookup.3stap.html b/man/probe::nfsd.proc.lookup.3stap.html deleted file mode 100644 index e9c3eeb9..00000000 --- a/man/probe::nfsd.proc.lookup.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::NFSD\&.PROC\& - -

PROBE::NFSD\&.PROC\&

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.proc.lookup - NFS server opening or searching for a file for client -  -

SYNOPSIS

- -

-

-nfsd.proc.lookup 
-
- -  -

VALUES

- -

- -proto -

-transfer protocol -
- -

- -uid -

-requester's user id -
- -

- -version -

-nfs version -
- -

- -filename -

-file name -
- -

- -filelen -

-the length of file name -
- -

- -client_ip -

-the ip address of client -
- -

- -fh -

-file handle of parent dir (the first part is the length of the file handle) -
- -

- -gid -

-requester's group id -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.proc.read.3stap.html b/man/probe::nfsd.proc.read.3stap.html deleted file mode 100644 index 9013c839..00000000 --- a/man/probe::nfsd.proc.read.3stap.html +++ /dev/null @@ -1,135 +0,0 @@ - -Manpage of PROBE::NFSD\&.PROC\& - -

PROBE::NFSD\&.PROC\&

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.proc.read - NFS server reading file for client -  -

SYNOPSIS

- -

-

-nfsd.proc.read 
-
- -  -

VALUES

- -

- -count -

-read bytes -
- -

- -proto -

-transfer protocol -
- -

- -uid -

-requester's user id -
- -

- -version -

-nfs version -
- -

- -size -

-read bytes -
- -

- -vec -

-struct kvec, includes buf address in kernel address and length of each buffer -
- -

- -fh -

-file handle (the first part is the length of the file handle) -
- -

- -client_ip -

-the ip address of client -
- -

- -vlen -

-read blocks -
- -

- -gid -

-requester's group id -
- -

- -offset -

-the offset of file -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.proc.remove.3stap.html b/man/probe::nfsd.proc.remove.3stap.html deleted file mode 100644 index 815d2854..00000000 --- a/man/probe::nfsd.proc.remove.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::NFSD\&.PROC\& - -

PROBE::NFSD\&.PROC\&

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.proc.remove - NFS server removing a file for client -  -

SYNOPSIS

- -

-

-nfsd.proc.remove 
-
- -  -

VALUES

- -

- -proto -

-transfer protocol -
- -

- -uid -

-requester's user id -
- -

- -version -

-nfs version -
- -

- -filelen -

-length of file name -
- -

- -filename -

-file name -
- -

- -fh -

-file handle (the first part is the length of the file handle) -
- -

- -client_ip -

-the ip address of client -
- -

- -gid -

-requester's group id -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.proc.rename.3stap.html b/man/probe::nfsd.proc.rename.3stap.html deleted file mode 100644 index 7640bdec..00000000 --- a/man/probe::nfsd.proc.rename.3stap.html +++ /dev/null @@ -1,121 +0,0 @@ - -Manpage of PROBE::NFSD\&.PROC\& - -

PROBE::NFSD\&.PROC\&

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.proc.rename - NFS Server renaming a file for client -  -

SYNOPSIS

- -

-

-nfsd.proc.rename 
-
- -  -

VALUES

- -

- -tlen -

-length of new file name -
- -

- -uid -

-requester's user id -
- -

- -flen -

-length of old file name -
- -

- -tfh -

-file handler of new path -
- -

- -filename -

-old file name -
- -

- -fh -

-file handler of old path -
- -

- -client_ip -

-the ip address of client -
- -

- -gid -

-requester's group id -
- -

- -tname -

-new file name -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.proc.write.3stap.html b/man/probe::nfsd.proc.write.3stap.html deleted file mode 100644 index 66e50d8e..00000000 --- a/man/probe::nfsd.proc.write.3stap.html +++ /dev/null @@ -1,142 +0,0 @@ - -Manpage of PROBE::NFSD\&.PROC\& - -

PROBE::NFSD\&.PROC\&

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.proc.write - NFS server writing data to file for client -  -

SYNOPSIS

- -

-

-nfsd.proc.write 
-
- -  -

VALUES

- -

- -count -

-read bytes -
- -

- -proto -

-transfer protocol -
- -

- -uid -

-requester's user id -
- -

- -version -

-nfs version -
- -

- -size -

-read bytes -
- -

- -vec -

-struct kvec, includes buf address in kernel address and length of each buffer -
- -

- -fh -

-file handle (the first part is the length of the file handle) -
- -

- -client_ip -

-the ip address of client -
- -

- -vlen -

-read blocks -
- -

- -gid -

-requester's group id -
- -

- -stable -

-argp->stable -
- -

- -offset -

-the offset of file -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.read.3stap.html b/man/probe::nfsd.read.3stap.html deleted file mode 100644 index 14ab79f0..00000000 --- a/man/probe::nfsd.read.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::NFSD\&.READ - -

PROBE::NFSD\&.READ

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.read - NFS server reading data from a file for client -  -

SYNOPSIS

- -

-

-nfsd.read 
-
- -  -

VALUES

- -

- -count -

-read bytes -
- -

- -file -

-argument file, indicates if the file has been opened. -
- -

- -size -

-read bytes -
- -

- -vec -

-struct kvec, includes buf address in kernel address and length of each buffer -
- -

- -fh -

-file handle (the first part is the length of the file handle) -
- -

- -client_ip -

-the ip address of client -
- -

- -vlen -

-read blocks -
- -

- -offset -

-the offset of file -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.rename.3stap.html b/man/probe::nfsd.rename.3stap.html deleted file mode 100644 index 05aab0b4..00000000 --- a/man/probe::nfsd.rename.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::NFSD\&.RENAME - -

PROBE::NFSD\&.RENAME

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.rename - NFS server renaming a file for client -  -

SYNOPSIS

- -

-

-nfsd.rename 
-
- -  -

VALUES

- -

- -tlen -

-length of new file name -
- -

- -flen -

-length of old file name -
- -

- -tfh -

-file handler of new path -
- -

- -filename -

-old file name -
- -

- -fh -

-file handler of old path -
- -

- -client_ip -

-the ip address of client -
- -

- -tname -

-new file name -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.unlink.3stap.html b/man/probe::nfsd.unlink.3stap.html deleted file mode 100644 index c5f72030..00000000 --- a/man/probe::nfsd.unlink.3stap.html +++ /dev/null @@ -1,93 +0,0 @@ - -Manpage of PROBE::NFSD\&.UNLINK - -

PROBE::NFSD\&.UNLINK

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.unlink - NFS server removing a file or a directory for client -  -

SYNOPSIS

- -

-

-nfsd.unlink 
-
- -  -

VALUES

- -

- -filelen -

-the length of file name -
- -

- -filename -

-file name -
- -

- -fh -

-file handle (the first part is the length of the file handle) -
- -

- -client_ip -

-the ip address of client -
- -

- -type -

-file type (file or dir) -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::nfsd.write.3stap.html b/man/probe::nfsd.write.3stap.html deleted file mode 100644 index c548af18..00000000 --- a/man/probe::nfsd.write.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::NFSD\&.WRITE - -

PROBE::NFSD\&.WRITE

-Section: Network File Storage Tapsets (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::nfsd.write - NFS server writing data to a file for client -  -

SYNOPSIS

- -

-

-nfsd.write 
-
- -  -

VALUES

- -

- -count -

-read bytes -
- -

- -file -

-argument file, indicates if the file has been opened. -
- -

- -size -

-read bytes -
- -

- -vec -

-struct kvec, includes buf address in kernel address and length of each buffer -
- -

- -fh -

-file handle (the first part is the length of the file handle) -
- -

- -client_ip -

-the ip address of client -
- -

- -vlen -

-read blocks -
- -

- -offset -

-the offset of file -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scheduler.balance.3stap.html b/man/probe::scheduler.balance.3stap.html deleted file mode 100644 index 97a9410b..00000000 --- a/man/probe::scheduler.balance.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::SCHEDULER\&.B - -

PROBE::SCHEDULER\&.B

-Section: Scheduler Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scheduler.balance - A cpu attempting to find more work. -  -

SYNOPSIS

- -

-

-scheduler.balance 
-
- -  -

VALUES

- -

- -name -

-name of the probe point -
- -  -

CONTEXT

- -

- -The cpu looking for more work. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scheduler.cpu_off.3stap.html b/man/probe::scheduler.cpu_off.3stap.html deleted file mode 100644 index 882e744b..00000000 --- a/man/probe::scheduler.cpu_off.3stap.html +++ /dev/null @@ -1,93 +0,0 @@ - -Manpage of PROBE::SCHEDULER\&.C - -

PROBE::SCHEDULER\&.C

-Section: Scheduler Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scheduler.cpu_off - Process is about to stop running on a cpu -  -

SYNOPSIS

- -

-

-scheduler.cpu_off 
-
- -  -

VALUES

- -

- -task_prev -

-the process leaving the cpu (same as current) -
- -

- -name -

-name of the probe point -
- -

- -idle -

-boolean indicating whether current is the idle process -
- -

- -task_next -

-the process replacing current -
- -  -

CONTEXT

- -

- -The process leaving the cpu. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scheduler.cpu_on.3stap.html b/man/probe::scheduler.cpu_on.3stap.html deleted file mode 100644 index e6fdf0ca..00000000 --- a/man/probe::scheduler.cpu_on.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::SCHEDULER\&.C - -

PROBE::SCHEDULER\&.C

-Section: Scheduler Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scheduler.cpu_on - Process is beginning execution on a cpu -  -

SYNOPSIS

- -

-

-scheduler.cpu_on 
-
- -  -

VALUES

- -

- -task_prev -

-the process that was previously running on this cpu -
- -

- -name -

-name of the probe point -
- -

- -idle -

-- boolean indicating whether current is the idle process -
- -  -

CONTEXT

- -

- -The resuming process. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scheduler.ctxswitch.3stap.html b/man/probe::scheduler.ctxswitch.3stap.html deleted file mode 100644 index cedc8fb9..00000000 --- a/man/probe::scheduler.ctxswitch.3stap.html +++ /dev/null @@ -1,135 +0,0 @@ - -Manpage of PROBE::SCHEDULER\&.C - -

PROBE::SCHEDULER\&.C

-Section: Scheduler Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scheduler.ctxswitch - A context switch is occuring. -  -

SYNOPSIS

- -

-

-scheduler.ctxswitch 
-
- -  -

VALUES

- -

- -prev_pid -

-The PID of the process to be switched out -
- -

- -name -

-name of the probe point -
- -

- -next_task_name -

-The name of the process to be switched in -
- -

- -nexttsk_state -

-the state of the process to be switched in -
- -

- -prev_priority -

-The priority of the process to be switched out -
- -

- -next_priority -

-The priority of the process to be switched in -
- -

- -next_pid -

-The PID of the process to be switched in -
- -

- -prevtsk_state -

-the state of the process to be switched out -
- -

- -next_tid -

-The TID of the process to be switched in -
- -

- -prev_task_name -

-The name of the process to be switched out -
- -

- -prev_tid -

-The TID of the process to be switched out -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scheduler.kthread_stop.3stap.html b/man/probe::scheduler.kthread_stop.3stap.html deleted file mode 100644 index fb5b157e..00000000 --- a/man/probe::scheduler.kthread_stop.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::SCHEDULER\&.K - -

PROBE::SCHEDULER\&.K

-Section: Scheduler Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scheduler.kthread_stop - A thread created by kthread_create is being stopped -  -

SYNOPSIS

- -

-

-scheduler.kthread_stop 
-
- -  -

VALUES

- -

- -thread_priority -

-priority of the thread -
- -

- -thread_pid -

-PID of the thread being stopped -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scheduler.kthread_stop.return.3stap.html b/man/probe::scheduler.kthread_stop.return.3stap.html deleted file mode 100644 index 93fd7c74..00000000 --- a/man/probe::scheduler.kthread_stop.return.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::SCHEDULER\&.K - -

PROBE::SCHEDULER\&.K

-Section: Scheduler Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scheduler.kthread_stop.return - A kthread is stopped and gets the return value -  -

SYNOPSIS

- -

-

-scheduler.kthread_stop.return 
-
- -  -

VALUES

- -

- -return_value -

-return value after stopping the thread -
- -

- -name -

-name of the probe point -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scheduler.migrate.3stap.html b/man/probe::scheduler.migrate.3stap.html deleted file mode 100644 index f0a5fe6c..00000000 --- a/man/probe::scheduler.migrate.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::SCHEDULER\&.M - -

PROBE::SCHEDULER\&.M

-Section: Scheduler Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scheduler.migrate - Task migrating across cpus -  -

SYNOPSIS

- -

-

-scheduler.migrate 
-
- -  -

VALUES

- -

- -priority -

-priority of the task being migrated -
- -

- -cpu_from -

-the original cpu -
- -

- -name -

-name of the probe point -
- -

- -task -

-the process that is being migrated -
- -

- -cpu_to -

-the destination cpu -
- -

- -pid -

-PID of the task being migrated -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scheduler.process_exit.3stap.html b/man/probe::scheduler.process_exit.3stap.html deleted file mode 100644 index 8ad0b3ff..00000000 --- a/man/probe::scheduler.process_exit.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::SCHEDULER\&.P - -

PROBE::SCHEDULER\&.P

-Section: Scheduler Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scheduler.process_exit - Process exiting -  -

SYNOPSIS

- -

-

-scheduler.process_exit 
-
- -  -

VALUES

- -

- -priority -

-priority of the process exiting -
- -

- -name -

-name of the probe point -
- -

- -pid -

-PID of the process exiting -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scheduler.process_fork.3stap.html b/man/probe::scheduler.process_fork.3stap.html deleted file mode 100644 index e5f30720..00000000 --- a/man/probe::scheduler.process_fork.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::SCHEDULER\&.P - -

PROBE::SCHEDULER\&.P

-Section: Scheduler Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scheduler.process_fork - Process forked -  -

SYNOPSIS

- -

-

-scheduler.process_fork 
-
- -  -

VALUES

- -

- -name -

-name of the probe point -
- -

- -parent_pid -

-PID of the parent process -
- -

- -child_pid -

-PID of the child process -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scheduler.process_free.3stap.html b/man/probe::scheduler.process_free.3stap.html deleted file mode 100644 index c61ed8e3..00000000 --- a/man/probe::scheduler.process_free.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::SCHEDULER\&.P - -

PROBE::SCHEDULER\&.P

-Section: Scheduler Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scheduler.process_free - Scheduler freeing a data structure for a process -  -

SYNOPSIS

- -

-

-scheduler.process_free 
-
- -  -

VALUES

- -

- -priority -

-priority of the process getting freed -
- -

- -name -

-name of the probe point -
- -

- -pid -

-PID of the process getting freed -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scheduler.process_wait.3stap.html b/man/probe::scheduler.process_wait.3stap.html deleted file mode 100644 index 8b3d5823..00000000 --- a/man/probe::scheduler.process_wait.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::SCHEDULER\&.P - -

PROBE::SCHEDULER\&.P

-Section: Scheduler Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scheduler.process_wait - Scheduler starting to wait on a process -  -

SYNOPSIS

- -

-

-scheduler.process_wait 
-
- -  -

VALUES

- -

- -name -

-name of the probe point -
- -

- -pid -

-PID of the process scheduler is waiting on -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scheduler.signal_send.3stap.html b/man/probe::scheduler.signal_send.3stap.html deleted file mode 100644 index e053899d..00000000 --- a/man/probe::scheduler.signal_send.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::SCHEDULER\&.S - -

PROBE::SCHEDULER\&.S

-Section: Scheduler Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scheduler.signal_send - Sending a signal -  -

SYNOPSIS

- -

-

-scheduler.signal_send 
-
- -  -

VALUES

- -

- -signal_number -

-signal number -
- -

- -name -

-name of the probe point -
- -

- -pid -

-pid of the process sending signal -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scheduler.tick.3stap.html b/man/probe::scheduler.tick.3stap.html deleted file mode 100644 index 43b1d8ee..00000000 --- a/man/probe::scheduler.tick.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::SCHEDULER\&.T - -

PROBE::SCHEDULER\&.T

-Section: Scheduler Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scheduler.tick - Schedulers internal tick, a processes timeslice accounting is updated -  -

SYNOPSIS

- -

-

-scheduler.tick 
-
- -  -

VALUES

- -

- -name -

-name of the probe point -
- -

- -idle -

-boolean indicating whether current is the idle process -
- -  -

CONTEXT

- -

- -The process whose accounting will be updated. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scheduler.wait_task.3stap.html b/man/probe::scheduler.wait_task.3stap.html deleted file mode 100644 index 111bdd07..00000000 --- a/man/probe::scheduler.wait_task.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::SCHEDULER\&.W - -

PROBE::SCHEDULER\&.W

-Section: Scheduler Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scheduler.wait_task - Waiting on a task to unschedule (become inactive) -  -

SYNOPSIS

- -

-

-scheduler.wait_task 
-
- -  -

VALUES

- -

- -name -

-name of the probe point -
- -

- -task_pid -

-PID of the task the scheduler is waiting on -
- -

- -task_priority -

-priority of the task -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scheduler.wakeup.3stap.html b/man/probe::scheduler.wakeup.3stap.html deleted file mode 100644 index cfb29294..00000000 --- a/man/probe::scheduler.wakeup.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::SCHEDULER\&.W - -

PROBE::SCHEDULER\&.W

-Section: Scheduler Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scheduler.wakeup - Task is woken up -  -

SYNOPSIS

- -

-

-scheduler.wakeup 
-
- -  -

VALUES

- -

- -task_cpu -

-cpu of the task being woken up -
- -

- -name -

-name of the probe point -
- -

- -task_pid -

-PID of the task being woken up -
- -

- -task_priority -

-priority of the task being woken up -
- -

- -task_state -

-state of the task being woken up -
- -

- -task_tid -

-tid of the task being woken up -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scheduler.wakeup_new.3stap.html b/man/probe::scheduler.wakeup_new.3stap.html deleted file mode 100644 index 7b7b63bf..00000000 --- a/man/probe::scheduler.wakeup_new.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::SCHEDULER\&.W - -

PROBE::SCHEDULER\&.W

-Section: Scheduler Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scheduler.wakeup_new - Newly created task is woken up for the first time -  -

SYNOPSIS

- -

-

-scheduler.wakeup_new 
-
- -  -

VALUES

- -

- -task_cpu -

-cpu of the task woken up -
- -

- -name -

-name of the probe point -
- -

- -task_pid -

-PID of the new task woken up -
- -

- -task_priority -

-priority of the new task -
- -

- -task_state -

-state of the task woken up -
- -

- -task_tid -

-TID of the new task woken up -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scsi.iocompleted.3stap.html b/man/probe::scsi.iocompleted.3stap.html deleted file mode 100644 index 2e1e6b6d..00000000 --- a/man/probe::scsi.iocompleted.3stap.html +++ /dev/null @@ -1,128 +0,0 @@ - -Manpage of PROBE::SCSI\&.IOCOMP - -

PROBE::SCSI\&.IOCOMP

-Section: SCSI Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scsi.iocompleted - SCSI mid-layer running the completion processing for block device I/O requests -  -

SYNOPSIS

- -

-

-scsi.iocompleted 
-
- -  -

VALUES

- -

- -device_state_str -

-The current state of the device, as a string -
- -

- -dev_id -

-The scsi device id -
- -

- -channel -

-The channel number -
- -

- -data_direction -

-The data_direction specifies whether this command is from/to the device -
- -

- -lun -

-The lun number -
- -

- -host_no -

-The host number -
- -

- -data_direction_str -

-Data direction, as a string -
- -

- -device_state -

-The current state of the device -
- -

- -req_addr -

-The current struct request pointer, as a number -
- -

- -goodbytes -

-The bytes completed -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scsi.iodispatching.3stap.html b/man/probe::scsi.iodispatching.3stap.html deleted file mode 100644 index 03093e1b..00000000 --- a/man/probe::scsi.iodispatching.3stap.html +++ /dev/null @@ -1,135 +0,0 @@ - -Manpage of PROBE::SCSI\&.IODISP - -

PROBE::SCSI\&.IODISP

-Section: SCSI Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scsi.iodispatching - SCSI mid-layer dispatched low-level SCSI command -  -

SYNOPSIS

- -

-

-scsi.iodispatching 
-
- -  -

VALUES

- -

- -device_state_str -

-The current state of the device, as a string -
- -

- -dev_id -

-The scsi device id -
- -

- -channel -

-The channel number -
- -

- -data_direction -

-The data_direction specifies whether this command is from/to the device 0 (DMA_BIDIRECTIONAL), 1 (DMA_TO_DEVICE), 2 (DMA_FROM_DEVICE), 3 (DMA_NONE) -
- -

- -lun -

-The lun number -
- -

- -request_bufflen -

-The request buffer length -
- -

- -host_no -

-The host number -
- -

- -device_state -

-The current state of the device -
- -

- -data_direction_str -

-Data direction, as a string -
- -

- -req_addr -

-The current struct request pointer, as a number -
- -

- -request_buffer -

-The request buffer address -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scsi.iodone.3stap.html b/man/probe::scsi.iodone.3stap.html deleted file mode 100644 index b9e96aa2..00000000 --- a/man/probe::scsi.iodone.3stap.html +++ /dev/null @@ -1,128 +0,0 @@ - -Manpage of PROBE::SCSI\&.IODONE - -

PROBE::SCSI\&.IODONE

-Section: SCSI Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scsi.iodone - SCSI command completed by low level driver and enqueued into the done queue. -  -

SYNOPSIS

- -

-

-scsi.iodone 
-
- -  -

VALUES

- -

- -device_state_str -

-The current state of the device, as a string -
- -

- -dev_id -

-The scsi device id -
- -

- -channel -

-The channel number -
- -

- -data_direction -

-The data_direction specifies whether this command is from/to the device. -
- -

- -lun -

-The lun number -
- -

- -host_no -

-The host number -
- -

- -data_direction_str -

-Data direction, as a string -
- -

- -device_state -

-The current state of the device -
- -

- -scsi_timer_pending -

-1 if a timer is pending on this request -
- -

- -req_addr -

-The current struct request pointer, as a number -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scsi.ioentry.3stap.html b/man/probe::scsi.ioentry.3stap.html deleted file mode 100644 index 5b38d8c2..00000000 --- a/man/probe::scsi.ioentry.3stap.html +++ /dev/null @@ -1,93 +0,0 @@ - -Manpage of PROBE::SCSI\&.IOENTR - -

PROBE::SCSI\&.IOENTR

-Section: SCSI Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scsi.ioentry - Prepares a SCSI mid-layer request -  -

SYNOPSIS

- -

-

-scsi.ioentry 
-
- -  -

VALUES

- -

- -disk_major -

-The major number of the disk (-1 if no information) -
- -

- -device_state_str -

-The current state of the device, as a string -
- -

- -device_state -

-The current state of the device -
- -

- -req_addr -

-The current struct request pointer, as a number -
- -

- -disk_minor -

-The minor number of the disk (-1 if no information) -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scsi.ioexecute.3stap.html b/man/probe::scsi.ioexecute.3stap.html deleted file mode 100644 index 3e7ecb0d..00000000 --- a/man/probe::scsi.ioexecute.3stap.html +++ /dev/null @@ -1,142 +0,0 @@ - -Manpage of PROBE::SCSI\&.IOEXEC - -

PROBE::SCSI\&.IOEXEC

-Section: SCSI Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scsi.ioexecute - Create mid-layer SCSI request and wait for the result -  -

SYNOPSIS

- -

-

-scsi.ioexecute 
-
- -  -

VALUES

- -

- -retries -

-Number of times to retry request -
- -

- -device_state_str -

-The current state of the device, as a string -
- -

- -dev_id -

-The scsi device id -
- -

- -channel -

-The channel number -
- -

- -data_direction -

-The data_direction specifies whether this command is from/to the device. -
- -

- -lun -

-The lun number -
- -

- -timeout -

-Request timeout in seconds -
- -

- -request_bufflen -

-The data buffer buffer length -
- -

- -host_no -

-The host number -
- -

- -data_direction_str -

-Data direction, as a string -
- -

- -device_state -

-The current state of the device -
- -

- -request_buffer -

-The data buffer address -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:28 GMT, March 18, 2014 - - diff --git a/man/probe::scsi.set_state.3stap.html b/man/probe::scsi.set_state.3stap.html deleted file mode 100644 index c0019b64..00000000 --- a/man/probe::scsi.set_state.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::SCSI\&.SET_ST - -

PROBE::SCSI\&.SET_ST

-Section: SCSI Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::scsi.set_state - Order SCSI device state change -  -

SYNOPSIS

- -

-

-scsi.set_state 
-
- -  -

VALUES

- -

- -state_str -

-The new state of the device, as a string -
- -

- -dev_id -

-The scsi device id -
- -

- -channel -

-The channel number -
- -

- -state -

-The new state of the device -
- -

- -old_state_str -

-The current state of the device, as a string -
- -

- -lun -

-The lun number -
- -

- -old_state -

-The current state of the device -
- -

- -host_no -

-The host number -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.check_ignored.3stap.html b/man/probe::signal.check_ignored.3stap.html deleted file mode 100644 index 597440a5..00000000 --- a/man/probe::signal.check_ignored.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.CHEC - -

PROBE::SIGNAL\&.CHEC

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.check_ignored - Checking to see signal is ignored -  -

SYNOPSIS

- -

-

-signal.check_ignored 
-
- -  -

VALUES

- -

- -sig_name -

-A string representation of the signal -
- -

- -sig -

-The number of the signal -
- -

- -pid_name -

-Name of the process receiving the signal -
- -

- -sig_pid -

-The PID of the process receiving the signal -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.check_ignored.return.3stap.html b/man/probe::signal.check_ignored.return.3stap.html deleted file mode 100644 index 51c32c11..00000000 --- a/man/probe::signal.check_ignored.return.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.CHEC - -

PROBE::SIGNAL\&.CHEC

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.check_ignored.return - Check to see signal is ignored completed -  -

SYNOPSIS

- -

-

-signal.check_ignored.return 
-
- -  -

VALUES

- -

- -retstr -

-Return value as a string -
- -

- -name -

-Name of the probe point -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.checkperm.3stap.html b/man/probe::signal.checkperm.3stap.html deleted file mode 100644 index 16305e11..00000000 --- a/man/probe::signal.checkperm.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.CHEC - -

PROBE::SIGNAL\&.CHEC

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.checkperm - Check being performed on a sent signal -  -

SYNOPSIS

- -

-

-signal.checkperm 
-
- -  -

VALUES

- -

- -name -

-Name of the probe point -
- -

- -task -

-A task handle to the signal recipient -
- -

- -sinfo -

-The address of the siginfo structure -
- -

- -si_code -

-Indicates the signal type -
- -

- -sig_name -

-A string representation of the signal -
- -

- -sig -

-The number of the signal -
- -

- -pid_name -

-Name of the process receiving the signal -
- -

- -sig_pid -

-The PID of the process receiving the signal -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.checkperm.return.3stap.html b/man/probe::signal.checkperm.return.3stap.html deleted file mode 100644 index cf249bec..00000000 --- a/man/probe::signal.checkperm.return.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.CHEC - -

PROBE::SIGNAL\&.CHEC

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.checkperm.return - Check performed on a sent signal completed -  -

SYNOPSIS

- -

-

-signal.checkperm.return 
-
- -  -

VALUES

- -

- -retstr -

-Return value as a string -
- -

- -name -

-Name of the probe point -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.do_action.3stap.html b/man/probe::signal.do_action.3stap.html deleted file mode 100644 index 8ba416c5..00000000 --- a/man/probe::signal.do_action.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.DO_A - -

PROBE::SIGNAL\&.DO_A

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.do_action - Examining or changing a signal action -  -

SYNOPSIS

- -

-

-signal.do_action 
-
- -  -

VALUES

- -

- -sa_mask -

-The new mask of the signal -
- -

- -name -

-Name of the probe point -
- -

- -sig_name -

-A string representation of the signal -
- -

- -oldsigact_addr -

-The address of the old sigaction struct associated with the signal -
- -

- -sig -

-The signal to be examined/changed -
- -

- -sa_handler -

-The new handler of the signal -
- -

- -sigact_addr -

-The address of the new sigaction struct associated with the signal -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.do_action.return.3stap.html b/man/probe::signal.do_action.return.3stap.html deleted file mode 100644 index cc8338d7..00000000 --- a/man/probe::signal.do_action.return.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.DO_A - -

PROBE::SIGNAL\&.DO_A

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.do_action.return - Examining or changing a signal action completed -  -

SYNOPSIS

- -

-

-signal.do_action.return 
-
- -  -

VALUES

- -

- -retstr -

-Return value as a string -
- -

- -name -

-Name of the probe point -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.flush.3stap.html b/man/probe::signal.flush.3stap.html deleted file mode 100644 index 7a887da9..00000000 --- a/man/probe::signal.flush.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.FLUS - -

PROBE::SIGNAL\&.FLUS

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.flush - Flushing all pending signals for a task -  -

SYNOPSIS

- -

-

-signal.flush 
-
- -  -

VALUES

- -

- -name -

-Name of the probe point -
- -

- -task -

-The task handler of the process performing the flush -
- -

- -pid_name -

-The name of the process associated with the task performing the flush -
- -

- -sig_pid -

-The PID of the process associated with the task performing the flush -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.force_segv.3stap.html b/man/probe::signal.force_segv.3stap.html deleted file mode 100644 index a98e2cdc..00000000 --- a/man/probe::signal.force_segv.3stap.html +++ /dev/null @@ -1,93 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.FORC - -

PROBE::SIGNAL\&.FORC

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.force_segv - Forcing send of SIGSEGV -  -

SYNOPSIS

- -

-

-signal.force_segv 
-
- -  -

VALUES

- -

- -name -

-Name of the probe point -
- -

- -sig_name -

-A string representation of the signal -
- -

- -sig -

-The number of the signal -
- -

- -pid_name -

-Name of the process receiving the signal -
- -

- -sig_pid -

-The PID of the process receiving the signal -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.force_segv.return.3stap.html b/man/probe::signal.force_segv.return.3stap.html deleted file mode 100644 index 52b1df45..00000000 --- a/man/probe::signal.force_segv.return.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.FORC - -

PROBE::SIGNAL\&.FORC

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.force_segv.return - Forcing send of SIGSEGV complete -  -

SYNOPSIS

- -

-

-signal.force_segv.return 
-
- -  -

VALUES

- -

- -retstr -

-Return value as a string -
- -

- -name -

-Name of the probe point -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.handle.3stap.html b/man/probe::signal.handle.3stap.html deleted file mode 100644 index 06db819f..00000000 --- a/man/probe::signal.handle.3stap.html +++ /dev/null @@ -1,121 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.HAND - -

PROBE::SIGNAL\&.HAND

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.handle - Signal handler being invoked -  -

SYNOPSIS

- -

-

-signal.handle 
-
- -  -

VALUES

- -

- -regs -

-The address of the kernel-mode stack area (deprecated in SystemTap 2.1) -
- -

- -sig_code -

-The si_code value of the siginfo signal -
- -

- -name -

-Name of the probe point -
- -

- -sig_mode -

-Indicates whether the signal was a user-mode or kernel-mode signal -
- -

- -sinfo -

-The address of the siginfo table -
- -

- -sig_name -

-A string representation of the signal -
- -

- -oldset_addr -

-The address of the bitmask array of blocked signals (deprecated in SystemTap 2.1) -
- -

- -sig -

-The signal number that invoked the signal handler -
- -

- -ka_addr -

-The address of the k_sigaction table associated with the signal -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.handle.return.3stap.html b/man/probe::signal.handle.return.3stap.html deleted file mode 100644 index f1fb34d3..00000000 --- a/man/probe::signal.handle.return.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.HAND - -

PROBE::SIGNAL\&.HAND

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.handle.return - Signal handler invocation completed -  -

SYNOPSIS

- -

-

-signal.handle.return 
-
- -  -

VALUES

- -

- -retstr -

-Return value as a string -
- -

- -name -

-Name of the probe point -
- -  -

DESCRIPTION

- -

- -(deprecated in SystemTap 2.1) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.pending.3stap.html b/man/probe::signal.pending.3stap.html deleted file mode 100644 index c8e566af..00000000 --- a/man/probe::signal.pending.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.PEND - -

PROBE::SIGNAL\&.PEND

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.pending - Examining pending signal -  -

SYNOPSIS

- -

-

-signal.pending 
-
- -  -

VALUES

- -

- -name -

-Name of the probe point -
- -

- -sigset_size -

-The size of the user-space signal set -
- -

- -sigset_add -

-The address of the user-space signal set (sigset_t) -
- -  -

DESCRIPTION

- -

- -This probe is used to examine a set of signals pending for delivery to a specific thread. This normally occurs when the do_sigpending kernel function is executed. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.pending.return.3stap.html b/man/probe::signal.pending.return.3stap.html deleted file mode 100644 index 95c111b7..00000000 --- a/man/probe::signal.pending.return.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.PEND - -

PROBE::SIGNAL\&.PEND

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.pending.return - Examination of pending signal completed -  -

SYNOPSIS

- -

-

-signal.pending.return 
-
- -  -

VALUES

- -

- -retstr -

-Return value as a string -
- -

- -name -

-Name of the probe point -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.procmask.3stap.html b/man/probe::signal.procmask.3stap.html deleted file mode 100644 index feb7ff53..00000000 --- a/man/probe::signal.procmask.3stap.html +++ /dev/null @@ -1,93 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.PROC - -

PROBE::SIGNAL\&.PROC

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.procmask - Examining or changing blocked signals -  -

SYNOPSIS

- -

-

-signal.procmask 
-
- -  -

VALUES

- -

- -how -

-Indicates how to change the blocked signals; possible values are SIG_BLOCK=0 (for blocking signals), SIG_UNBLOCK=1 (for unblocking signals), and SIG_SETMASK=2 for setting the signal mask. -
- -

- -name -

-Name of the probe point -
- -

- -oldsigset_addr -

-The old address of the signal set (sigset_t) -
- -

- -sigset -

-The actual value to be set for sigset_t (correct?) -
- -

- -sigset_addr -

-The address of the signal set (sigset_t) to be implemented -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.procmask.return.3stap.html b/man/probe::signal.procmask.return.3stap.html deleted file mode 100644 index 61ce98f5..00000000 --- a/man/probe::signal.procmask.return.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.PROC - -

PROBE::SIGNAL\&.PROC

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.procmask.return - Examining or changing blocked signals completed -  -

SYNOPSIS

- -

-

-signal.procmask.return 
-
- -  -

VALUES

- -

- -retstr -

-Return value as a string -
- -

- -name -

-Name of the probe point -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.send.3stap.html b/man/probe::signal.send.3stap.html deleted file mode 100644 index b5a5132c..00000000 --- a/man/probe::signal.send.3stap.html +++ /dev/null @@ -1,135 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.SEND - -

PROBE::SIGNAL\&.SEND

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.send - Signal being sent to a process -  -

SYNOPSIS

- -

-

-signal.send 
-
- -  -

VALUES

- -

- -send2queue -

-Indicates whether the signal is sent to an existing sigqueue (deprecated in SystemTap 2.1) -
- -

- -name -

-The name of the function used to send out the signal -
- -

- -task -

-A task handle to the signal recipient -
- -

- -sinfo -

-The address of siginfo struct -
- -

- -si_code -

-Indicates the signal type -
- -

- -sig_name -

-A string representation of the signal -
- -

- -sig -

-The number of the signal -
- -

- -shared -

-Indicates whether the signal is shared by the thread group -
- -

- -sig_pid -

-The PID of the process receiving the signal -
- -

- -pid_name -

-The name of the signal recipient -
- -  -

CONTEXT

- -

- -The signal's sender. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.send.return.3stap.html b/man/probe::signal.send.return.3stap.html deleted file mode 100644 index 7976cb20..00000000 --- a/man/probe::signal.send.return.3stap.html +++ /dev/null @@ -1,119 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.SEND - -

PROBE::SIGNAL\&.SEND

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.send.return - Signal being sent to a process completed (deprecated in SystemTap 2.1) -  -

SYNOPSIS

- -

-

-signal.send.return 
-
- -  -

VALUES

- -

- -retstr -

-The return value to either __group_send_sig_info, specific_send_sig_info, or send_sigqueue -
- -

- -send2queue -

-Indicates whether the sent signal was sent to an existing sigqueue -
- -

- -name -

-The name of the function used to send out the signal -
- -

- -shared -

-Indicates whether the sent signal is shared by the thread group. -
- -  -

CONTEXT

- -

- -The signal's sender. (correct?) -  -

DESCRIPTION

- -

- -Possible __group_send_sig_info and specific_send_sig_info return values are as follows; -

- -0 -- The signal is successfully sent to a process, which means that, (1) the signal was ignored by the receiving process, (2) this is a non-RT signal and the system already has one queued, and (3) the signal was successfully added to the sigqueue of the receiving process. -

- --EAGAIN -- The sigqueue of the receiving process is overflowing, the signal was RT, and the signal was sent by a user using something other than -kill. -

- -Possible send_group_sigqueue and send_sigqueue return values are as follows; -

- -0 -- The signal was either successfully added into the sigqueue of the receiving process, or a SI_TIMER entry is already queued (in which case, the overrun count will be simply incremented). -

- -1 -- The signal was ignored by the receiving process. -

- --1 -- (send_sigqueue only) The task was marked exiting, allowing * posix_timer_event to redirect it to the group leader. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.send_sig_queue.3stap.html b/man/probe::signal.send_sig_queue.3stap.html deleted file mode 100644 index b19b7211..00000000 --- a/man/probe::signal.send_sig_queue.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.SEND - -

PROBE::SIGNAL\&.SEND

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.send_sig_queue - Queuing a signal to a process -  -

SYNOPSIS

- -

-

-signal.send_sig_queue 
-
- -  -

VALUES

- -

- -sigqueue_addr -

-The address of the signal queue -
- -

- -name -

-Name of the probe point -
- -

- -sig_name -

-A string representation of the signal -
- -

- -sig -

-The queued signal -
- -

- -pid_name -

-Name of the process to which the signal is queued -
- -

- -sig_pid -

-The PID of the process to which the signal is queued -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.send_sig_queue.return.3stap.html b/man/probe::signal.send_sig_queue.return.3stap.html deleted file mode 100644 index a042b680..00000000 --- a/man/probe::signal.send_sig_queue.return.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.SEND - -

PROBE::SIGNAL\&.SEND

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.send_sig_queue.return - Queuing a signal to a process completed -  -

SYNOPSIS

- -

-

-signal.send_sig_queue.return 
-
- -  -

VALUES

- -

- -retstr -

-Return value as a string -
- -

- -name -

-Name of the probe point -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.sys_tgkill.3stap.html b/man/probe::signal.sys_tgkill.3stap.html deleted file mode 100644 index b28e55dc..00000000 --- a/man/probe::signal.sys_tgkill.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.SYS_ - -

PROBE::SIGNAL\&.SYS_

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.sys_tgkill - Sending kill signal to a thread group -  -

SYNOPSIS

- -

-

-signal.sys_tgkill 
-
- -  -

VALUES

- -

- -name -

-Name of the probe point -
- -

- -sig_name -

-A string representation of the signal -
- -

- -sig -

-The specific kill signal sent to the process -
- -

- -tgid -

-The thread group ID of the thread receiving the kill signal -
- -

- -pid_name -

-The name of the signal recipient -
- -

- -sig_pid -

-The PID of the thread receiving the kill signal -
- -  -

DESCRIPTION

- -

- -The tgkill call is similar to tkill, except that it also allows the caller to specify the thread group ID of the thread to be signalled. This protects against TID reuse. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.sys_tgkill.return.3stap.html b/man/probe::signal.sys_tgkill.return.3stap.html deleted file mode 100644 index 481cfa48..00000000 --- a/man/probe::signal.sys_tgkill.return.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.SYS_ - -

PROBE::SIGNAL\&.SYS_

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.sys_tgkill.return - Sending kill signal to a thread group completed -  -

SYNOPSIS

- -

-

-signal.sys_tgkill.return 
-
- -  -

VALUES

- -

- -retstr -

-The return value to either __group_send_sig_info, -
- -

- -name -

-Name of the probe point -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.sys_tkill.3stap.html b/man/probe::signal.sys_tkill.3stap.html deleted file mode 100644 index 92a36bec..00000000 --- a/man/probe::signal.sys_tkill.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.SYS_ - -

PROBE::SIGNAL\&.SYS_

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.sys_tkill - Sending a kill signal to a thread -  -

SYNOPSIS

- -

-

-signal.sys_tkill 
-
- -  -

VALUES

- -

- -name -

-Name of the probe point -
- -

- -sig_name -

-A string representation of the signal -
- -

- -sig -

-The specific signal sent to the process -
- -

- -pid_name -

-The name of the signal recipient -
- -

- -sig_pid -

-The PID of the process receiving the kill signal -
- -  -

DESCRIPTION

- -

- -The tkill call is analogous to kill(2), except that it also allows a process within a specific thread group to be targeted. Such processes are targeted through their unique thread IDs (TID). -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.syskill.3stap.html b/man/probe::signal.syskill.3stap.html deleted file mode 100644 index 41ee80b5..00000000 --- a/man/probe::signal.syskill.3stap.html +++ /dev/null @@ -1,93 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.SYSK - -

PROBE::SIGNAL\&.SYSK

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.syskill - Sending kill signal to a process -  -

SYNOPSIS

- -

-

-signal.syskill 
-
- -  -

VALUES

- -

- -name -

-Name of the probe point -
- -

- -sig_name -

-A string representation of the signal -
- -

- -sig -

-The specific signal sent to the process -
- -

- -pid_name -

-The name of the signal recipient -
- -

- -sig_pid -

-The PID of the process receiving the signal -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.syskill.return.3stap.html b/man/probe::signal.syskill.return.3stap.html deleted file mode 100644 index 264b16e1..00000000 --- a/man/probe::signal.syskill.return.3stap.html +++ /dev/null @@ -1,61 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.SYSK - -

PROBE::SIGNAL\&.SYSK

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.syskill.return - Sending kill signal completed -  -

SYNOPSIS

- -

-

-signal.syskill.return 
-
- -  -

VALUES

- -

- -None -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.systkill.return.3stap.html b/man/probe::signal.systkill.return.3stap.html deleted file mode 100644 index 2ad3fb92..00000000 --- a/man/probe::signal.systkill.return.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.SYST - -

PROBE::SIGNAL\&.SYST

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.systkill.return - Sending kill signal to a thread completed -  -

SYNOPSIS

- -

-

-signal.systkill.return 
-
- -  -

VALUES

- -

- -retstr -

-The return value to either __group_send_sig_info, -
- -

- -name -

-Name of the probe point -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::signal.wakeup.3stap.html b/man/probe::signal.wakeup.3stap.html deleted file mode 100644 index ea3c11fc..00000000 --- a/man/probe::signal.wakeup.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::SIGNAL\&.WAKE - -

PROBE::SIGNAL\&.WAKE

-Section: Signal Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::signal.wakeup - Sleeping process being wakened for signal -  -

SYNOPSIS

- -

-

-signal.wakeup 
-
- -  -

VALUES

- -

- -resume -

-Indicates whether to wake up a task in a STOPPED or TRACED state -
- -

- -state_mask -

-A string representation indicating the mask of task states to wake. Possible values are TASK_INTERRUPTIBLE, TASK_STOPPED, TASK_TRACED, TASK_WAKEKILL, and TASK_INTERRUPTIBLE. -
- -

- -pid_name -

-Name of the process to wake -
- -

- -sig_pid -

-The PID of the process to wake -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.aio_read.3stap.html b/man/probe::socket.aio_read.3stap.html deleted file mode 100644 index 68680961..00000000 --- a/man/probe::socket.aio_read.3stap.html +++ /dev/null @@ -1,123 +0,0 @@ - -Manpage of PROBE::SOCKET\&.AIO_ - -

PROBE::SOCKET\&.AIO_

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.aio_read - Receiving message via sock_aio_read -  -

SYNOPSIS

- -

-

-socket.aio_read 
-
- -  -

VALUES

- -

- -protocol -

-Protocol value -
- -

- -flags -

-Socket flags value -
- -

- -name -

-Name of this probe -
- -

- -state -

-Socket state value -
- -

- -size -

-Message size in bytes -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The message sender -  -

DESCRIPTION

- -

- -Fires at the beginning of receiving a message on a socket via the -sock_aio_read -function -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.aio_read.return.3stap.html b/man/probe::socket.aio_read.return.3stap.html deleted file mode 100644 index dba0f90c..00000000 --- a/man/probe::socket.aio_read.return.3stap.html +++ /dev/null @@ -1,130 +0,0 @@ - -Manpage of PROBE::SOCKET\&.AIO_ - -

PROBE::SOCKET\&.AIO_

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.aio_read.return - Conclusion of message received via sock_aio_read -  -

SYNOPSIS

- -

-

-socket.aio_read.return 
-
- -  -

VALUES

- -

- -success -

-Was receive successful? (1 = yes, 0 = no) -
- -

- -protocol -

-Protocol value -
- -

- -flags -

-Socket flags value -
- -

- -name -

-Name of this probe -
- -

- -state -

-Socket state value -
- -

- -size -

-Size of message received (in bytes) or error code if success = 0 -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The message receiver. -  -

DESCRIPTION

- -

- -Fires at the conclusion of receiving a message on a socket via the -sock_aio_read -function -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.aio_write.3stap.html b/man/probe::socket.aio_write.3stap.html deleted file mode 100644 index 77952a8d..00000000 --- a/man/probe::socket.aio_write.3stap.html +++ /dev/null @@ -1,123 +0,0 @@ - -Manpage of PROBE::SOCKET\&.AIO_ - -

PROBE::SOCKET\&.AIO_

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.aio_write - Message send via sock_aio_write -  -

SYNOPSIS

- -

-

-socket.aio_write 
-
- -  -

VALUES

- -

- -protocol -

-Protocol value -
- -

- -flags -

-Socket flags value -
- -

- -name -

-Name of this probe -
- -

- -state -

-Socket state value -
- -

- -size -

-Message size in bytes -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The message sender -  -

DESCRIPTION

- -

- -Fires at the beginning of sending a message on a socket via the -sock_aio_write -function -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.aio_write.return.3stap.html b/man/probe::socket.aio_write.return.3stap.html deleted file mode 100644 index 3552370a..00000000 --- a/man/probe::socket.aio_write.return.3stap.html +++ /dev/null @@ -1,130 +0,0 @@ - -Manpage of PROBE::SOCKET\&.AIO_ - -

PROBE::SOCKET\&.AIO_

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.aio_write.return - Conclusion of message send via sock_aio_write -  -

SYNOPSIS

- -

-

-socket.aio_write.return 
-
- -  -

VALUES

- -

- -success -

-Was receive successful? (1 = yes, 0 = no) -
- -

- -protocol -

-Protocol value -
- -

- -flags -

-Socket flags value -
- -

- -name -

-Name of this probe -
- -

- -state -

-Socket state value -
- -

- -size -

-Size of message received (in bytes) or error code if success = 0 -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The message receiver. -  -

DESCRIPTION

- -

- -Fires at the conclusion of sending a message on a socket via the -sock_aio_write -function -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.close.3stap.html b/man/probe::socket.close.3stap.html deleted file mode 100644 index b8bae001..00000000 --- a/man/probe::socket.close.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::SOCKET\&.CLOS - -

PROBE::SOCKET\&.CLOS

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.close - Close a socket -  -

SYNOPSIS

- -

-

-socket.close 
-
- -  -

VALUES

- -

- -protocol -

-Protocol value -
- -

- -flags -

-Socket flags value -
- -

- -name -

-Name of this probe -
- -

- -state -

-Socket state value -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The requester (user process or kernel) -  -

DESCRIPTION

- -

- -Fires at the beginning of closing a socket. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.close.return.3stap.html b/man/probe::socket.close.return.3stap.html deleted file mode 100644 index fdd8dd01..00000000 --- a/man/probe::socket.close.return.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::SOCKET\&.CLOS - -

PROBE::SOCKET\&.CLOS

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.close.return - Return from closing a socket -  -

SYNOPSIS

- -

-

-socket.close.return 
-
- -  -

VALUES

- -

- -name -

-Name of this probe -
- -  -

CONTEXT

- -

- -The requester (user process or kernel) -  -

DESCRIPTION

- -

- -Fires at the conclusion of closing a socket. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.create.3stap.html b/man/probe::socket.create.3stap.html deleted file mode 100644 index 41e3f231..00000000 --- a/man/probe::socket.create.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::SOCKET\&.CREA - -

PROBE::SOCKET\&.CREA

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.create - Creation of a socket -  -

SYNOPSIS

- -

-

-socket.create 
-
- -  -

VALUES

- -

- -protocol -

-Protocol value -
- -

- -name -

-Name of this probe -
- -

- -requester -

-Requested by user process or the kernel (1 = kernel, 0 = user) -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The requester (see requester variable) -  -

DESCRIPTION

- -

- -Fires at the beginning of creating a socket. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.create.return.3stap.html b/man/probe::socket.create.return.3stap.html deleted file mode 100644 index e3be04e9..00000000 --- a/man/probe::socket.create.return.3stap.html +++ /dev/null @@ -1,121 +0,0 @@ - -Manpage of PROBE::SOCKET\&.CREA - -

PROBE::SOCKET\&.CREA

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.create.return - Return from Creation of a socket -  -

SYNOPSIS

- -

-

-socket.create.return 
-
- -  -

VALUES

- -

- -success -

-Was socket creation successful? (1 = yes, 0 = no) -
- -

- -protocol -

-Protocol value -
- -

- -err -

-Error code if success == 0 -
- -

- -name -

-Name of this probe -
- -

- -requester -

-Requested by user process or the kernel (1 = kernel, 0 = user) -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The requester (user process or kernel) -  -

DESCRIPTION

- -

- -Fires at the conclusion of creating a socket. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.readv.3stap.html b/man/probe::socket.readv.3stap.html deleted file mode 100644 index f257f22f..00000000 --- a/man/probe::socket.readv.3stap.html +++ /dev/null @@ -1,123 +0,0 @@ - -Manpage of PROBE::SOCKET\&.READ - -

PROBE::SOCKET\&.READ

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.readv - Receiving a message via sock_readv -  -

SYNOPSIS

- -

-

-socket.readv 
-
- -  -

VALUES

- -

- -protocol -

-Protocol value -
- -

- -flags -

-Socket flags value -
- -

- -name -

-Name of this probe -
- -

- -state -

-Socket state value -
- -

- -size -

-Message size in bytes -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The message sender -  -

DESCRIPTION

- -

- -Fires at the beginning of receiving a message on a socket via the -sock_readv -function -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.readv.return.3stap.html b/man/probe::socket.readv.return.3stap.html deleted file mode 100644 index dbcbaacd..00000000 --- a/man/probe::socket.readv.return.3stap.html +++ /dev/null @@ -1,130 +0,0 @@ - -Manpage of PROBE::SOCKET\&.READ - -

PROBE::SOCKET\&.READ

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.readv.return - Conclusion of receiving a message via sock_readv -  -

SYNOPSIS

- -

-

-socket.readv.return 
-
- -  -

VALUES

- -

- -success -

-Was receive successful? (1 = yes, 0 = no) -
- -

- -protocol -

-Protocol value -
- -

- -flags -

-Socket flags value -
- -

- -name -

-Name of this probe -
- -

- -state -

-Socket state value -
- -

- -size -

-Size of message received (in bytes) or error code if success = 0 -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The message receiver. -  -

DESCRIPTION

- -

- -Fires at the conclusion of receiving a message on a socket via the -sock_readv -function -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.receive.3stap.html b/man/probe::socket.receive.3stap.html deleted file mode 100644 index 0f79a1c3..00000000 --- a/man/probe::socket.receive.3stap.html +++ /dev/null @@ -1,121 +0,0 @@ - -Manpage of PROBE::SOCKET\&.RECE - -

PROBE::SOCKET\&.RECE

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.receive - Message received on a socket. -  -

SYNOPSIS

- -

-

-socket.receive 
-
- -  -

VALUES

- -

- -success -

-Was send successful? (1 = yes, 0 = no) -
- -

- -protocol -

-Protocol value -
- -

- -flags -

-Socket flags value -
- -

- -name -

-Name of this probe -
- -

- -state -

-Socket state value -
- -

- -size -

-Size of message received (in bytes) or error code if success = 0 -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The message receiver -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.recvmsg.3stap.html b/man/probe::socket.recvmsg.3stap.html deleted file mode 100644 index e9cc3002..00000000 --- a/man/probe::socket.recvmsg.3stap.html +++ /dev/null @@ -1,123 +0,0 @@ - -Manpage of PROBE::SOCKET\&.RECV - -

PROBE::SOCKET\&.RECV

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.recvmsg - Message being received on socket -  -

SYNOPSIS

- -

-

-socket.recvmsg 
-
- -  -

VALUES

- -

- -protocol -

-Protocol value -
- -

- -flags -

-Socket flags value -
- -

- -name -

-Name of this probe -
- -

- -state -

-Socket state value -
- -

- -size -

-Message size in bytes -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The message receiver. -  -

DESCRIPTION

- -

- -Fires at the beginning of receiving a message on a socket via the -sock_recvmsg -function -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.recvmsg.return.3stap.html b/man/probe::socket.recvmsg.return.3stap.html deleted file mode 100644 index aee418c2..00000000 --- a/man/probe::socket.recvmsg.return.3stap.html +++ /dev/null @@ -1,130 +0,0 @@ - -Manpage of PROBE::SOCKET\&.RECV - -

PROBE::SOCKET\&.RECV

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.recvmsg.return - Return from Message being received on socket -  -

SYNOPSIS

- -

-

-socket.recvmsg.return 
-
- -  -

VALUES

- -

- -success -

-Was receive successful? (1 = yes, 0 = no) -
- -

- -protocol -

-Protocol value -
- -

- -flags -

-Socket flags value -
- -

- -name -

-Name of this probe -
- -

- -state -

-Socket state value -
- -

- -size -

-Size of message received (in bytes) or error code if success = 0 -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The message receiver. -  -

DESCRIPTION

- -

- -Fires at the conclusion of receiving a message on a socket via the -sock_recvmsg -function. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.send.3stap.html b/man/probe::socket.send.3stap.html deleted file mode 100644 index ea1d5e13..00000000 --- a/man/probe::socket.send.3stap.html +++ /dev/null @@ -1,121 +0,0 @@ - -Manpage of PROBE::SOCKET\&.SEND - -

PROBE::SOCKET\&.SEND

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.send - Message sent on a socket. -  -

SYNOPSIS

- -

-

-socket.send 
-
- -  -

VALUES

- -

- -success -

-Was send successful? (1 = yes, 0 = no) -
- -

- -protocol -

-Protocol value -
- -

- -flags -

-Socket flags value -
- -

- -name -

-Name of this probe -
- -

- -state -

-Socket state value -
- -

- -size -

-Size of message sent (in bytes) or error code if success = 0 -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The message sender -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.sendmsg.3stap.html b/man/probe::socket.sendmsg.3stap.html deleted file mode 100644 index 793d39c9..00000000 --- a/man/probe::socket.sendmsg.3stap.html +++ /dev/null @@ -1,123 +0,0 @@ - -Manpage of PROBE::SOCKET\&.SEND - -

PROBE::SOCKET\&.SEND

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.sendmsg - Message is currently being sent on a socket. -  -

SYNOPSIS

- -

-

-socket.sendmsg 
-
- -  -

VALUES

- -

- -protocol -

-Protocol value -
- -

- -flags -

-Socket flags value -
- -

- -name -

-Name of this probe -
- -

- -state -

-Socket state value -
- -

- -size -

-Message size in bytes -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The message sender -  -

DESCRIPTION

- -

- -Fires at the beginning of sending a message on a socket via the -sock_sendmsg -function -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.sendmsg.return.3stap.html b/man/probe::socket.sendmsg.return.3stap.html deleted file mode 100644 index e70f47b0..00000000 --- a/man/probe::socket.sendmsg.return.3stap.html +++ /dev/null @@ -1,130 +0,0 @@ - -Manpage of PROBE::SOCKET\&.SEND - -

PROBE::SOCKET\&.SEND

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.sendmsg.return - Return from socket.sendmsg. -  -

SYNOPSIS

- -

-

-socket.sendmsg.return 
-
- -  -

VALUES

- -

- -success -

-Was send successful? (1 = yes, 0 = no) -
- -

- -protocol -

-Protocol value -
- -

- -flags -

-Socket flags value -
- -

- -name -

-Name of this probe -
- -

- -state -

-Socket state value -
- -

- -size -

-Size of message sent (in bytes) or error code if success = 0 -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The message sender. -  -

DESCRIPTION

- -

- -Fires at the conclusion of sending a message on a socket via the -sock_sendmsg -function -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.writev.3stap.html b/man/probe::socket.writev.3stap.html deleted file mode 100644 index 79d766ba..00000000 --- a/man/probe::socket.writev.3stap.html +++ /dev/null @@ -1,123 +0,0 @@ - -Manpage of PROBE::SOCKET\&.WRIT - -

PROBE::SOCKET\&.WRIT

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.writev - Message sent via socket_writev -  -

SYNOPSIS

- -

-

-socket.writev 
-
- -  -

VALUES

- -

- -protocol -

-Protocol value -
- -

- -flags -

-Socket flags value -
- -

- -name -

-Name of this probe -
- -

- -state -

-Socket state value -
- -

- -size -

-Message size in bytes -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The message sender -  -

DESCRIPTION

- -

- -Fires at the beginning of sending a message on a socket via the -sock_writev -function -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::socket.writev.return.3stap.html b/man/probe::socket.writev.return.3stap.html deleted file mode 100644 index fb3f650e..00000000 --- a/man/probe::socket.writev.return.3stap.html +++ /dev/null @@ -1,130 +0,0 @@ - -Manpage of PROBE::SOCKET\&.WRIT - -

PROBE::SOCKET\&.WRIT

-Section: Socket Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::socket.writev.return - Conclusion of message sent via socket_writev -  -

SYNOPSIS

- -

-

-socket.writev.return 
-
- -  -

VALUES

- -

- -success -

-Was send successful? (1 = yes, 0 = no) -
- -

- -protocol -

-Protocol value -
- -

- -flags -

-Socket flags value -
- -

- -name -

-Name of this probe -
- -

- -state -

-Socket state value -
- -

- -size -

-Size of message sent (in bytes) or error code if success = 0 -
- -

- -type -

-Socket type value -
- -

- -family -

-Protocol family value -
- -  -

CONTEXT

- -

- -The message receiver. -  -

DESCRIPTION

- -

- -Fires at the conclusion of sending a message on a socket via the -sock_writev -function -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::softirq.entry.3stap.html b/man/probe::softirq.entry.3stap.html deleted file mode 100644 index ea94828d..00000000 --- a/man/probe::softirq.entry.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::SOFTIRQ\&.ENT - -

PROBE::SOFTIRQ\&.ENT

-Section: Interrupt Request (IRQ) Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::softirq.entry - Execution of handler for a pending softirq starting -  -

SYNOPSIS

- -

-

-softirq.entry 
-
- -  -

VALUES

- -

- -vec -

-softirq_action vector -
- -

- -h -

-struct softirq_action* for current pending softirq -
- -

- -vec_nr -

-softirq vector number -
- -

- -action -

-pointer to softirq handler just about to execute -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::softirq.exit.3stap.html b/man/probe::softirq.exit.3stap.html deleted file mode 100644 index eb8547a7..00000000 --- a/man/probe::softirq.exit.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::SOFTIRQ\&.EXI - -

PROBE::SOFTIRQ\&.EXI

-Section: Interrupt Request (IRQ) Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::softirq.exit - Execution of handler for a pending softirq completed -  -

SYNOPSIS

- -

-

-softirq.exit 
-
- -  -

VALUES

- -

- -vec -

-softirq_action vector -
- -

- -h -

-struct softirq_action* for just executed softirq -
- -

- -vec_nr -

-softirq vector number -
- -

- -action -

-pointer to softirq handler that just finished execution -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stap.cache_add_mod.3stap.html b/man/probe::stap.cache_add_mod.3stap.html deleted file mode 100644 index b36640ca..00000000 --- a/man/probe::stap.cache_add_mod.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::STAP\&.CACHE_ - -

PROBE::STAP\&.CACHE_

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stap.cache_add_mod - Adding kernel instrumentation module to cache -  -

SYNOPSIS

- -

-

-stap.cache_add_mod 
-
- -  -

VALUES

- -

- -dest_path -

-the path the .ko file is going to (incl filename) -
- -

- -source_path -

-the path the .ko file is coming from (incl filename) -
- -  -

DESCRIPTION

- -

- -Fires just before the file is actually moved. Note: if moving fails, cache_add_src and cache_add_nss will not fire. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stap.cache_add_nss.3stap.html b/man/probe::stap.cache_add_nss.3stap.html deleted file mode 100644 index f5b6f004..00000000 --- a/man/probe::stap.cache_add_nss.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::STAP\&.CACHE_ - -

PROBE::STAP\&.CACHE_

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stap.cache_add_nss - Add NSS (Network Security Services) information to cache -  -

SYNOPSIS

- -

-

-stap.cache_add_nss 
-
- -  -

VALUES

- -

- -dest_path -

-the path the .sgn file is coming from (incl filename) -
- -

- -source_path -

-the path the .sgn file is coming from (incl filename) -
- -  -

DESCRIPTION

- -

- -Fires just before the file is actually moved. Note: stap must compiled with NSS support; if moving the kernel module fails, this probe will not fire. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stap.cache_add_src.3stap.html b/man/probe::stap.cache_add_src.3stap.html deleted file mode 100644 index 34a29d94..00000000 --- a/man/probe::stap.cache_add_src.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::STAP\&.CACHE_ - -

PROBE::STAP\&.CACHE_

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stap.cache_add_src - Adding C code translation to cache -  -

SYNOPSIS

- -

-

-stap.cache_add_src 
-
- -  -

VALUES

- -

- -dest_path -

-the path the .c file is going to (incl filename) -
- -

- -source_path -

-the path the .c file is coming from (incl filename) -
- -  -

DESCRIPTION

- -

- -Fires just before the file is actually moved. Note: if moving the kernel module fails, this probe will not fire. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stap.cache_clean.3stap.html b/man/probe::stap.cache_clean.3stap.html deleted file mode 100644 index 604c51be..00000000 --- a/man/probe::stap.cache_clean.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::STAP\&.CACHE_ - -

PROBE::STAP\&.CACHE_

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stap.cache_clean - Removing file from stap cache -  -

SYNOPSIS

- -

-

-stap.cache_clean 
-
- -  -

VALUES

- -

- -path -

-the path to the .ko/.c file being removed -
- -  -

DESCRIPTION

- -

- -Fires just before the call to unlink the module/source file. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stap.cache_get.3stap.html b/man/probe::stap.cache_get.3stap.html deleted file mode 100644 index f11b33b8..00000000 --- a/man/probe::stap.cache_get.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::STAP\&.CACHE_ - -

PROBE::STAP\&.CACHE_

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stap.cache_get - Found item in stap cache -  -

SYNOPSIS

- -

-

-stap.cache_get 
-
- -  -

VALUES

- -

- -source_path -

-the path of the .c source file -
- -

- -module_path -

-the path of the .ko kernel module file -
- -  -

DESCRIPTION

- -

- -Fires just before the return of get_from_cache, when the cache grab is successful. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stap.pass0.3stap.html b/man/probe::stap.pass0.3stap.html deleted file mode 100644 index 6836d2aa..00000000 --- a/man/probe::stap.pass0.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::STAP\&.PASS0 - -

PROBE::STAP\&.PASS0

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stap.pass0 - Starting stap pass0 (parsing command line arguments) -  -

SYNOPSIS

- -

-

-stap.pass0 
-
- -  -

VALUES

- -

- -session -

-the systemtap_session variable s -
- -  -

DESCRIPTION

- -

- -pass0 fires after command line arguments have been parsed. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stap.pass0.end.3stap.html b/man/probe::stap.pass0.end.3stap.html deleted file mode 100644 index 3d6e0786..00000000 --- a/man/probe::stap.pass0.end.3stap.html +++ /dev/null @@ -1,5 +0,0 @@ - -Invalid Manpage - -

Invalid Manpage

-The requested file (stdin) is not a valid (unformatted) man page. diff --git a/man/probe::stap.pass1.end.3stap.html b/man/probe::stap.pass1.end.3stap.html deleted file mode 100644 index 3d6e0786..00000000 --- a/man/probe::stap.pass1.end.3stap.html +++ /dev/null @@ -1,5 +0,0 @@ - -Invalid Manpage - -

Invalid Manpage

-The requested file (stdin) is not a valid (unformatted) man page. diff --git a/man/probe::stap.pass1a.3stap.html b/man/probe::stap.pass1a.3stap.html deleted file mode 100644 index c88682b9..00000000 --- a/man/probe::stap.pass1a.3stap.html +++ /dev/null @@ -1,73 +0,0 @@ - -Manpage of PROBE::STAP\&.PASS1A - -

PROBE::STAP\&.PASS1A

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stap.pass1a - Starting stap pass1 (parsing user script) -  -

SYNOPSIS

- -

-

-stap.pass1a 
-
- -  -

VALUES

- -

- -session -

-the systemtap_session variable s -
- -  -

DESCRIPTION

- -

- -pass1a fires just after the call to -gettimeofday, before the user script is parsed. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stap.pass1b.3stap.html b/man/probe::stap.pass1b.3stap.html deleted file mode 100644 index 403d6d32..00000000 --- a/man/probe::stap.pass1b.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::STAP\&.PASS1B - -

PROBE::STAP\&.PASS1B

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stap.pass1b - Starting stap pass1 (parsing library scripts) -  -

SYNOPSIS

- -

-

-stap.pass1b 
-
- -  -

VALUES

- -

- -session -

-the systemtap_session variable s -
- -  -

DESCRIPTION

- -

- -pass1b fires just before the library scripts are parsed. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stap.pass2.3stap.html b/man/probe::stap.pass2.3stap.html deleted file mode 100644 index 5ffb1267..00000000 --- a/man/probe::stap.pass2.3stap.html +++ /dev/null @@ -1,73 +0,0 @@ - -Manpage of PROBE::STAP\&.PASS2 - -

PROBE::STAP\&.PASS2

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stap.pass2 - Starting stap pass2 (elaboration) -  -

SYNOPSIS

- -

-

-stap.pass2 
-
- -  -

VALUES

- -

- -session -

-the systemtap_session variable s -
- -  -

DESCRIPTION

- -

- -pass2 fires just after the call to -gettimeofday, just before the call to semantic_pass. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stap.pass2.end.3stap.html b/man/probe::stap.pass2.end.3stap.html deleted file mode 100644 index 3d6e0786..00000000 --- a/man/probe::stap.pass2.end.3stap.html +++ /dev/null @@ -1,5 +0,0 @@ - -Invalid Manpage - -

Invalid Manpage

-The requested file (stdin) is not a valid (unformatted) man page. diff --git a/man/probe::stap.pass3.3stap.html b/man/probe::stap.pass3.3stap.html deleted file mode 100644 index 1be834cc..00000000 --- a/man/probe::stap.pass3.3stap.html +++ /dev/null @@ -1,73 +0,0 @@ - -Manpage of PROBE::STAP\&.PASS3 - -

PROBE::STAP\&.PASS3

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stap.pass3 - Starting stap pass3 (translation to C) -  -

SYNOPSIS

- -

-

-stap.pass3 
-
- -  -

VALUES

- -

- -session -

-the systemtap_session variable s -
- -  -

DESCRIPTION

- -

- -pass3 fires just after the call to -gettimeofday, just before the call to translate_pass. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stap.pass3.end.3stap.html b/man/probe::stap.pass3.end.3stap.html deleted file mode 100644 index 3d6e0786..00000000 --- a/man/probe::stap.pass3.end.3stap.html +++ /dev/null @@ -1,5 +0,0 @@ - -Invalid Manpage - -

Invalid Manpage

-The requested file (stdin) is not a valid (unformatted) man page. diff --git a/man/probe::stap.pass4.3stap.html b/man/probe::stap.pass4.3stap.html deleted file mode 100644 index d264716c..00000000 --- a/man/probe::stap.pass4.3stap.html +++ /dev/null @@ -1,73 +0,0 @@ - -Manpage of PROBE::STAP\&.PASS4 - -

PROBE::STAP\&.PASS4

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stap.pass4 - Starting stap pass4 (compile C code into kernel module) -  -

SYNOPSIS

- -

-

-stap.pass4 
-
- -  -

VALUES

- -

- -session -

-the systemtap_session variable s -
- -  -

DESCRIPTION

- -

- -pass4 fires just after the call to -gettimeofday, just before the call to compile_pass. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stap.pass4.end.3stap.html b/man/probe::stap.pass4.end.3stap.html deleted file mode 100644 index 3d6e0786..00000000 --- a/man/probe::stap.pass4.end.3stap.html +++ /dev/null @@ -1,5 +0,0 @@ - -Invalid Manpage - -

Invalid Manpage

-The requested file (stdin) is not a valid (unformatted) man page. diff --git a/man/probe::stap.pass5.3stap.html b/man/probe::stap.pass5.3stap.html deleted file mode 100644 index 712f0160..00000000 --- a/man/probe::stap.pass5.3stap.html +++ /dev/null @@ -1,73 +0,0 @@ - -Manpage of PROBE::STAP\&.PASS5 - -

PROBE::STAP\&.PASS5

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stap.pass5 - Starting stap pass5 (running the instrumentation) -  -

SYNOPSIS

- -

-

-stap.pass5 
-
- -  -

VALUES

- -

- -session -

-the systemtap_session variable s -
- -  -

DESCRIPTION

- -

- -pass5 fires just after the call to -gettimeofday, just before the call to run_pass. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stap.pass5.end.3stap.html b/man/probe::stap.pass5.end.3stap.html deleted file mode 100644 index 3d6e0786..00000000 --- a/man/probe::stap.pass5.end.3stap.html +++ /dev/null @@ -1,5 +0,0 @@ - -Invalid Manpage - -

Invalid Manpage

-The requested file (stdin) is not a valid (unformatted) man page. diff --git a/man/probe::stap.pass6.3stap.html b/man/probe::stap.pass6.3stap.html deleted file mode 100644 index 622260b2..00000000 --- a/man/probe::stap.pass6.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::STAP\&.PASS6 - -

PROBE::STAP\&.PASS6

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stap.pass6 - Starting stap pass6 (cleanup) -  -

SYNOPSIS

- -

-

-stap.pass6 
-
- -  -

VALUES

- -

- -session -

-the systemtap_session variable s -
- -  -

DESCRIPTION

- -

- -pass6 fires just after the cleanup label, essentially the same spot as pass5.end -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stap.pass6.end.3stap.html b/man/probe::stap.pass6.end.3stap.html deleted file mode 100644 index 3d6e0786..00000000 --- a/man/probe::stap.pass6.end.3stap.html +++ /dev/null @@ -1,5 +0,0 @@ - -Invalid Manpage - -

Invalid Manpage

-The requested file (stdin) is not a valid (unformatted) man page. diff --git a/man/probe::stap.system.3stap.html b/man/probe::stap.system.3stap.html deleted file mode 100644 index 1f482276..00000000 --- a/man/probe::stap.system.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::STAP\&.SYSTEM - -

PROBE::STAP\&.SYSTEM

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stap.system - Starting a command from stap -  -

SYNOPSIS

- -

-

-stap.system 
-
- -  -

VALUES

- -

- -command -

-the command string to be run by posix_spawn (as sh -c <str>) -
- -  -

DESCRIPTION

- -

- -Fires at the entry of the stap_system command. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stap.system.return.3stap.html b/man/probe::stap.system.return.3stap.html deleted file mode 100644 index f5101de9..00000000 --- a/man/probe::stap.system.return.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::STAP\&.SYSTEM - -

PROBE::STAP\&.SYSTEM

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stap.system.return - Finished a command from stap -  -

SYNOPSIS

- -

-

-stap.system.return 
-
- -  -

VALUES

- -

- -ret -

-a return code associated with running waitpid on the spawned process; a non-zero value indicates error -
- -  -

DESCRIPTION

- -

- -Fires just before the return of the stap_system function, after waitpid. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stap.system.spawn.3stap.html b/man/probe::stap.system.spawn.3stap.html deleted file mode 100644 index d24ac2ef..00000000 --- a/man/probe::stap.system.spawn.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::STAP\&.SYSTEM - -

PROBE::STAP\&.SYSTEM

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stap.system.spawn - stap spawned new process -  -

SYNOPSIS

- -

-

-stap.system.spawn 
-
- -  -

VALUES

- -

- -ret -

-the return value from posix_spawn -
- -

- -pid -

-the pid of the spawned process -
- -  -

DESCRIPTION

- -

- -Fires just after the call to posix_spawn. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::stapio.receive_control_message.3stap.html b/man/probe::stapio.receive_control_message.3stap.html deleted file mode 100644 index d88227fa..00000000 --- a/man/probe::stapio.receive_control_message.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::STAPIO\&.RECE - -

PROBE::STAPIO\&.RECE

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::stapio.receive_control_message - Received a control message -  -

SYNOPSIS

- -

-

-stapio.receive_control_message 
-
- -  -

VALUES

- -

- -len -

-the length (in bytes) of the data blob -
- -

- -data -

-a ptr to a binary blob of data sent as the control message -
- -

- -type -

-type of message being send; defined in runtime/transport/transport_msgs.h -
- -  -

DESCRIPTION

- -

- -Fires just after a message was receieved and before it's processed. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::staprun.insert_module.3stap.html b/man/probe::staprun.insert_module.3stap.html deleted file mode 100644 index dc16eec9..00000000 --- a/man/probe::staprun.insert_module.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::STAPRUN\&.INS - -

PROBE::STAPRUN\&.INS

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::staprun.insert_module - Inserting SystemTap instrumentation module -  -

SYNOPSIS

- -

-

-staprun.insert_module 
-
- -  -

VALUES

- -

- -path -

-the full path to the .ko kernel module about to be inserted -
- -  -

DESCRIPTION

- -

- -Fires just before the call to insert the module. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::staprun.remove_module.3stap.html b/man/probe::staprun.remove_module.3stap.html deleted file mode 100644 index d1d949a6..00000000 --- a/man/probe::staprun.remove_module.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::STAPRUN\&.REM - -

PROBE::STAPRUN\&.REM

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::staprun.remove_module - Removing SystemTap instrumentation module -  -

SYNOPSIS

- -

-

-staprun.remove_module 
-
- -  -

VALUES

- -

- -name -

-the stap module name to be removed (without the .ko extension) -
- -  -

DESCRIPTION

- -

- -Fires just before the call to remove the module. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::staprun.send_control_message.3stap.html b/man/probe::staprun.send_control_message.3stap.html deleted file mode 100644 index 06df1457..00000000 --- a/man/probe::staprun.send_control_message.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::STAPRUN\&.SEN - -

PROBE::STAPRUN\&.SEN

-Section: SystemTap Translator Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::staprun.send_control_message - Sending a control message -  -

SYNOPSIS

- -

-

-staprun.send_control_message 
-
- -  -

VALUES

- -

- -len -

-the length (in bytes) of the data blob -
- -

- -data -

-a ptr to a binary blob of data sent as the control message -
- -

- -type -

-type of message being send; defined in runtime/transport/transport_msgs.h -
- -  -

DESCRIPTION

- -

- -Fires at the beginning of the send_request function. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::sunrpc.clnt.bind_new_program.3stap.html b/man/probe::sunrpc.clnt.bind_new_program.3stap.html deleted file mode 100644 index 3c9f73c6..00000000 --- a/man/probe::sunrpc.clnt.bind_new_program.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::SUNRPC\&.CLNT - -

PROBE::SUNRPC\&.CLNT

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::sunrpc.clnt.bind_new_program - Bind a new RPC program to an existing client -  -

SYNOPSIS

- -

-

-sunrpc.clnt.bind_new_program 
-
- -  -

VALUES

- -

- -prog -

-the number of new RPC program -
- -

- -progname -

-the name of new RPC program -
- -

- -old_vers -

-the version of old RPC program -
- -

- -old_progname -

-the name of old RPC program -
- -

- -vers -

-the version of new RPC program -
- -

- -servername -

-the server machine name -
- -

- -old_prog -

-the number of old RPC program -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::sunrpc.clnt.call_async.3stap.html b/man/probe::sunrpc.clnt.call_async.3stap.html deleted file mode 100644 index d5b5939b..00000000 --- a/man/probe::sunrpc.clnt.call_async.3stap.html +++ /dev/null @@ -1,135 +0,0 @@ - -Manpage of PROBE::SUNRPC\&.CLNT - -

PROBE::SUNRPC\&.CLNT

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::sunrpc.clnt.call_async - Make an asynchronous RPC call -  -

SYNOPSIS

- -

-

-sunrpc.clnt.call_async 
-
- -  -

VALUES

- -

- -prog -

-the RPC program number -
- -

- -progname -

-the RPC program name -
- -

- -procname -

-the procedure name in this RPC call -
- -

- -proc -

-the procedure number in this RPC call -
- -

- -dead -

-whether this client is abandoned -
- -

- -flags -

-flags -
- -

- -vers -

-the RPC program version number -
- -

- -port -

-the port number -
- -

- -prot -

-the IP protocol number -
- -

- -servername -

-the server machine name -
- -

- -xid -

-current transmission id -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::sunrpc.clnt.call_sync.3stap.html b/man/probe::sunrpc.clnt.call_sync.3stap.html deleted file mode 100644 index 69532005..00000000 --- a/man/probe::sunrpc.clnt.call_sync.3stap.html +++ /dev/null @@ -1,135 +0,0 @@ - -Manpage of PROBE::SUNRPC\&.CLNT - -

PROBE::SUNRPC\&.CLNT

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::sunrpc.clnt.call_sync - Make a synchronous RPC call -  -

SYNOPSIS

- -

-

-sunrpc.clnt.call_sync 
-
- -  -

VALUES

- -

- -prog -

-the RPC program number -
- -

- -progname -

-the RPC program name -
- -

- -procname -

-the procedure name in this RPC call -
- -

- -proc -

-the procedure number in this RPC call -
- -

- -dead -

-whether this client is abandoned -
- -

- -flags -

-flags -
- -

- -vers -

-the RPC program version number -
- -

- -port -

-the port number -
- -

- -prot -

-the IP protocol number -
- -

- -servername -

-the server machine name -
- -

- -xid -

-current transmission id -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::sunrpc.clnt.clone_client.3stap.html b/man/probe::sunrpc.clnt.clone_client.3stap.html deleted file mode 100644 index afb94d7c..00000000 --- a/man/probe::sunrpc.clnt.clone_client.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::SUNRPC\&.CLNT - -

PROBE::SUNRPC\&.CLNT

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::sunrpc.clnt.clone_client - Clone an RPC client structure -  -

SYNOPSIS

- -

-

-sunrpc.clnt.clone_client 
-
- -  -

VALUES

- -

- -servername -

-the server machine name -
- -

- -vers -

-the RPC program version number -
- -

- -prog -

-the RPC program number -
- -

- -authflavor -

-the authentication flavor -
- -

- -progname -

-the RPC program name -
- -

- -port -

-the port number -
- -

- -prot -

-the IP protocol number -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::sunrpc.clnt.create_client.3stap.html b/man/probe::sunrpc.clnt.create_client.3stap.html deleted file mode 100644 index f453c68d..00000000 --- a/man/probe::sunrpc.clnt.create_client.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::SUNRPC\&.CLNT - -

PROBE::SUNRPC\&.CLNT

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::sunrpc.clnt.create_client - Create an RPC client -  -

SYNOPSIS

- -

-

-sunrpc.clnt.create_client 
-
- -  -

VALUES

- -

- -servername -

-the server machine name -
- -

- -vers -

-the RPC program version number -
- -

- -prog -

-the RPC program number -
- -

- -authflavor -

-the authentication flavor -
- -

- -progname -

-the RPC program name -
- -

- -port -

-the port number -
- -

- -prot -

-the IP protocol number -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::sunrpc.clnt.restart_call.3stap.html b/man/probe::sunrpc.clnt.restart_call.3stap.html deleted file mode 100644 index f6f49343..00000000 --- a/man/probe::sunrpc.clnt.restart_call.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::SUNRPC\&.CLNT - -

PROBE::SUNRPC\&.CLNT

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::sunrpc.clnt.restart_call - Restart an asynchronous RPC call -  -

SYNOPSIS

- -

-

-sunrpc.clnt.restart_call 
-
- -  -

VALUES

- -

- -tk_priority -

-the task priority -
- -

- -prog -

-the RPC program number -
- -

- -tk_pid -

-the debugging aid of task -
- -

- -tk_flags -

-the task flags -
- -

- -servername -

-the server machine name -
- -

- -tk_runstate -

-the task run status -
- -

- -xid -

-the transmission id -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::sunrpc.clnt.shutdown_client.3stap.html b/man/probe::sunrpc.clnt.shutdown_client.3stap.html deleted file mode 100644 index 5b29a44c..00000000 --- a/man/probe::sunrpc.clnt.shutdown_client.3stap.html +++ /dev/null @@ -1,184 +0,0 @@ - -Manpage of PROBE::SUNRPC\&.CLNT - -

PROBE::SUNRPC\&.CLNT

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::sunrpc.clnt.shutdown_client - Shutdown an RPC client -  -

SYNOPSIS

- -

-

-sunrpc.clnt.shutdown_client 
-
- -  -

VALUES

- -

- -om_ops -

-the count of operations -
- -

- -om_bytes_sent -

-the count of bytes out -
- -

- -prog -

-the RPC program number -
- -

- -authflavor -

-the authentication flavor -
- -

- -progname -

-the RPC program name -
- -

- -om_queue -

-the jiffies queued for xmit -
- -

- -om_rtt -

-the RPC RTT jiffies -
- -

- -om_bytes_recv -

-the count of bytes in -
- -

- -tasks -

-the number of references -
- -

- -netreconn -

-the count of reconnections -
- -

- -vers -

-the RPC program version number -
- -

- -om_execute -

-the RPC execution jiffies -
- -

- -prot -

-the IP protocol number -
- -

- -port -

-the port number -
- -

- -clones -

-the number of clones -
- -

- -servername -

-the server machine name -
- -

- -rpccnt -

-the count of RPC calls -
- -

- -om_ntrans -

-the count of RPC transmissions -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::sunrpc.sched.delay.3stap.html b/man/probe::sunrpc.sched.delay.3stap.html deleted file mode 100644 index 8e0e3a88..00000000 --- a/man/probe::sunrpc.sched.delay.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::SUNRPC\&.SCHE - -

PROBE::SUNRPC\&.SCHE

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::sunrpc.sched.delay - Delay an RPC task -  -

SYNOPSIS

- -

-

-sunrpc.sched.delay 
-
- -  -

VALUES

- -

- -prog -

-the program number in the RPC call -
- -

- -delay -

-the time delayed -
- -

- -tk_pid -

-the debugging id of the task -
- -

- -tk_flags -

-the flags of the task -
- -

- -vers -

-the program version in the RPC call -
- -

- -prot -

-the IP protocol in the RPC call -
- -

- -xid -

-the transmission id in the RPC call -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::sunrpc.sched.execute.3stap.html b/man/probe::sunrpc.sched.execute.3stap.html deleted file mode 100644 index 7e3d4cb8..00000000 --- a/man/probe::sunrpc.sched.execute.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::SUNRPC\&.SCHE - -

PROBE::SUNRPC\&.SCHE

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::sunrpc.sched.execute - Execute the RPC `scheduler' -  -

SYNOPSIS

- -

-

-sunrpc.sched.execute 
-
- -  -

VALUES

- -

- -prog -

-the program number in the RPC call -
- -

- -tk_pid -

-the debugging id of the task -
- -

- -tk_flags -

-the flags of the task -
- -

- -vers -

-the program version in the RPC call -
- -

- -prot -

-the IP protocol in the RPC call -
- -

- -xid -

-the transmission id in the RPC call -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::sunrpc.sched.new_task.3stap.html b/man/probe::sunrpc.sched.new_task.3stap.html deleted file mode 100644 index bb171f8c..00000000 --- a/man/probe::sunrpc.sched.new_task.3stap.html +++ /dev/null @@ -1,93 +0,0 @@ - -Manpage of PROBE::SUNRPC\&.SCHE - -

PROBE::SUNRPC\&.SCHE

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::sunrpc.sched.new_task - Create new task for the specified client -  -

SYNOPSIS

- -

-

-sunrpc.sched.new_task 
-
- -  -

VALUES

- -

- -prog -

-the program number in the RPC call -
- -

- -tk_flags -

-the flags of the task -
- -

- -vers -

-the program version in the RPC call -
- -

- -prot -

-the IP protocol in the RPC call -
- -

- -xid -

-the transmission id in the RPC call -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::sunrpc.sched.release_task.3stap.html b/man/probe::sunrpc.sched.release_task.3stap.html deleted file mode 100644 index 8cfb9e39..00000000 --- a/man/probe::sunrpc.sched.release_task.3stap.html +++ /dev/null @@ -1,101 +0,0 @@ - -Manpage of PROBE::SUNRPC\&.SCHE - -

PROBE::SUNRPC\&.SCHE

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::sunrpc.sched.release_task - Release all resources associated with a task -  -

SYNOPSIS

- -

-

-sunrpc.sched.release_task 
-
- -  -

VALUES

- -

- -prog -

-the program number in the RPC call -
- -

- -tk_flags -

-the flags of the task -
- -

- -vers -

-the program version in the RPC call -
- -

- -prot -

-the IP protocol in the RPC call -
- -

- -xid -

-the transmission id in the RPC call -
- -  -

DESCRIPTION

- -

- -rpc_release_task -function might not be found for a particular kernel. So, if we can't find it, just return '-1' for everything. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::sunrpc.svc.create.3stap.html b/man/probe::sunrpc.svc.create.3stap.html deleted file mode 100644 index 3d6e0786..00000000 --- a/man/probe::sunrpc.svc.create.3stap.html +++ /dev/null @@ -1,5 +0,0 @@ - -Invalid Manpage - -

Invalid Manpage

-The requested file (stdin) is not a valid (unformatted) man page. diff --git a/man/probe::sunrpc.svc.destroy.3stap.html b/man/probe::sunrpc.svc.destroy.3stap.html deleted file mode 100644 index 3d6e0786..00000000 --- a/man/probe::sunrpc.svc.destroy.3stap.html +++ /dev/null @@ -1,5 +0,0 @@ - -Invalid Manpage - -

Invalid Manpage

-The requested file (stdin) is not a valid (unformatted) man page. diff --git a/man/probe::sunrpc.svc.drop.3stap.html b/man/probe::sunrpc.svc.drop.3stap.html deleted file mode 100644 index 3d6e0786..00000000 --- a/man/probe::sunrpc.svc.drop.3stap.html +++ /dev/null @@ -1,5 +0,0 @@ - -Invalid Manpage - -

Invalid Manpage

-The requested file (stdin) is not a valid (unformatted) man page. diff --git a/man/probe::sunrpc.svc.process.3stap.html b/man/probe::sunrpc.svc.process.3stap.html deleted file mode 100644 index 3d6e0786..00000000 --- a/man/probe::sunrpc.svc.process.3stap.html +++ /dev/null @@ -1,5 +0,0 @@ - -Invalid Manpage - -

Invalid Manpage

-The requested file (stdin) is not a valid (unformatted) man page. diff --git a/man/probe::sunrpc.svc.recv.3stap.html b/man/probe::sunrpc.svc.recv.3stap.html deleted file mode 100644 index 3d6e0786..00000000 --- a/man/probe::sunrpc.svc.recv.3stap.html +++ /dev/null @@ -1,5 +0,0 @@ - -Invalid Manpage - -

Invalid Manpage

-The requested file (stdin) is not a valid (unformatted) man page. diff --git a/man/probe::sunrpc.svc.register.3stap.html b/man/probe::sunrpc.svc.register.3stap.html deleted file mode 100644 index 3d6e0786..00000000 --- a/man/probe::sunrpc.svc.register.3stap.html +++ /dev/null @@ -1,5 +0,0 @@ - -Invalid Manpage - -

Invalid Manpage

-The requested file (stdin) is not a valid (unformatted) man page. diff --git a/man/probe::sunrpc.svc.send.3stap.html b/man/probe::sunrpc.svc.send.3stap.html deleted file mode 100644 index 3d6e0786..00000000 --- a/man/probe::sunrpc.svc.send.3stap.html +++ /dev/null @@ -1,5 +0,0 @@ - -Invalid Manpage - -

Invalid Manpage

-The requested file (stdin) is not a valid (unformatted) man page. diff --git a/man/probe::tcp.disconnect.3stap.html b/man/probe::tcp.disconnect.3stap.html deleted file mode 100644 index 52563f8d..00000000 --- a/man/probe::tcp.disconnect.3stap.html +++ /dev/null @@ -1,121 +0,0 @@ - -Manpage of PROBE::TCP\&.DISCONN - -

PROBE::TCP\&.DISCONN

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcp.disconnect - TCP socket disconnection -  -

SYNOPSIS

- -

-

-tcp.disconnect 
-
- -  -

VALUES

- -

- -flags -

-TCP flags (e.g. FIN, etc) -
- -

- -name -

-Name of this probe -
- -

- -dport -

-TCP destination port -
- -

- -saddr -

-A string representing the source IP address -
- -

- -daddr -

-A string representing the destination IP address -
- -

- -sport -

-TCP source port -
- -

- -family -

-IP address family -
- -

- -sock -

-Network socket -
- -  -

CONTEXT

- -

- -The process which disconnects tcp -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcp.disconnect.return.3stap.html b/man/probe::tcp.disconnect.return.3stap.html deleted file mode 100644 index 8302c50d..00000000 --- a/man/probe::tcp.disconnect.return.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::TCP\&.DISCONN - -

PROBE::TCP\&.DISCONN

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcp.disconnect.return - TCP socket disconnection complete -  -

SYNOPSIS

- -

-

-tcp.disconnect.return 
-
- -  -

VALUES

- -

- -ret -

-Error code (0: no error) -
- -

- -name -

-Name of this probe -
- -  -

CONTEXT

- -

- -The process which disconnects tcp -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcp.receive.3stap.html b/man/probe::tcp.receive.3stap.html deleted file mode 100644 index 7f041369..00000000 --- a/man/probe::tcp.receive.3stap.html +++ /dev/null @@ -1,156 +0,0 @@ - -Manpage of PROBE::TCP\&.RECEIVE - -

PROBE::TCP\&.RECEIVE

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcp.receive - Called when a TCP packet is received -  -

SYNOPSIS

- -

-

-tcp.receive 
-
- -  -

VALUES

- -

- -urg -

-TCP URG flag -
- -

- -protocol -

-Packet protocol from driver -
- -

- -psh -

-TCP PSH flag -
- -

- -name -

-Name of the probe point -
- -

- -rst -

-TCP RST flag -
- -

- -dport -

-TCP destination port -
- -

- -saddr -

-A string representing the source IP address -
- -

- -daddr -

-A string representing the destination IP address -
- -

- -ack -

-TCP ACK flag -
- -

- -fin -

-TCP FIN flag -
- -

- -syn -

-TCP SYN flag -
- -

- -sport -

-TCP source port -
- -

- -family -

-IP address family -
- -

- -iphdr -

-IP header address -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcp.recvmsg.3stap.html b/man/probe::tcp.recvmsg.3stap.html deleted file mode 100644 index b27d449b..00000000 --- a/man/probe::tcp.recvmsg.3stap.html +++ /dev/null @@ -1,121 +0,0 @@ - -Manpage of PROBE::TCP\&.RECVMSG - -

PROBE::TCP\&.RECVMSG

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcp.recvmsg - Receiving TCP message -  -

SYNOPSIS

- -

-

-tcp.recvmsg 
-
- -  -

VALUES

- -

- -name -

-Name of this probe -
- -

- -dport -

-TCP destination port -
- -

- -size -

-Number of bytes to be received -
- -

- -saddr -

-A string representing the source IP address -
- -

- -daddr -

-A string representing the destination IP address -
- -

- -sport -

-TCP source port -
- -

- -sock -

-Network socket -
- -

- -family -

-IP address family -
- -  -

CONTEXT

- -

- -The process which receives a tcp message -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcp.recvmsg.return.3stap.html b/man/probe::tcp.recvmsg.return.3stap.html deleted file mode 100644 index e1d82d7a..00000000 --- a/man/probe::tcp.recvmsg.return.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::TCP\&.RECVMSG - -

PROBE::TCP\&.RECVMSG

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcp.recvmsg.return - Receiving TCP message complete -  -

SYNOPSIS

- -

-

-tcp.recvmsg.return 
-
- -  -

VALUES

- -

- -name -

-Name of this probe -
- -

- -dport -

-TCP destination port -
- -

- -size -

-Number of bytes received or error code if an error occurred. -
- -

- -saddr -

-A string representing the source IP address -
- -

- -daddr -

-A string representing the destination IP address -
- -

- -sport -

-TCP source port -
- -

- -family -

-IP address family -
- -  -

CONTEXT

- -

- -The process which receives a tcp message -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcp.sendmsg.3stap.html b/man/probe::tcp.sendmsg.3stap.html deleted file mode 100644 index aca0c0f0..00000000 --- a/man/probe::tcp.sendmsg.3stap.html +++ /dev/null @@ -1,93 +0,0 @@ - -Manpage of PROBE::TCP\&.SENDMSG - -

PROBE::TCP\&.SENDMSG

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcp.sendmsg - Sending a tcp message -  -

SYNOPSIS

- -

-

-tcp.sendmsg 
-
- -  -

VALUES

- -

- -name -

-Name of this probe -
- -

- -size -

-Number of bytes to send -
- -

- -family -

-IP address family -
- -

- -sock -

-Network socket -
- -  -

CONTEXT

- -

- -The process which sends a tcp message -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcp.sendmsg.return.3stap.html b/man/probe::tcp.sendmsg.return.3stap.html deleted file mode 100644 index ef5b1a1d..00000000 --- a/man/probe::tcp.sendmsg.return.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::TCP\&.SENDMSG - -

PROBE::TCP\&.SENDMSG

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcp.sendmsg.return - Sending TCP message is done -  -

SYNOPSIS

- -

-

-tcp.sendmsg.return 
-
- -  -

VALUES

- -

- -name -

-Name of this probe -
- -

- -size -

-Number of bytes sent or error code if an error occurred. -
- -  -

CONTEXT

- -

- -The process which sends a tcp message -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcp.setsockopt.3stap.html b/man/probe::tcp.setsockopt.3stap.html deleted file mode 100644 index a2e79bff..00000000 --- a/man/probe::tcp.setsockopt.3stap.html +++ /dev/null @@ -1,115 +0,0 @@ - -Manpage of PROBE::TCP\&.SETSOCK - -

PROBE::TCP\&.SETSOCK

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcp.setsockopt - Call to setsockopt -  -

SYNOPSIS

- -

-

-tcp.setsockopt 
-
- -  -

VALUES

- -

- -optlen -

-Used to access values for -setsockopt -
- -

- -name -

-Name of this probe -
- -

- -optname -

-TCP socket options (e.g. TCP_NODELAY, TCP_MAXSEG, etc) -
- -

- -optstr -

-Resolves optname to a human-readable format -
- -

- -level -

-The level at which the socket options will be manipulated -
- -

- -family -

-IP address family -
- -

- -sock -

-Network socket -
- -  -

CONTEXT

- -

- -The process which calls setsockopt -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcp.setsockopt.return.3stap.html b/man/probe::tcp.setsockopt.return.3stap.html deleted file mode 100644 index 29a8f86c..00000000 --- a/man/probe::tcp.setsockopt.return.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::TCP\&.SETSOCK - -

PROBE::TCP\&.SETSOCK

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcp.setsockopt.return - Return from setsockopt -  -

SYNOPSIS

- -

-

-tcp.setsockopt.return 
-
- -  -

VALUES

- -

- -ret -

-Error code (0: no error) -
- -

- -name -

-Name of this probe -
- -  -

CONTEXT

- -

- -The process which calls setsockopt -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcpmib.ActiveOpens.3stap.html b/man/probe::tcpmib.ActiveOpens.3stap.html deleted file mode 100644 index e7a9ad3d..00000000 --- a/man/probe::tcpmib.ActiveOpens.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::TCPMIB\&.ACTI - -

PROBE::TCPMIB\&.ACTI

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcpmib.ActiveOpens - Count an active opening of a socket -  -

SYNOPSIS

- -

-

-tcpmib.ActiveOpens 
-
- -  -

VALUES

- -

- -sk -

-pointer to the struct sock being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -tcpmib_filter_key. If the packet passes the filter is is counted in the global -ActiveOpens -(equivalent to SNMP's MIB TCP_MIB_ACTIVEOPENS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcpmib.AttemptFails.3stap.html b/man/probe::tcpmib.AttemptFails.3stap.html deleted file mode 100644 index 0bad96b0..00000000 --- a/man/probe::tcpmib.AttemptFails.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::TCPMIB\&.ATTE - -

PROBE::TCPMIB\&.ATTE

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcpmib.AttemptFails - Count a failed attempt to open a socket -  -

SYNOPSIS

- -

-

-tcpmib.AttemptFails 
-
- -  -

VALUES

- -

- -sk -

-pointer to the struct sock being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -tcpmib_filter_key. If the packet passes the filter is is counted in the global -AttemptFails -(equivalent to SNMP's MIB TCP_MIB_ATTEMPTFAILS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcpmib.CurrEstab.3stap.html b/man/probe::tcpmib.CurrEstab.3stap.html deleted file mode 100644 index f784130e..00000000 --- a/man/probe::tcpmib.CurrEstab.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::TCPMIB\&.CURR - -

PROBE::TCPMIB\&.CURR

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcpmib.CurrEstab - Update the count of open sockets -  -

SYNOPSIS

- -

-

-tcpmib.CurrEstab 
-
- -  -

VALUES

- -

- -sk -

-pointer to the struct sock being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -tcpmib_filter_key. If the packet passes the filter is is counted in the global -CurrEstab -(equivalent to SNMP's MIB TCP_MIB_CURRESTAB) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcpmib.EstabResets.3stap.html b/man/probe::tcpmib.EstabResets.3stap.html deleted file mode 100644 index 4c91456c..00000000 --- a/man/probe::tcpmib.EstabResets.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::TCPMIB\&.ESTA - -

PROBE::TCPMIB\&.ESTA

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcpmib.EstabResets - Count the reset of a socket -  -

SYNOPSIS

- -

-

-tcpmib.EstabResets 
-
- -  -

VALUES

- -

- -sk -

-pointer to the struct sock being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -tcpmib_filter_key. If the packet passes the filter is is counted in the global -EstabResets -(equivalent to SNMP's MIB TCP_MIB_ESTABRESETS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcpmib.InSegs.3stap.html b/man/probe::tcpmib.InSegs.3stap.html deleted file mode 100644 index 2e289440..00000000 --- a/man/probe::tcpmib.InSegs.3stap.html +++ /dev/null @@ -1,87 +0,0 @@ - -Manpage of PROBE::TCPMIB\&.INSE - -

PROBE::TCPMIB\&.INSE

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcpmib.InSegs - Count an incoming tcp segment -  -

SYNOPSIS

- -

-

-tcpmib.InSegs 
-
- -  -

VALUES

- -

- -sk -

-pointer to the struct sock being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -tcpmib_filter_key -(or -ipmib_filter_key -for tcp v4). If the packet passes the filter is is counted in the global -InSegs -(equivalent to SNMP's MIB TCP_MIB_INSEGS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcpmib.OutRsts.3stap.html b/man/probe::tcpmib.OutRsts.3stap.html deleted file mode 100644 index f0a4a0b9..00000000 --- a/man/probe::tcpmib.OutRsts.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::TCPMIB\&.OUTR - -

PROBE::TCPMIB\&.OUTR

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcpmib.OutRsts - Count the sending of a reset packet -  -

SYNOPSIS

- -

-

-tcpmib.OutRsts 
-
- -  -

VALUES

- -

- -sk -

-pointer to the struct sock being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -tcpmib_filter_key. If the packet passes the filter is is counted in the global -OutRsts -(equivalent to SNMP's MIB TCP_MIB_OUTRSTS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcpmib.OutSegs.3stap.html b/man/probe::tcpmib.OutSegs.3stap.html deleted file mode 100644 index 35523c56..00000000 --- a/man/probe::tcpmib.OutSegs.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::TCPMIB\&.OUTS - -

PROBE::TCPMIB\&.OUTS

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcpmib.OutSegs - Count the sending of a TCP segment -  -

SYNOPSIS

- -

-

-tcpmib.OutSegs 
-
- -  -

VALUES

- -

- -sk -

-pointer to the struct sock being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -tcpmib_filter_key. If the packet passes the filter is is counted in the global -OutSegs -(equivalent to SNMP's MIB TCP_MIB_OUTSEGS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcpmib.PassiveOpens.3stap.html b/man/probe::tcpmib.PassiveOpens.3stap.html deleted file mode 100644 index 35eb7924..00000000 --- a/man/probe::tcpmib.PassiveOpens.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::TCPMIB\&.PASS - -

PROBE::TCPMIB\&.PASS

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcpmib.PassiveOpens - Count the passive creation of a socket -  -

SYNOPSIS

- -

-

-tcpmib.PassiveOpens 
-
- -  -

VALUES

- -

- -sk -

-pointer to the struct sock being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -tcpmib_filter_key. If the packet passes the filter is is counted in the global -PassiveOpens -(equivalent to SNMP's MIB TCP_MIB_PASSIVEOPENS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tcpmib.RetransSegs.3stap.html b/man/probe::tcpmib.RetransSegs.3stap.html deleted file mode 100644 index 755b5686..00000000 --- a/man/probe::tcpmib.RetransSegs.3stap.html +++ /dev/null @@ -1,84 +0,0 @@ - -Manpage of PROBE::TCPMIB\&.RETR - -

PROBE::TCPMIB\&.RETR

-Section: SNMP Information Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tcpmib.RetransSegs - Count the retransmission of a TCP segment -  -

SYNOPSIS

- -

-

-tcpmib.RetransSegs 
-
- -  -

VALUES

- -

- -sk -

-pointer to the struct sock being acted on -
- -

- -op -

-value to be added to the counter (default value of 1) -
- -  -

DESCRIPTION

- -

- -The packet pointed to by -skb -is filtered by the function -tcpmib_filter_key. If the packet passes the filter is is counted in the global -RetransSegs -(equivalent to SNMP's MIB TCP_MIB_RETRANSSEGS) -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tty.init.3stap.html b/man/probe::tty.init.3stap.html deleted file mode 100644 index 8620d537..00000000 --- a/man/probe::tty.init.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::TTY\&.INIT - -

PROBE::TTY\&.INIT

-Section: TTY Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tty.init - Called when a tty is being initalized -  -

SYNOPSIS

- -

-

-tty.init 
-
- -  -

VALUES

- -

- -driver_name -

-the driver name -
- -

- -name -

-the driver .dev_name name -
- -

- -module -

-the module name -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tty.ioctl.3stap.html b/man/probe::tty.ioctl.3stap.html deleted file mode 100644 index 5a475c1e..00000000 --- a/man/probe::tty.ioctl.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::TTY\&.IOCTL - -

PROBE::TTY\&.IOCTL

-Section: TTY Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tty.ioctl - called when a ioctl is request to the tty -  -

SYNOPSIS

- -

-

-tty.ioctl 
-
- -  -

VALUES

- -

- -cmd -

-the ioctl command -
- -

- -arg -

-the ioctl argument -
- -

- -name -

-the file name -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tty.open.3stap.html b/man/probe::tty.open.3stap.html deleted file mode 100644 index 388a98cb..00000000 --- a/man/probe::tty.open.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::TTY\&.OPEN - -

PROBE::TTY\&.OPEN

-Section: TTY Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tty.open - Called when a tty is opened -  -

SYNOPSIS

- -

-

-tty.open 
-
- -  -

VALUES

- -

- -inode_state -

-the inode state -
- -

- -file_name -

-the file name -
- -

- -file_mode -

-the file mode -
- -

- -file_flags -

-the file flags -
- -

- -inode_number -

-the inode number -
- -

- -inode_flags -

-the inode flags -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tty.poll.3stap.html b/man/probe::tty.poll.3stap.html deleted file mode 100644 index a3537aa1..00000000 --- a/man/probe::tty.poll.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::TTY\&.POLL - -

PROBE::TTY\&.POLL

-Section: TTY Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tty.poll - Called when a tty device is being polled -  -

SYNOPSIS

- -

-

-tty.poll 
-
- -  -

VALUES

- -

- -file_name -

-the tty file name -
- -

- -wait_key -

-the wait queue key -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tty.read.3stap.html b/man/probe::tty.read.3stap.html deleted file mode 100644 index 6e867aba..00000000 --- a/man/probe::tty.read.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::TTY\&.READ - -

PROBE::TTY\&.READ

-Section: TTY Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tty.read - called when a tty line will be read -  -

SYNOPSIS

- -

-

-tty.read 
-
- -  -

VALUES

- -

- -driver_name -

-the driver name -
- -

- -buffer -

-the buffer that will receive the characters -
- -

- -file_name -

-the file name lreated to the tty -
- -

- -nr -

-The amount of characters to be read -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tty.receive.3stap.html b/man/probe::tty.receive.3stap.html deleted file mode 100644 index fe969637..00000000 --- a/man/probe::tty.receive.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of PROBE::TTY\&.RECEIVE - -

PROBE::TTY\&.RECEIVE

-Section: TTY Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tty.receive - called when a tty receives a message -  -

SYNOPSIS

- -

-

-tty.receive 
-
- -  -

VALUES

- -

- -driver_name -

-the driver name -
- -

- -count -

-The amount of characters received -
- -

- -name -

-the name of the module file -
- -

- -fp -

-The flag buffer -
- -

- -cp -

-the buffer that was received -
- -

- -index -

-The tty Index -
- -

- -id -

-the tty id -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tty.register.3stap.html b/man/probe::tty.register.3stap.html deleted file mode 100644 index 10739883..00000000 --- a/man/probe::tty.register.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::TTY\&.REGISTE - -

PROBE::TTY\&.REGISTE

-Section: TTY Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tty.register - Called when a tty device is registred -  -

SYNOPSIS

- -

-

-tty.register 
-
- -  -

VALUES

- -

- -driver_name -

-the driver name -
- -

- -name -

-the driver .dev_name name -
- -

- -index -

-the tty index requested -
- -

- -module -

-the module name -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tty.release.3stap.html b/man/probe::tty.release.3stap.html deleted file mode 100644 index 0e2e97bf..00000000 --- a/man/probe::tty.release.3stap.html +++ /dev/null @@ -1,100 +0,0 @@ - -Manpage of PROBE::TTY\&.RELEASE - -

PROBE::TTY\&.RELEASE

-Section: TTY Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tty.release - Called when the tty is closed -  -

SYNOPSIS

- -

-

-tty.release 
-
- -  -

VALUES

- -

- -inode_state -

-the inode state -
- -

- -file_name -

-the file name -
- -

- -file_mode -

-the file mode -
- -

- -file_flags -

-the file flags -
- -

- -inode_number -

-the inode number -
- -

- -inode_flags -

-the inode flags -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tty.resize.3stap.html b/man/probe::tty.resize.3stap.html deleted file mode 100644 index bb52b392..00000000 --- a/man/probe::tty.resize.3stap.html +++ /dev/null @@ -1,121 +0,0 @@ - -Manpage of PROBE::TTY\&.RESIZE - -

PROBE::TTY\&.RESIZE

-Section: TTY Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tty.resize - Called when a terminal resize happens -  -

SYNOPSIS

- -

-

-tty.resize 
-
- -  -

VALUES

- -

- -new_ypixel -

-the new ypixel value -
- -

- -old_col -

-the old col value -
- -

- -old_xpixel -

-the old xpixel -
- -

- -old_ypixel -

-the old ypixel -
- -

- -name -

-the tty name -
- -

- -old_row -

-the old row value -
- -

- -new_xpixel -

-the new xpixel value -
- -

- -new_row -

-the new row value -
- -

- -new_col -

-the new col value -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tty.unregister.3stap.html b/man/probe::tty.unregister.3stap.html deleted file mode 100644 index b3e4de14..00000000 --- a/man/probe::tty.unregister.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::TTY\&.UNREGIS - -

PROBE::TTY\&.UNREGIS

-Section: TTY Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tty.unregister - Called when a tty device is being unregistered -  -

SYNOPSIS

- -

-

-tty.unregister 
-
- -  -

VALUES

- -

- -driver_name -

-the driver name -
- -

- -name -

-the driver .dev_name name -
- -

- -index -

-the tty index requested -
- -

- -module -

-the module name -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::tty.write.3stap.html b/man/probe::tty.write.3stap.html deleted file mode 100644 index 42dc313c..00000000 --- a/man/probe::tty.write.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::TTY\&.WRITE - -

PROBE::TTY\&.WRITE

-Section: TTY Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::tty.write - write to the tty line -  -

SYNOPSIS

- -

-

-tty.write 
-
- -  -

VALUES

- -

- -driver_name -

-the driver name -
- -

- -buffer -

-the buffer that will be written -
- -

- -file_name -

-the file name lreated to the tty -
- -

- -nr -

-The amount of characters -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::udp.disconnect.3stap.html b/man/probe::udp.disconnect.3stap.html deleted file mode 100644 index 46feba5b..00000000 --- a/man/probe::udp.disconnect.3stap.html +++ /dev/null @@ -1,121 +0,0 @@ - -Manpage of PROBE::UDP\&.DISCONN - -

PROBE::UDP\&.DISCONN

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::udp.disconnect - Fires when a process requests for a UDP disconnection -  -

SYNOPSIS

- -

-

-udp.disconnect 
-
- -  -

VALUES

- -

- -flags -

-Flags (e.g. FIN, etc) -
- -

- -name -

-The name of this probe -
- -

- -dport -

-UDP destination port -
- -

- -saddr -

-A string representing the source IP address -
- -

- -daddr -

-A string representing the destination IP address -
- -

- -sport -

-UDP source port -
- -

- -family -

-IP address family -
- -

- -sock -

-Network socket used by the process -
- -  -

CONTEXT

- -

- -The process which requests a UDP disconnection -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::udp.disconnect.return.3stap.html b/man/probe::udp.disconnect.return.3stap.html deleted file mode 100644 index df6b3b81..00000000 --- a/man/probe::udp.disconnect.return.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::UDP\&.DISCONN - -

PROBE::UDP\&.DISCONN

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::udp.disconnect.return - UDP has been disconnected successfully -  -

SYNOPSIS

- -

-

-udp.disconnect.return 
-
- -  -

VALUES

- -

- -ret -

-Error code (0: no error) -
- -

- -name -

-The name of this probe -
- -

- -dport -

-UDP destination port -
- -

- -saddr -

-A string representing the source IP address -
- -

- -daddr -

-A string representing the destination IP address -
- -

- -sport -

-UDP source port -
- -

- -family -

-IP address family -
- -  -

CONTEXT

- -

- -The process which requested a UDP disconnection -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::udp.recvmsg.3stap.html b/man/probe::udp.recvmsg.3stap.html deleted file mode 100644 index 0235dd6f..00000000 --- a/man/probe::udp.recvmsg.3stap.html +++ /dev/null @@ -1,121 +0,0 @@ - -Manpage of PROBE::UDP\&.RECVMSG - -

PROBE::UDP\&.RECVMSG

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::udp.recvmsg - Fires whenever a UDP message is received -  -

SYNOPSIS

- -

-

-udp.recvmsg 
-
- -  -

VALUES

- -

- -name -

-The name of this probe -
- -

- -dport -

-UDP destination port -
- -

- -size -

-Number of bytes received by the process -
- -

- -saddr -

-A string representing the source IP address -
- -

- -daddr -

-A string representing the destination IP address -
- -

- -sport -

-UDP source port -
- -

- -family -

-IP address family -
- -

- -sock -

-Network socket used by the process -
- -  -

CONTEXT

- -

- -The process which received a UDP message -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::udp.recvmsg.return.3stap.html b/man/probe::udp.recvmsg.return.3stap.html deleted file mode 100644 index fdef52a7..00000000 --- a/man/probe::udp.recvmsg.return.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::UDP\&.RECVMSG - -

PROBE::UDP\&.RECVMSG

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::udp.recvmsg.return - Fires whenever an attempt to receive a UDP message received is completed -  -

SYNOPSIS

- -

-

-udp.recvmsg.return 
-
- -  -

VALUES

- -

- -name -

-The name of this probe -
- -

- -dport -

-UDP destination port -
- -

- -size -

-Number of bytes received by the process -
- -

- -saddr -

-A string representing the source IP address -
- -

- -daddr -

-A string representing the destination IP address -
- -

- -sport -

-UDP source port -
- -

- -family -

-IP address family -
- -  -

CONTEXT

- -

- -The process which received a UDP message -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::udp.sendmsg.3stap.html b/man/probe::udp.sendmsg.3stap.html deleted file mode 100644 index e372ee82..00000000 --- a/man/probe::udp.sendmsg.3stap.html +++ /dev/null @@ -1,121 +0,0 @@ - -Manpage of PROBE::UDP\&.SENDMSG - -

PROBE::UDP\&.SENDMSG

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::udp.sendmsg - Fires whenever a process sends a UDP message -  -

SYNOPSIS

- -

-

-udp.sendmsg 
-
- -  -

VALUES

- -

- -name -

-The name of this probe -
- -

- -dport -

-UDP destination port -
- -

- -size -

-Number of bytes sent by the process -
- -

- -saddr -

-A string representing the source IP address -
- -

- -daddr -

-A string representing the destination IP address -
- -

- -sport -

-UDP source port -
- -

- -sock -

-Network socket used by the process -
- -

- -family -

-IP address family -
- -  -

CONTEXT

- -

- -The process which sent a UDP message -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::udp.sendmsg.return.3stap.html b/man/probe::udp.sendmsg.return.3stap.html deleted file mode 100644 index d601e0b6..00000000 --- a/man/probe::udp.sendmsg.return.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::UDP\&.SENDMSG - -

PROBE::UDP\&.SENDMSG

-Section: Networking Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::udp.sendmsg.return - Fires whenever an attempt to send a UDP message is completed -  -

SYNOPSIS

- -

-

-udp.sendmsg.return 
-
- -  -

VALUES

- -

- -name -

-The name of this probe -
- -

- -size -

-Number of bytes sent by the process -
- -  -

CONTEXT

- -

- -The process which sent a UDP message -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::vm.brk.3stap.html b/man/probe::vm.brk.3stap.html deleted file mode 100644 index d2002089..00000000 --- a/man/probe::vm.brk.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::VM\&.BRK - -

PROBE::VM\&.BRK

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::vm.brk - Fires when a brk is requested (i.e. the heap will be resized) -  -

SYNOPSIS

- -

-

-vm.brk 
-
- -  -

VALUES

- -

- -length -

-the length of the memory segment -
- -

- -name -

-name of the probe point -
- -

- -address -

-the requested address -
- -  -

CONTEXT

- -

- -The process calling brk. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::vm.kfree.3stap.html b/man/probe::vm.kfree.3stap.html deleted file mode 100644 index a943fbc1..00000000 --- a/man/probe::vm.kfree.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::VM\&.KFREE - -

PROBE::VM\&.KFREE

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::vm.kfree - Fires when kfree is requested -  -

SYNOPSIS

- -

-

-vm.kfree 
-
- -  -

VALUES

- -

- -ptr -

-pointer to the kmemory allocated which is returned by kmalloc -
- -

- -caller_function -

-name of the caller function. -
- -

- -name -

-name of the probe point -
- -

- -call_site -

-address of the function calling this kmemory function -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::vm.kmalloc.3stap.html b/man/probe::vm.kmalloc.3stap.html deleted file mode 100644 index a9ffd759..00000000 --- a/man/probe::vm.kmalloc.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::VM\&.KMALLOC - -

PROBE::VM\&.KMALLOC

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::vm.kmalloc - Fires when kmalloc is requested -  -

SYNOPSIS

- -

-

-vm.kmalloc 
-
- -  -

VALUES

- -

- -ptr -

-pointer to the kmemory allocated -
- -

- -caller_function -

-name of the caller function -
- -

- -gfp_flag_name -

-type of kmemory to allocate (in String format) -
- -

- -name -

-name of the probe point -
- -

- -gfp_flags -

-type of kmemory to allocate -
- -

- -call_site -

-address of the kmemory function -
- -

- -bytes_req -

-requested Bytes -
- -

- -bytes_alloc -

-allocated Bytes -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::vm.kmalloc_node.3stap.html b/man/probe::vm.kmalloc_node.3stap.html deleted file mode 100644 index 51759072..00000000 --- a/man/probe::vm.kmalloc_node.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::VM\&.KMALLOC_ - -

PROBE::VM\&.KMALLOC_

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::vm.kmalloc_node - Fires when kmalloc_node is requested -  -

SYNOPSIS

- -

-

-vm.kmalloc_node 
-
- -  -

VALUES

- -

- -ptr -

-pointer to the kmemory allocated -
- -

- -caller_function -

-name of the caller function -
- -

- -gfp_flag_name -

-type of kmemory to allocate(in string format) -
- -

- -name -

-name of the probe point -
- -

- -gfp_flags -

-type of kmemory to allocate -
- -

- -call_site -

-address of the function caling this kmemory function -
- -

- -bytes_req -

-requested Bytes -
- -

- -bytes_alloc -

-allocated Bytes -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::vm.kmem_cache_alloc.3stap.html b/man/probe::vm.kmem_cache_alloc.3stap.html deleted file mode 100644 index e37389de..00000000 --- a/man/probe::vm.kmem_cache_alloc.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::VM\&.KMEM_CAC - -

PROBE::VM\&.KMEM_CAC

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::vm.kmem_cache_alloc - Fires when kmem_cache_alloc is requested -  -

SYNOPSIS

- -

-

-vm.kmem_cache_alloc 
-
- -  -

VALUES

- -

- -ptr -

-pointer to the kmemory allocated -
- -

- -caller_function -

-name of the caller function. -
- -

- -gfp_flag_name -

-type of kmemory to allocate(in string format) -
- -

- -name -

-name of the probe point -
- -

- -gfp_flags -

-type of kmemory to allocate -
- -

- -call_site -

-address of the function calling this kmemory function. -
- -

- -bytes_req -

-requested Bytes -
- -

- -bytes_alloc -

-allocated Bytes -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::vm.kmem_cache_alloc_node.3stap.html b/man/probe::vm.kmem_cache_alloc_node.3stap.html deleted file mode 100644 index 9ac425e2..00000000 --- a/man/probe::vm.kmem_cache_alloc_node.3stap.html +++ /dev/null @@ -1,114 +0,0 @@ - -Manpage of PROBE::VM\&.KMEM_CAC - -

PROBE::VM\&.KMEM_CAC

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::vm.kmem_cache_alloc_node - Fires when kmem_cache_alloc_node is requested -  -

SYNOPSIS

- -

-

-vm.kmem_cache_alloc_node 
-
- -  -

VALUES

- -

- -ptr -

-pointer to the kmemory allocated -
- -

- -caller_function -

-name of the caller function -
- -

- -gfp_flag_name -

-type of kmemory to allocate(in string format) -
- -

- -name -

-name of the probe point -
- -

- -gfp_flags -

-type of kmemory to allocate -
- -

- -call_site -

-address of the function calling this kmemory function -
- -

- -bytes_req -

-requested Bytes -
- -

- -bytes_alloc -

-allocated Bytes -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::vm.kmem_cache_free.3stap.html b/man/probe::vm.kmem_cache_free.3stap.html deleted file mode 100644 index 9ba2cec1..00000000 --- a/man/probe::vm.kmem_cache_free.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::VM\&.KMEM_CAC - -

PROBE::VM\&.KMEM_CAC

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::vm.kmem_cache_free - Fires when kmem_cache_free is requested -  -

SYNOPSIS

- -

-

-vm.kmem_cache_free 
-
- -  -

VALUES

- -

- -ptr -

-Pointer to the kmemory allocated which is returned by kmem_cache -
- -

- -caller_function -

-Name of the caller function. -
- -

- -name -

-Name of the probe point -
- -

- -call_site -

-Address of the function calling this kmemory function -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::vm.mmap.3stap.html b/man/probe::vm.mmap.3stap.html deleted file mode 100644 index 0f453a65..00000000 --- a/man/probe::vm.mmap.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::VM\&.MMAP - -

PROBE::VM\&.MMAP

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::vm.mmap - Fires when an mmap is requested -  -

SYNOPSIS

- -

-

-vm.mmap 
-
- -  -

VALUES

- -

- -length -

-the length of the memory segment -
- -

- -name -

-name of the probe point -
- -

- -address -

-the requested address -
- -  -

CONTEXT

- -

- -The process calling mmap. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::vm.munmap.3stap.html b/man/probe::vm.munmap.3stap.html deleted file mode 100644 index 95875d85..00000000 --- a/man/probe::vm.munmap.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::VM\&.MUNMAP - -

PROBE::VM\&.MUNMAP

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::vm.munmap - Fires when an munmap is requested -  -

SYNOPSIS

- -

-

-vm.munmap 
-
- -  -

VALUES

- -

- -length -

-the length of the memory segment -
- -

- -name -

-name of the probe point -
- -

- -address -

-the requested address -
- -  -

CONTEXT

- -

- -The process calling munmap. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::vm.oom_kill.3stap.html b/man/probe::vm.oom_kill.3stap.html deleted file mode 100644 index 5ea9fc0d..00000000 --- a/man/probe::vm.oom_kill.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::VM\&.OOM_KILL - -

PROBE::VM\&.OOM_KILL

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::vm.oom_kill - Fires when a thread is selected for termination by the OOM killer -  -

SYNOPSIS

- -

-

-vm.oom_kill 
-
- -  -

VALUES

- -

- -name -

-name of the probe point -
- -

- -task -

-the task being killed -
- -  -

CONTEXT

- -

- -The process that tried to consume excessive memory, and thus triggered the OOM. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::vm.pagefault.3stap.html b/man/probe::vm.pagefault.3stap.html deleted file mode 100644 index 8f9d6341..00000000 --- a/man/probe::vm.pagefault.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::VM\&.PAGEFAUL - -

PROBE::VM\&.PAGEFAUL

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::vm.pagefault - Records that a page fault occurred -  -

SYNOPSIS

- -

-

-vm.pagefault 
-
- -  -

VALUES

- -

- -write_access -

-indicates whether this was a write or read access; 1 indicates a write, while 0 indicates a read -
- -

- -name -

-name of the probe point -
- -

- -address -

-the address of the faulting memory access; i.e. the address that caused the page fault -
- -  -

CONTEXT

- -

- -The process which triggered the fault -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::vm.pagefault.return.3stap.html b/man/probe::vm.pagefault.return.3stap.html deleted file mode 100644 index 18f632e1..00000000 --- a/man/probe::vm.pagefault.return.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::VM\&.PAGEFAUL - -

PROBE::VM\&.PAGEFAUL

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::vm.pagefault.return - Indicates what type of fault occurred -  -

SYNOPSIS

- -

-

-vm.pagefault.return 
-
- -  -

VALUES

- -

- -name -

-name of the probe point -
- -

- -fault_type -

-returns either 0 (VM_FAULT_OOM) for out of memory faults, 2 (VM_FAULT_MINOR) for minor faults, 3 (VM_FAULT_MAJOR) for major faults, or 1 (VM_FAULT_SIGBUS) if the fault was neither OOM, minor fault, nor major fault. -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::vm.write_shared.3stap.html b/man/probe::vm.write_shared.3stap.html deleted file mode 100644 index 72af0573..00000000 --- a/man/probe::vm.write_shared.3stap.html +++ /dev/null @@ -1,86 +0,0 @@ - -Manpage of PROBE::VM\&.WRITE_SH - -

PROBE::VM\&.WRITE_SH

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::vm.write_shared - Attempts at writing to a shared page -  -

SYNOPSIS

- -

-

-vm.write_shared 
-
- -  -

VALUES

- -

- -name -

-name of the probe point -
- -

- -address -

-the address of the shared write -
- -  -

CONTEXT

- -

- -The context is the process attempting the write. -  -

DESCRIPTION

- -

- -Fires when a process attempts to write to a shared page. If a copy is necessary, this will be followed by a vm.write_shared_copy. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::vm.write_shared_copy.3stap.html b/man/probe::vm.write_shared_copy.3stap.html deleted file mode 100644 index 53ec1f1e..00000000 --- a/man/probe::vm.write_shared_copy.3stap.html +++ /dev/null @@ -1,93 +0,0 @@ - -Manpage of PROBE::VM\&.WRITE_SH - -

PROBE::VM\&.WRITE_SH

-Section: Memory Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::vm.write_shared_copy - Page copy for shared page write -  -

SYNOPSIS

- -

-

-vm.write_shared_copy 
-
- -  -

VALUES

- -

- -name -

-Name of the probe point -
- -

- -zero -

-boolean indicating whether it is a zero page (can do a clear instead of a copy) -
- -

- -address -

-The address of the shared write -
- -  -

CONTEXT

- -

- -The process attempting the write. -  -

DESCRIPTION

- -

- -Fires when a write to a shared page requires a page copy. This is always preceded by a vm.write_shared. -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
CONTEXT
-
DESCRIPTION
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::workqueue.create.3stap.html b/man/probe::workqueue.create.3stap.html deleted file mode 100644 index 909ebb0d..00000000 --- a/man/probe::workqueue.create.3stap.html +++ /dev/null @@ -1,72 +0,0 @@ - -Manpage of PROBE::WORKQUEUE\&.C - -

PROBE::WORKQUEUE\&.C

-Section: Interrupt Request (IRQ) Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::workqueue.create - Creating a new workqueue -  -

SYNOPSIS

- -

-

-workqueue.create 
-
- -  -

VALUES

- -

- -wq_thread -

-task_struct of the workqueue thread -
- -

- -cpu -

-cpu for which the worker thread is created -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::workqueue.destroy.3stap.html b/man/probe::workqueue.destroy.3stap.html deleted file mode 100644 index 3110f05d..00000000 --- a/man/probe::workqueue.destroy.3stap.html +++ /dev/null @@ -1,65 +0,0 @@ - -Manpage of PROBE::WORKQUEUE\&.D - -

PROBE::WORKQUEUE\&.D

-Section: Interrupt Request (IRQ) Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::workqueue.destroy - Destroying workqueue -  -

SYNOPSIS

- -

-

-workqueue.destroy 
-
- -  -

VALUES

- -

- -wq_thread -

-task_struct of the workqueue thread -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::workqueue.execute.3stap.html b/man/probe::workqueue.execute.3stap.html deleted file mode 100644 index 681c3757..00000000 --- a/man/probe::workqueue.execute.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::WORKQUEUE\&.E - -

PROBE::WORKQUEUE\&.E

-Section: Interrupt Request (IRQ) Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::workqueue.execute - Executing deferred work -  -

SYNOPSIS

- -

-

-workqueue.execute 
-
- -  -

VALUES

- -

- -wq_thread -

-task_struct of the workqueue thread -
- -

- -work_func -

-pointer to handler function -
- -

- -work -

-work_struct* being executed -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/probe::workqueue.insert.3stap.html b/man/probe::workqueue.insert.3stap.html deleted file mode 100644 index ff7f5f92..00000000 --- a/man/probe::workqueue.insert.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of PROBE::WORKQUEUE\&.I - -

PROBE::WORKQUEUE\&.I

-Section: Interrupt Request (IRQ) Tapset (3stap)
Updated: March 2014
Index -Return to Main Contents
- - - - - - - - - - - - - - - - - - - - - -  -

NAME

- -probe::workqueue.insert - Queuing work on a workqueue -  -

SYNOPSIS

- -

-

-workqueue.insert 
-
- -  -

VALUES

- -

- -wq_thread -

-task_struct of the workqueue thread -
- -

- -work_func -

-pointer to handler function -
- -

- -work -

-work_struct* being queued -
- -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
VALUES
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/stap-merge.1.html b/man/stap-merge.1.html deleted file mode 100644 index 213a60f6..00000000 --- a/man/stap-merge.1.html +++ /dev/null @@ -1,185 +0,0 @@ - -Manpage of STAP-MERGE - -

STAP-MERGE

-Section: User Commands (1)
Index -Return to Main Contents
- -  -

NAME

- -stap-merge - systemtap per-cpu binary merger -

- - - - -

-  -

SYNOPSIS

- -

-
- -stap-merge - -[ -OPTIONS - -] -[ -INPUT FILENAMES - -] -

-  -

DESCRIPTION

- -

-The stap-merge executable applies when the -b option has been used -while running a -stap - -script. The -b option will generate files -per-cpu, based on the timestamp field. Then stap-merge will -merge and sort through the per-cpu files based on the timestamp -field. -

-  -

OPTIONS

- -

-The systemtap merge executable supports the following options. -

-
-v - -
-Verbose mode, displays three extra fields per set of collected data. - -
- -

- -

-
-[cpunumber,sequencenumberofdata,thelengthofthedataset]
-
-
- -
- - -

- -

-o OUTPUT_FILENAME - -
-

-Specify the name of the file you would like the output to be -redirected into. If this option is not specified than the -output will be pushed to standard out. -

-

-  -

EXAMPLES

- - -
- -

- -

-
-$ stap -v -b -e 'probe syscall.open { printf("%s(%d) open\n",
-execname(), pid()) }' 
-
-
-
- -
- - -

- -

-This should result in several -stpd_cpu - -files (each labled with a number -representing which cpu the file was produced from). -

- -
- -

- -

-
-$ stap-merge -v stpd_cpu0 stpd_cpu1
-
-
-
- -
- - -

- -

-Running the stap-merge program in the same directory as the stap -script earlier in the example, will produce an ordered sequence of -packets with the three part label for each set of data. This -result will be pushed through the standard output. An output file -could have been specified using the "-o" option. -

-  -

FILES

- -

-

-
Important files and their corresponding paths can be located in the
-stappaths (7) manual page. -

-

-  -

SEE ALSO

- - -
-stapprobes(3stap),
-stappaths(7),
-staprun(8),
-stapvars(3stap),
-stapex(3stap),
-stap-server(8),
-gdb(1)
-
-
  -

BUGS

- -Use the Bugzilla link of the project web page or our mailing list. - -http://sourceware.org/systemtap/,<systemtap@sourceware.org>. - - -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
DESCRIPTION
-
OPTIONS
-
EXAMPLES
-
FILES
-
SEE ALSO
-
BUGS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/stap-prep.1.html b/man/stap-prep.1.html deleted file mode 100644 index 3f375a2a..00000000 --- a/man/stap-prep.1.html +++ /dev/null @@ -1,99 +0,0 @@ - -Manpage of STAP-PREP - -

STAP-PREP

-Section: User Commands (1)
Index -Return to Main Contents
- -  -

NAME

- -stap-prep - prepare system for systemtap use -

- - - - -

-  -

SYNOPSIS

- -

-
- -stap-prep - -[ -KERNEL_VERSION - -] -

-  -

DESCRIPTION

- -

-The stap-prep executable prepares the system for systemtap use by -installing kernel headers, debug symbols and build tools that match -the currently running kernel or optionally the kernel version given by -the user. -

-The exact behavior of stap-prep may be customized by the -distribution maintainers. It might for example only give suggestions -and not actually install the required packages if that is difficult to -automate. -

-  -

EXAMPLES

- - -
- -

- -

-
-$ stap-prep
-Please install linux-image-3.2.0-2-amd64-dbg
-
-
- -
- - -

- -

-  -

SEE ALSO

- - -
-stap(1)
-
-
  -

BUGS

- -Use the Bugzilla link of the project web page or our mailing list. - -http://sourceware.org/systemtap/,<systemtap@sourceware.org>. - - -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
DESCRIPTION
-
EXAMPLES
-
SEE ALSO
-
BUGS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/stap-report.1.html b/man/stap-report.1.html deleted file mode 100644 index 10738d2e..00000000 --- a/man/stap-report.1.html +++ /dev/null @@ -1,101 +0,0 @@ - -Manpage of STAP-REPORT - -

STAP-REPORT

-Section: User Commands (1)
Index -Return to Main Contents
- -  -

NAME

- -stap-report - collect system information that is useful for debugging systemtap bugs -

- - - - -

-  -

SYNOPSIS

- -

-
- -stap-report - -

-  -

DESCRIPTION

- -

-The stap-report executable collects system information that is useful -for debugging systemtap bugs. It is a good idea to include such a -report in bug reports especially if you send them directly to the -upstream. stap-report can be run either as a normal user or as -root. The report will be more complete if stap-report is run as root. -

-  -

EXAMPLES

- - -
- -

- -

-
-$ stap-report > report.txt
-$ head report.txt
-== id ==
-uid=1000(user) gid=1000(user) groups=122(stapdev),123(stapusr),129(stapsys)
-== stap -V ==
-Systemtap translator/driver (version 2.2.1/0.153, Debian version 2.2.1-1)
-Copyright (C) 2005-2013 Red Hat, Inc. and others
-This is free software; see the source for copying conditions.
-enabled features: AVAHI LIBSQLITE3 NSS TR1_UNORDERED_MAP NLS
-== which stap ==
-/usr/bin/stap
-== locate --regex '/stap(run)?$' | xargs ls -ald ==
-
-
- -
- - -

- -

-  -

SEE ALSO

- - -
-stap(1)
-
-
  -

BUGS

- -Use the Bugzilla link of the project web page or our mailing list. - -http://sourceware.org/systemtap/,<systemtap@sourceware.org>. - - -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
DESCRIPTION
-
EXAMPLES
-
SEE ALSO
-
BUGS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/stap-server.8.html b/man/stap-server.8.html deleted file mode 100644 index 6b162962..00000000 --- a/man/stap-server.8.html +++ /dev/null @@ -1,786 +0,0 @@ - -Manpage of STAP-SERVER - -

STAP-SERVER

-Section: Maintenance Commands (8)
Index -Return to Main Contents
- -  -

NAME

- -stap-server - systemtap compile server management -

- - - -

-  -

SYNOPSIS

- -

-
- -[ -service - -] -stap-server - -{ -start - -| -stop - -| -restart - -| -condrestart - -| -try-restart - -| -force-reload - -| -status - -} [ -options - -] -

-  -

DESCRIPTION

- -

-A systemtap compile server listens for connections from stap clients -on a secure SSL network port and accepts requests to run the -stap - -front end. Each server advertises its presence and configuration on the local -network using mDNS (avahi) allowing for automatic detection by clients. -

-

- -The stap-server script aims to provide: -

-
-management of systemtap compile servers as a service. -
-convenient control over configured servers and individual (ad-hoc) servers. -

-

-  -

ARGUMENTS

- -One of the actions below must be specified: -
-
start - -
-Start servers. The specified servers are started. -If no server is specified, the configured servers are started. If no servers -are configured, a server for the kernel release and architecture of the host -is started. -If a specified server is -already started, this action will -be ignored for that server. If a server fails to start, this action fails. -

-

stop - -
-Stop server(s). The specified servers are stopped. -If no server is specified, all currently running servers are stopped. -If a specified server is -not running, this action -will be successful for that server. If a server fails to stop, this action -fails. -

-

restart - -
-Stop and restart servers. The specified servers are stopped and restarted. -If no server is specified, all currently running servers are stopped and -restarted. If no servers are running, this action behaves like start. -

-

condrestart - -
-Stop and restart servers. The specified servers are stopped and restarted. -If a specified server is not running, it is not started. If no server is -specified, all currently running servers are stopped and restarted. If no -servers are running, none will be started. -

-

try-restart - -
-This action is identical to condrestart. -

-

force-reload - -
-Stop all running servers, reload config files and restart the service as if -start - -was specified. -

-

status - -
-Print information about running servers. Information about the specified -server(s) will be printed. If no server is specified, information about all -running servers will be printed. -

-

-  -

OPTIONS

- -The following options are used to provide additional configuration and -to specify servers to be managed: -

-

-
-c configfile
-This option specifies a global configuration file in addition to the default -global configuration file described -below. This file will be processed after the default global -configuration file. If the -c option is specified more than once, the -last -configuration file specified will be used. -

-

-a architecture
-This option specifies the target architecture of the server and is -analogous to the -a option of stap. See the -stap(1) - -manual page for more details. -The default architecture is the architecture of the host. -

-

-r kernel-release
-This option specifies the target kernel release of the server and is -analogous to the -r option of stap. See the -stap(1) - -manual page for more details. -The default release is that of the currently running kernel. -

-

-I path
-This option specifies an additional path to be searched by the server(s) for -tapsets and is analogous to the -I option of stap. -See the -stap(1) - -manual page for more details. -

-

-R path
-This option specifies the location of the systemtap runtime to be used by the -server(s) and is analogous to the -R option of stap. -See the -stap(1) - -manual page for more details. -

-

-B options
-This option specifies options to be passed to make when building systemtap -modules and is analogous to the -B option of stap. -See the -stap(1) - -manual page for more details. -

-

-i
-This option is a shortcut which specifies one server for each kernel -release installed in /lib/modules/. Previous --I, -R, -B and -u options will be -applied to each server, however previous -a options will be ignored and -the default architecture will be used. -

-

-n nickname
-This option allows the specification of a server configuration by nickname. -When -n is specified, a currently running server with the given nickname -will be searched for. If no currently running server with the given nickname is -found, a server configuration with the given nickname will be searched for in -the configuration files for default servers, -or the path configured in the global configuration file or -the configuration file specified by the --c option. If a server configuration for the given -nickname is found, the --a, -r, -I, -R, -B and -u options for -that server will be used as if they were specified on the command line. If no -configuration with the given nickname is found, and the action is -start - -(or an action behaving like start -(see ARGUMENTS), the server will be started with the given nickname. -If no configuration with the given nickname is found, and the action is not -start - -(or an action behaving like start), it is an error. If a nickname is -not specified for a server which is being started, its nickname will be its -process id. -

-

-p pid
-This option allows the specification of a server configuration by process id. -When -p is specified, a currently running server with the given process -id will be searched for. If no such server is found, it is an error. If a server -with the given procss id is found, the --a, -r, -I, -R, -B and -u options for -that server will be used as if they were specified on the command line. -

-

-u user-name
-Each systemtap compile server is normally run by the user name -stap-server (for the initscript) or as the user invoking -stap-server, -unless otherwise configured (see FILES). This option -specifies the user name used to run the server(s). The user name specified -must be a member of the group stap-server. -

-

--log logfile
-This option allows the specification of a separate log file for each server. -Each --log option is added to a list which will be applied, in turn, to each -server specified. If more servers are specified than --log options, the default -log file (see FILES) will be used for subsequent servers. -

-

--port port-number
-This option allows the specification of a specific network port for each -server. Each --port option is added to a list which will be applied, in turn, -to each server specified. If more servers are specified than ---port options, a randomly selected port is used for subsequent servers. -

-

--ssl certificate-db-path
-This option allows the specification of a separate NSS certificate database -for each server. Each --ssl option is added to a list which will be applied, -in turn, to each server specified. If more servers are specified than --ssl -options, the default certificate database -(see FILES) for subsequent servers. -

-

--max-threads threads
-This option allows the specification of the maximum number of worker threads -to handle concurrent requests. If threads == 0, each request will be -handled on the main thread, serially. The default is the number of available -processor cores. -

-

-  -

CONFIGURATION

- -

-Configuration files allow us to: -

-
-specify global configuration of logging, server configuration files, status -files and other global parameters. -
-specify which servers are to be started by default. -

-

-  -

Global Configuration

- -

-The Global Configuration file contains -variable assignments used to configure the overall operation of the service. -Each line beginning with a '#' character is ignored. All other lines must be -of the form VARIABLE=VALUE. This is not a shell script. The entire -contents of the line after the = will be assigned as-is to the variable. -

-The following variables may be assigned: -

-

-
CONFIG_PATH - -
-Specifies the absolute path of the directory containing the default server -configurations. -

-

STAT_PATH - -
-Specifies the absolute path of the running server status directory. -

-

LOG_FILE - -
-Specifies the absolute path of the log file. -

-

STAP_USER - -
-Specifies the userid which will be used to run the server(s) -(default: for the initscript stap-server, otherwise the user running -stap-server). -

-

-

- -Here is an example of a Global Configuration file: - -

- -
- -

-
-CONFIG_PATH=~<user>/my-stap-server-configs
-LOG_FILE=/tmp/stap-server/log
-
-
- -
- - -

- -

-  -

Individual Server Configuration

- -

-Each server configuration file configures a server to be started when no -server is specified for the start action, or an action behaving like the -start action (see ARGUMENTS). Each configuration file contains -variable assignments used to configure an individual server. -

-Each line beginning with a '#' character is ignored. All other lines must be -of the form VARIABLE=VALUE. This is not a shell script. The entire -contents of the line after the = will be assigned as-is to the variable. -

-Each configuration file must have a filename suffix of .conf. See -stappaths(7) for the default location of these files. This default -location can be overridden in the global configuration file using the -c -option (see OPTIONS). -

-The following variables may be assigned: -

-
ARCH - -
-Specifies the target architecture for this server and corresponds to the --a option (see OPTIONS). If ARCH is not set, the -architecture of the host will be used. -

-

RELEASE - -
-Specifies the kernel release for this server -and corresponds to the --r option (see OPTIONS). If RELEASE is not set, the -release -of the kernel running on the host will be used. -
  -
BUILD - -
-Specifies options to be passed to the make process used by -systemtap to build kernel modules. -This an array variable with each element corresponding to a --B option (see OPTIONS). Using the form BUILD=STRING clears -the array and sets the first element to STRING. Using the form -BUILD+=STRING adds STRING as an additional element to the array. -
  -
INCLUDE - -
-Specifies a list of directories to be searched by the server for tapsets. -This is an array variable with each element corresponding to a --I option (see OPTIONS). Using the form INCLUDE=PATH clears -the array and sets the first element to PATH. Using the form -INCLUDE+=PATH adds PATH as an additional element to the array. -

-

RUNTIME - -
-Specifies the directory which contains the systemtap runtime code to be used -by this server -and corresponds to the --R option (see OPTIONS). -

-

USER - -
-Specifies the user name to be used to run this server -and corresponds to the --u option (see OPTIONS). -

-

NICKNAME - -
-Specifies the nickname to be used to refer to this server -and corresponds to the --n option (see OPTIONS). -

-

LOG - -
-Specifies the location of the log file to be used by this server and corresponds to the ---log option (see OPTIONS). -

-

PORT - -
-Specifies the network port to be used by this server and corresponds to the ---port option (see OPTIONS). -

-

SSL - -
-Specifies the location of the NSS certificate database to be used by this server and corresponds -to the ---ssl option (see OPTIONS). -

-

MAXTHREADS - -
-Specifies the maximum number of worker threads to handle concurrent requests to be used by this server -and corresponds to the --max-threads option (see OPTIONS). -

-

-

- -Here is an example of a server configuration file: - -

- -
- -

-
-ARCH=
-USER=
-RELEASE=
-NICKNAME=native
-
-
- -
- - -

- -By keeping the ARCH, USER, and RELEASE fields blank, they will default to the -current arch and release and use the default user. -

-A more specific example: - -

- -
- -

-
-ARCH=i386
-RELEASE=2.6.18-128.el5
-PORT=5001
-LOG=/path/to/log/file
-
-
- -
- - -

- -

-And here is a more complicated example: - -

- -
- -

-
-USER=serveruser
-RELEASE=/kernels/2.6.18-92.1.18.el5/build
-INCLUDE=/mytapsets
-INCLUDE+=/yourtapsets
-BUILD='VARIABLE1=VALUE1 VARIABLE2=VALUE2'
-DEFINE=STP_MAXMEMORY=1024
-DEFINE+=DEBUG_TRANS
-RUNTIME=/myruntime
-NICKNAME=my-server
-SSL=/path/to/NSS/certificate/database
-
-
- -
- - -

- -

-  -

SERVER AUTHENTICAION

- -The security of the SSL network connection between the client and server -depends on the proper -management of server certificates. -

-

- -The trustworthiness of a given systemtap compile server can not be determined -automatically without a trusted certificate authority issuing systemtap compile server -certificates. This is -not practical in everyday use and so, clients must authenticate servers -against their own database of trusted server certificates. In this context, -establishing a given server as trusted by a given client means adding -that server's certificate to the -client's database of trusted servers. -

-

- -For the stap-server initscript, on the local host, this is handled -automatically. -When the systemtap-server package is installed, the server's -certificate for the default user (stap-server) is automatically -generated and installed. This means that servers started by the -stap-server initscript, -with the default user, are automatically trusted by clients on the local -host, both as an SSL peer and as a systemtap module signer. -

- -Furthermore, when stap is invoked by an unprivileged user -(not root, not a member of the group stapdev, but a member of the group -stapusr and possibly the group stapsys), the options --use-server -and --privilege -are automatically added to the specified options. -This means that unprivileged users -on the local host can use a server on the local host -in unprivileged mode with no further setup or options required. Normal users -(those in none of the SystemTap groups) can also use compile-servers through the ---use-server and --privilege options. But they will of course -be unable to load the module (the -p4 option can be used to stop short of -loading). -

-

- -In order to use a server running on another host, that server's certificate -must be installed on the client's host. -See the --trust-servers option in the -stap(1) - -manual page for more details and README.unprivileged in the systemtap sources -for more details. -

-  -

EXAMPLES

- -See the -stapex(3stap) - -manual page for a collection of sample systemtap scripts. -

- -To start the configured servers, or the default server, if none are configured: -

- - $ [ service ] stap-server start - -

- -To start a server for each kernel installed in /lib/modules: -

- - $ [ service ] stap-server start -i - -

- -To obtain information about the running server(s): -

- - $ [ service ] stap-server status - -

- -To start a server like another one, except targeting a different architecture, -by referencing the first server's nickname: -

- - $ [ service ] stap-server start -n NICKNAME -a ARCH - -

- -To start a server for a kernel release not installed (cross-compiling) -

- - $ [ service ] stap-server start -a ARCH -r /BUILDDIR - -

- -To stop one of the servers by referencing its process id (obtained by running -stap-server status): -

- - $ [ service ] stap-server stop -p PID - -

- -To run a script using a compile server: -

- - $ stap SCRIPT --use-server - -

- -To run a script as an unprivileged user using a compile server: -

- - $ stap SCRIPT - -

- -To stop all running servers: -

- - $ [ service ] stap-server stop - -

- -To restart servers after a global configuration change and/or when default -servers have been added, changed, or removed: -

- - $ [ service ] stap-server force-reload - -

-  -

SAFETY AND SECURITY

- -Systemtap is an administrative tool. It exposes kernel internal data -structures and potentially private user information. See the -stap(1) - -manual page for additional information on safety and security. -

-

- -As a network server, stap-server should be activated with care in -order to limit the potential effects of bugs or mischevious users. -Consider the following prophylactic measures. -

-
1
-Run stap-server as an unprivileged user, never as root. -

-When invoked as a -service (i.e. service stap-server ...), each server is run, -by default, as the user stap-server. -When invoked directly (i.e. stap-server ...), each server is run, -by default, as the invoking user. In each case, another user may be selected by -using the -u option on invocation, by specifying -STAP_USER=username in the global configuration file or by specifying -USER=username in an individual server configuration file. The invoking -user must have authority to run processes as another user. -See CONFIGURATION. -

-The selected user must have write access to the server log file. -The location of the server log file may -be changed by setting LOG_FILE=path in the global configuration file. -See CONFIGURATION. -

-The selected user must have -read/write access to the directory containing the server status files. -The location of the server -status files may be changed by setting STAT_PATH=path in the global -configuration file. -See CONFIGURATION. -

-The selected user must have -read/write access to the uprobes.ko build directory and its files. -

-Neither form of stap-server will run if the selected user is root. -

-

2
-Run stap-server requests with resource limits that impose maximum -cpu time, file size, memory consumption, in order to bound -the effects of processing excessively large or bogus inputs. -

-When the user running the server is stap-server, -each server request is run with limits specified in ~stap-server/.systemtap/rc -otherwise, no limits are imposed. -

-

3
-Run stap-server with a TMPDIR environment variable that -points to a separate and/or quota-enforced directory, in -order to prevent filling up of important filesystems. -

-The default TMPDIR is /tmp/. -

-

4
-Activate network firewalls to limit stap client connections -to relatively trustworthy networks. -

-For automatic selection of servers by clients, avahi must be installed -on both the server and client hosts and mDNS messages must be allowed through the firewall. -

-

-

- -The systemtap compile server and its related utilities use the Secure Socket Layer -(SSL) as implemented by Network Security Services (NSS) -for network security. NSS is also used -for the generation and management of certificates. The related -certificate databases must be protected in order to maintain the security of -the system. -Use of the utilities provided will help to ensure that the proper protection -is maintained. The systemtap client will check for proper -access permissions before making use of any certificate database. -

-  -

FILES

- -
-
Important files and their corresponding paths can be located in the
-stappaths (7) manual page. -

-

-  -

SEE ALSO

- - -
-stap(1),
-staprun(8),
-stapprobes(3stap),
-stappaths(7),
-stapex(3stap),
-avahi,
-ulimit(1),
-NSS
-
-
  -

BUGS

- -Use the Bugzilla link of the project web page or our mailing list. - -http://sourceware.org/systemtap/, <systemtap@sourceware.org>. - - -

-

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
DESCRIPTION
-
ARGUMENTS
-
OPTIONS
-
CONFIGURATION
-
Global Configuration
-
Individual Server Configuration
-
SERVER AUTHENTICAION
-
EXAMPLES
-
SAFETY AND SECURITY
-
FILES
-
SEE ALSO
-
BUGS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/stap.1.html b/man/stap.1.html deleted file mode 100644 index 928e570b..00000000 --- a/man/stap.1.html +++ /dev/null @@ -1,3084 +0,0 @@ - -Manpage of STAP - -

STAP

-Section: User Commands (1)
Index -Return to Main Contents
- -  -

NAME

- -stap - systemtap script translator/driver -

- - - - -

-  -

SYNOPSIS

- -

-
- -stap - -[ -OPTIONS - -] -FILENAME - -[ -ARGUMENTS - -] -
- -stap - -[ -OPTIONS - -] -- - -[ -ARGUMENTS - -] -
- -stap - -[ -OPTIONS - -] --e SCRIPT - -[ -ARGUMENTS - -] -
- -stap - -[ -OPTIONS - -] --l PROBE - -[ -ARGUMENTS - -] -
- -stap - -[ -OPTIONS - -] --L PROBE - -[ -ARGUMENTS - -] -

-  -

DESCRIPTION

- -

-The -stap - -program is the front-end to the Systemtap tool. It accepts probing -instructions (written in a simple scripting language), translates -those instructions into C code, compiles this C code, and loads the -resulting module into a running Linux kernel or a DynInst user-space -mutator, to perform the requested system trace/probe functions. You -can supply the script in a named file (FILENAME), from standard input -(use - instead of FILENAME), or from the command line (using -e -SCRIPT). The program runs until it is interrupted by the user, or if -the script voluntarily invokes the -exit() - -function, or by sufficient number of soft errors. -

- -The language, which is described in a later section, is strictly typed, -declaration free, procedural, and inspired by -awk. - -It allows source code points or events in the kernel to be associated -with handlers, which are subroutines that are executed synchronously. It is -somewhat similar conceptually to "breakpoint command lists" in the -gdb - -debugger. -

-  -

OPTIONS

- -The systemtap translator supports the following options. Any other option -prints a list of supported options. Options may be given on the command line, -as usual. If the file $SYSTEMTAP_DIR/rc exist, options are also loaded from -there and interpreted first. ($SYSTEMTAP_DIR defaults to $HOME/.systemtap if unset.) -
-
- - -
-Use standard input instead of a given FILENAME as probe language input, -unless -e SCRIPT is given. -
-h --help - -
-Show help message. -
-V --version - -
-Show version message. -
-p NUM - -
-Stop after pass NUM. The passes are numbered 1-5: parse, elaborate, -translate, compile, run. See the -PROCESSING - -section for details. -
-v - -
-Increase verbosity for all passes. Produce a larger volume of -informative (?) output each time option repeated. -
--vp ABCDE - -
-Increase verbosity on a per-pass basis. For example, "--vp 002" -adds 2 units of verbosity to pass 3 only. The combination "-v --vp 00004" -adds 1 unit of verbosity for all passes, and 4 more for pass 5. -
-k - -
-Keep the temporary directory after all processing. This may be useful -in order to examine the generated C code, or to reuse the compiled -kernel object. -
-g - -
-Guru mode. Enable parsing of unsafe expert-level constructs like -embedded C. -
-P - -
-Prologue-searching mode. Activate heuristics to work around incorrect -debugging information for $context variables. -
-u - -
-Unoptimized mode. Disable unused code elision during elaboration. -
-w - -
-Suppressed warnings mode. Disables all warning messages. -
-W - -
-Treat all warnings as errors. -
-b - -
-Use bulk mode (percpu files) for kernel-to-user data transfer. -
-t - -
-Collect timing information on the number of times probe executes -and average amount of time spent in each probe-point. Also shows -the derivation for each probe-point. -
-sNUM - -
-Use NUM megabyte buffers for kernel-to-user data transfer. On a -multiprocessor in bulk mode, this is a per-processor amount. -
-I DIR - -
-Add the given directory to the tapset search directory. See the -description of pass 2 for details. -
-D NAME=VALUE - -
-Add the given C preprocessor directive to the module Makefile. These can -be used to override limit parameters described below. -
-B NAME=VALUE - -
-Add the given make directive to the kernel module build's make invocation. -These can be used to add or override kconfig options. -
-a ARCH - -
-Use a cross-compilation mode for the given target architecture. This requires -access to the cross-compiler and the kernel build tree, and goes along -with the --B CROSS_COMPILE=arch-tool-prefix- and -r /build/tree - -options. -
--modinfo NAME=VALUE - -
-Add the name/value pair as a MODULE_INFO macro call to the generated module. -This may be useful to inform or override various module-related checks in -the kernel. -
-G NAME=VALUE - -
-Sets the value of global variable NAME to VALUE when staprun is invoked. -This applies to scalar variables declared global in the script/tapset. -
-R DIR - -
-Look for the systemtap runtime sources in the given directory. -
-r /DIR - -
-Build for kernel in given build tree. Can also be set with the -SYSTEMTAP_RELEASE - -environment variable. -
-r RELEASE - -
-Build for kernel in build tree -/lib/modules/RELEASE/build. - -Can also be set with the -SYSTEMTAP_RELEASE - -environment variable. -
-m MODULE - -
-Use the given name for the generated kernel object module, instead -of a unique randomized name. The generated kernel object module is -copied to the current directory. -
-d MODULE - -
-Add symbol/unwind information for the given module into the kernel object -module. This may enable symbolic tracebacks from those modules/programs, -even if they do not have an explicit probe placed into them. -
--ldd - -
-Add symbol/unwind information for all shared libraries suspected by -ldd to be necessary for user-space binaries being probe or listed with -the -d option. Caution: this can make the probe modules considerably -larger. -
--all-modules - -
-Equivalent to specifying "-dkernel" and a "-d" for each kernel module that is -currently loaded. Caution: this can make the probe modules considerably -larger. -
-o FILE - -
-Send standard output to named file. In bulk mode, percpu files will -start with FILE_ (FILE_cpu with -F) followed by the cpu number. -This supports strftime(3) formats for FILE. -
-c CMD - -
-Start the probes, run CMD, and exit when CMD finishes. This also has the -effect of setting target() to the pid of the command ran. -
-x PID - -
-Sets target() to PID. This allows scripts to be written that filter on -a specific process. -
-e SCRIPT - -
-Run the given SCRIPT specified on the command line. -
-l PROBE - -
-Instead of running a probe script, just list all available probe -points matching the given single probe point. The pattern may include -wildcards and aliases, but not comma-separated multiple probe points. -The process result code will indicate failure if there are no matches. -
-L PROBE - -
-Similar to "-l", but list probe points and script-level local variables. -
-F - -
-Without -o option, load module and start probes, then detach from the module -leaving the probes running. -With -o option, run staprun in background as a daemon and show its pid. -
-S size[,N] - -
-Sets the maximum size of output file and the maximum number of output files. -If the size of output file will exceed -size - -, systemtap switches output file to the next file. And if the number of -output files exceed -N - -, systemtap removes the oldest output file. You can omit the second argument. -
--skip-badvars - -
-Ignore unresolvable or run-time-inaccessible context variables and -substitute with 0, without errors. -

-

--suppress-handler-errors - -
-Wrap all probe handlers into something like this - -
- -

- -

-
-try { ... } catch { next }
-
-
- -
- - -

- -block, which causes any runtime errors to be quietly suppressed. -Suppressed errors do not count against -MAXERRORS - -limits. In this mode, the -MAXSKIPPED - -limits are also suppressed, so that many errors and skipped probes -may be accumulated during a script's runtime. Any overall counts will -still be reported at shutdown. -

-

--compatible VERSION - -
-Suppress recent script language or tapset changes which are incompatible -with given older version of systemtap. This may be useful if a much older -systemtap script fails to run. See the DEPRECATION section for more -details. -

-

--check-version - -
-This option is used to check if the active script has any constructors -that may be systemtap version specific. See the DEPRECATION section -for more details. -

-

--clean-cache - -
-This option prunes stale entries from the cache directory. This is normally -done automatically after successful runs, but this option will trigger the -cleanup manually and then exit. See the CACHING section for more details about -cache limits. -

-

--color[=WHEN], --colour[=WHEN]
-This option controls coloring of error messages. WHEN can be either "never", -"always", or "auto" (i.e. enable only if at a terminal). If WHEN is missing, -then "always" is assumed. If the option is missing, then "auto" is assumed. -

-Colors can be modified using the SYSTEMTAP_COLORS environment variable. The -format must be of the form - -key1=val1:key2=val2:key3=val3 ...etc. - -Valid keys are - -"error", "warning", "source", "caret", and "token". - -Values constitute Select Graphic Rendition (SGR) parameter(s). Consult the -documentation of your terminal for the SGRs it supports. As an example, the -default colors would be expressed as - -error=01;31:warning=00;33:source=00;34:caret=01:token=01. - -If SYSTEMTAP_COLORS is absent, the default colors will be used. If it is empty -or invalid, coloring is turned off. -

-

--disable-cache - -
-This option disables all use of the cache directory. No files will be either -read from or written to the cache. -

-

--poison-cache - -
-This option treats files in the cache directory as invalid. No files will be -read from the cache, but resulting files from this run will still be written to -the cache. This is meant as a troubleshooting aid when stap's cached behavior -seems to be misbehaving. -

-

--privilege[=stapusr | =stapsys | =stapdev]
-This option instructs stap to examine the script looking for constructs -which are not allowed for the specified privilege level (see UNPRIVILEGED USERS). -Compilation fails if any such -constructs are used. -If stapusr or stapsys are specified when using a compile server -(see --use-server), -the server will examine the script and, if compilation succeeds, the -server will cryptographically sign the resulting kernel module, certifying -that is it safe for use by users at the specified privilege level. -

-If --privilege has not been specified, --pN has not been specified with N < 5, -and the invoking user is not -root, and is not a member of the group stapdev, -then stap will automatically -add the appropriate --privilege option to the options already specified. -

-

--unprivileged - -
-This option is equivalent to --privilege=stapusr. -

-

--use-server[=HOSTNAME[:PORT] | =IP_ADDRESS[:PORT] | =CERT_SERIAL]
-Specify compile-server(s) to be used for compilation and/or in conjunction -with ---list-servers - -and ---trust-servers - -(see below). If no argument is -supplied, then the default in unprivileged mode (see ---privilege) - -is to select compatible servers which are trusted as SSL peers and as -module signers and currently online. Otherwise the default is to select -compatible servers which are trusted as SSL peers -and currently online. ---use-server - -may be -specified more than once, in which case a list of servers is accumulated -in the order specified. Servers may be specified by host name, ip address, or -by certificate serial number (obtained using ---list-servers). - -The latter is most commonly used when adding or revoking -trust in a server (see ---trust-servers - -below). If a server is specified by host name or ip address, then an optional -port number may be specified. This is useful for accessing servers which are -not on the local network or to specify a particular server. -

-IP addresses may be IPv4 or IPv6 addresses. -

-If a particular IPv6 address is link local and exists -on more than one interface, the intended interface may be specified by appending the address with -a percent sign (%) followed by the intended interface name. For example, -"fe80::5eff:35ff:fe07:55ca%eth0". -

-In order to specify a port number with an IPv6 address, it is necessary to enclose the IPv6 address -in square brackets ([]) in order to separate the port number from the rest of the address. For -example, "[fe80::5eff:35ff:fe07:55ca]:5000" or "[fe80::5eff:35ff:fe07:55ca%eth0]:5000". -

-If --use-server has not been specified, --pN has not been specified with N < 5, -and the invoking user not root, -is not a member of the group stapdev, but is a member of the group -stapusr, then stap will automatically -add --use-server to the options already specified. -

-

--use-server-on-error[=yes|=no]
-Instructs stap to retry compilation of a script using a compile server if -compilation on the local host fails in a manner which suggests that it might -succeed using a server. -If this option is not specified, the default is no. -If no argument is provided, then the default -is yes. Compilation will be retried for certain types of errors -(e.g. insufficient data or resources) which may not occur during -re-compilation by a compile -server. Compile servers will be selected automatically for the -re-compilation attempt as if --use-server was specified with no -arguments. -

-

--list-servers[=SERVERS] - -
-Display the status of the requested -SERVERS, - -where -SERVERS - -is a comma-separated -list of server attributes. The list of attributes is combined to filter the -list of servers displayed. Supported attributes are: -
-
-
all - -
-specifies all known servers (trusted SSL peers, trusted module signers, online -servers). -
specified - -
-specifies servers specified using ---use-server. - -
online - -
-filters the output by retaining information about servers which are currently -online. -
trusted - -
-filters the output by retaining information about servers which are trusted as -SSL peers. -
signer - -
-filters the output by retaining information about servers which are trusted as -module signers (see ---privilege). - -
compatible - -
-filters the output by retaining information about servers which are compatible -with the current kernel release and architecture. -
-
- -
-If no argument is provided, then the default is -specified. - -If no servers were specified using ---use-server, - -then the default servers for ---use-server - -are listed. -

-Note that ---list-servers - -uses the -avahi-daemon - -service to detect online servers. If this service is not available, then ---list-servers - -will fail to detect any -online - -servers. In order for ---list-servers - -to detect servers listening on IPv6 addresses, the -avahi-daemon - -configuration file -/etc/avahi/avahi-daemon.conf - -must contain an active "use-ipv6=yes" line. The service must be restarted after adding this line -in order for IPv6 to be enabled. -

-

--trust-servers[=TRUST_SPEC] - -
-Grant or revoke trust in compile-servers, specified using ---use-server - -as specified by TRUST_SPEC, -where TRUST_SPEC is a comma-separated list specifying the trust which is to -be granted or revoked. Supported elements are: -
-
-
ssl - -
-trust the specified servers as SSL peers. -
signer - -
-trust the specified servers as module signers (see ---privilege). - -Only root can specify -signer. - -
all-users - -
-grant trust as an ssl peer for all users on the local host. The default is -to grant trust as an ssl peer for the current user only. Trust as a module -signer is always granted for all users. Only root can specify -all-users. - -
revoke - -
-revoke the specified trust. The default is to grant it. -
no-prompt - -
-do not prompt the user for confirmation before carrying out the requested -action. The default is to prompt the user for confirmation. -
-
- -
-If no argument is provided, then the default is -ssl. - -If no servers were specified using ---use-server, - -then no trust will be granted or revoked. -
-Unless no-prompt has been specified, -the user will be prompted to confirm the trust to be granted or revoked before -the operation is performed. -

-

--dump-probe-types - -
-Dumps a list of supported probe types. If ---privilege=stapusr - -is also specified, the list will be limited to probe types available to unprivileged users. -

-

--remote URL - -
-Set the execution target to the given host. This option may be -repeated to target multiple execution targets. Passes 1-4 are -completed locally as normal to build the script, and then pass 5 will -copy the module to the target and run it. Acceptable URL forms include: -
-
-
[USER@]HOSTNAME, ssh://[USER@]HOSTNAME
-This mode uses ssh, optionally using a username not matching your own. If a -custom ssh_config file is in use, add SendEnv LANG to retain -internationalization functionality. -
libvirt://DOMAIN, libvirt://DOMAIN/LIBVIRT_URI
-This mode uses stapvirt to execute the script on a domain managed by -libvirt. Optionally, LIBVIRT_URI may be specified to connect to a specific -driver and/or a remote host. For example, to connect to the local privileged -QEMU driver, use: - -
- -

- -

-
---remote libvirt://MyDomain/qemu:///system
-
-
- -
- - -

- -See the page at - -<http://libvirt.org/uri.html> - -for supported URIs. Also see stapvirt(1) for more information on how to -prepare the domain for stap probing. -

unix:PATH
-This mode connects to a UNIX socket. This can be used with a QEMU virtio-serial -port for executing scripts inside a running virtual machine. -
direct://
-Special loopback mode to run on the local host. -
-
- -
-

-

--remote-prefix - -
-Prefix each line of remote output with "N: ", where N is the index of the remote -execution target from which the given line originated. -

-

--download-debuginfo[=OPTION] - -
-Enable, disable or set a timeout for the automatic debuginfo downloading feature -offered by abrt as specified by OPTION, where OPTION is one of the following: -
-
-
yes - -
-enable automatic downloading of debuginfo with no timeout. This is the same -as not providing an OPTION value to ---download-debuginfo - -
no - -
-explicitly disable automatic downloading of debuginfo. This is the same as -not using the option at all. -
ask - -
-show abrt output, and ask before continuing download. No timeout will be set. -
<timeout> - -
-specify a timeout as a positive number to stop the download if it is taking -too long. -
-
- -
-

-

--rlimit-as=NUM - -
-Specify the maximum size of the process's virtual memory (address space), -in bytes. If nothing is specified, no limits are imposed. -

-

--rlimit-cpu=NUM - -
-Specify the CPU time limit, in seconds. If nothing is specified, no limits are -imposed. -

-

--rlimit-nproc=NUM - -
-Specify the maximum number of processes that can be created. If nothing is -specified, no limits are imposed. -

-

--rlimit-stack=NUM - -
-Specify the maximum size of the process stack, in bytes. If nothing is specified, -no limits are imposed. -

-

--rlimit-fsize=NUM - -
-Specify the maximum size of files that the process may create, in bytes. If nothing is specified, no limits are -imposed. -

-

--sysroot=DIR - -
-Specify sysroot directory where target files (executables, libraries, etc.) -are located. With -r RELEASE, the sysroot will be searched for the -appropriate kernel build directory. With -r /DIR, however, the sysroot -will not be used to find the kernel build. -

-

--sysenv=VAR=VALUE - -
-Provide an alternate value for an environment variable where the value on a -remote system differs. Path variables (e.g. PATH, LD_LIBRARY_PATH) are assumed -to be relative to the directory provided by --sysroot, if provided. -

-

--suppress-time-limits - -
-Disable -DSTP_NO_OVERLOAD -MAXACTION -MAXTRYLOCK options. This option -requires guru mode. -

-

--runtime=MODE - -
-Set the pass-5 runtime mode. Valid options are kernel (default) -and dyninst. See -ALTERNATE RUNTIMES - -below for more information. -

-

--dyninst - -
-Shorthand for --runtime=dyninst. -

-

-  -

ARGUMENTS

- -

-Any additional arguments on the command line are passed to the script -parser for substitution. See below. -

-  -

SCRIPT LANGUAGE

- -

-The systemtap script language resembles -awk. - -There are two main outermost constructs: probes and functions. Within -these, statements and expressions use C-like operator syntax and -precedence. -

-  -

GENERAL SYNTAX

- -Whitespace is ignored. Three forms of comments are supported: -
-
- -# ... shell style, to the end of line, except for $# and @# - -
- -// ... C++ style, to the end of line - -
- -/* ... C style ... */ - -
- -Literals are either strings enclosed in double-quotes (passing through -the usual C escape codes with backslashes, and with adjacent string -literals glued together, also as in C), or integers (in decimal, -hexadecimal, or octal, using the same notation as in C). All strings -are limited in length to some reasonable value (a few hundred bytes). -Integers are 64-bit signed quantities, although the parser also -accepts (and wraps around) values above positive 2**63. -

- -In addition, script arguments given at the end of the command line may -be inserted. Use -$1 ... $<NN> - -for insertion unquoted, -@1 ... @<NN> - -for insertion as a string literal. The number of arguments may be accessed -through -$# - -(as an unquoted number) or through -@# - -(as a quoted number). These may be used at any place a token may begin, -including within the preprocessing stage. Reference to an argument -number beyond what was actually given is an error. -

-  -

PREPROCESSING

- -A simple conditional preprocessing stage is run as a part of parsing. -The general form is similar to the -cond ? exp1 : exp2 - -ternary operator: - -
- -

- -

-
-%( CONDITION %? TRUE-TOKENS %)
-%( CONDITION %? TRUE-TOKENS %: FALSE-TOKENS %)
-
-
- -
- - -

- -The CONDITION is either an expression whose format is determined by its -first keyword, or a string literals comparison or a numeric literals -comparison. It can be also composed of many alternatives and conjunctions -of CONDITIONs (meant as in previous sentence) using || and && respectively. -However, parentheses are not supported yet, so remembering that conjunction -takes precedence over alternative is important. -

- -If the first part is the identifier -kernel_vr or kernel_v - -to refer to the kernel version number, with ("2.6.13-1.322FC3smp") or -without ("2.6.13") the release code suffix, then -the second part is one of the six standard numeric comparison operators -<, <=, ==, !=, >, and >=, - -and the third part is a string literal that contains an RPM-style -version-release value. The condition is deemed satisfied if the -version of the target kernel (as optionally overridden by the --r - -option) compares to the given version string. The comparison is -performed by the glibc function -strverscmp. - -As a special case, if the operator is for simple equality -(==), - -or inequality -(!=), - -and the third part contains any wildcard characters -(* or ? or [), - -then the expression is treated as a wildcard (mis)match as evaluated -by -fnmatch. - -

- -If, on the other hand, the first part is the identifier -arch - -to refer to the processor architecture (as named by the kernel -build system ARCH/SUBARCH), then the second -part is one of the two string comparison operators -== or !=, - -and the third part is a string literal for matching it. This -comparison is a wildcard (mis)match. -

- -Similarly, if the first part is an identifier like -CONFIG_something - -to refer to a kernel configuration option, then the second part is -== or !=, - -and the third part is a string literal for matching the value -(commonly "y" or "m"). Nonexistent or unset kernel configuration -options are represented by the empty string. This comparison is also -a wildcard (mis)match. -

- -If the first part is the identifier -systemtap_v, - -the test refers to the systemtap compatibility version, which may be -overridden for old scripts with the ---compatible - -flag. The comparison operator is as is for -kernel_v - -and the right operand is a version string. See also the DEPRECATION -section below. -

- -If the first part is the identifier -systemtap_privilege, - -the test refers to the privilege level that the systemtap script is -compiled with. Here the second part is -== or !=, - -and the third part is a string literal, either "stapusr" or "stapsys" -or "stapdev". -

- -If the first part is the identifier -guru_mode, - -the test refers to if the systemtap script is -compiled with guru_mode. Here the second part is -== or !=, - -and the third part is a number, either 1 or 0. -

- -If the first part is the identifier -runtime, - -the test refers to the systemtap runtime mode. See -ALTERNATE RUNTIMES - -below for more information on runtimes. -The second -part is one of the two string comparison operators -== or !=, - -and the third part is a string literal for matching it. This -comparison is a wildcard (mis)match. -

- -Otherwise, the CONDITION is expected to be a comparison between two string -literals or two numeric literals. In this case, the arguments are the only -variables usable. -

- -The TRUE-TOKENS and FALSE-TOKENS are zero or more general parser -tokens (possibly including nested preprocessor conditionals), and are -passed into the input stream if the condition is true or false. For -example, the following code induces a parse error unless the target -kernel version is newer than 2.6.5: - -
- -

- -

-
-%( kernel_v <= "2.6.5" %? **ERROR** %) # invalid token sequence
-
-
- -
- - -

- -The following code might adapt to hypothetical kernel version drift: - -
- -

- -

-
-probe kernel.function (
-  %( kernel_v <= "2.6.12" %? "__mm_do_fault" %:
-     %( kernel_vr == "2.6.13*smp" %? "do_page_fault" %:
-        UNSUPPORTED %) %)
-) { /* ... */ }
-
-%( arch == "ia64" %?
-   probe syscall.vliw = kernel.function("vliw_widget") {}
-%)
-
-
- -
- - -

- -

-  -

PREPROCESSOR MACROS

- -The preprocessor also supports a simple macro facility, run as a -separate pass before conditional preprocessing. -

- -Macros are defined using the following construct: - -
- -

- -

-
-@define NAME %( BODY %)
-@define NAME(PARAM_1, PARAM_2, ...) %( BODY %)
-
-
- -
- - -

- -Macros, and parameters inside a macro body, are both invoked by -prefixing the macro name with an @ symbol: - -
- -

- -

-
-@define foo %( x %)
-@define add(a,b) %( ((@a)+(@b)) %)
-
-   @foo = @add(2,2)
-
-
- -
- - -

- -

- -Macro expansion is currently performed in a separate pass before -conditional compilation. Therefore, both TRUE- and FALSE-tokens in -conditional expressions will be macroexpanded regardless of how the -condition is evaluated. This can sometimes lead to errors: - -
- -

- -

-
-// The following results in a conflict:
-%( CONFIG_UTRACE == "y" %?
-    @define foo %( process.syscall %)
-%:
-    @define foo %( **ERROR** %)
-%)
-
-// The following works properly as expected:
-@define foo %(
-  %( CONFIG_UTRACE == "y" %? process.syscall %: **ERROR** %)
-%)
-
-
- -
- - -

- -The first example is incorrect because both @defines are evaluated in -a pass prior to the conditional being evaluated. -

-Normally, a macro definition is local to the file it occurs in. Thus, -defining a macro in a tapset does not make it available to the user of -the tapset. Publically available library macros can be defined by -including .stpm files on the tapset search path. These files may only -contain @define constructs, which become visible across all tapsets -and user scripts. -

-  -

VARIABLES

- -Identifiers for variables and functions are an alphanumeric sequence, -and may include "_" and "$" characters. They may not start with a -plain digit, as in C. Each variable is by default local to the probe -or function statement block within which it is mentioned, and therefore -its scope and lifetime is limited to a particular probe or function -invocation. - -

- -Scalar variables are implicitly typed as either string or integer. -Associative arrays also have a string or integer value, and a -tuple of strings and/or integers serving as a key. Here are a -few basic expressions. - -
- -

- -

-
-var1 = 5
-var2 = "bar"
-array1 [pid()] = "name"     # single numeric key
-array2 ["foo",4,i++] += 5   # vector of string/num/num keys
-if (["hello",5,4] in array2) println ("yes")  # membership test
-
-
- -
- - -

- -

- -The translator performs -type inference - -on all identifiers, including array indexes and function parameters. -Inconsistent type-related use of identifiers signals an error. -

- -Variables may be declared global, so that they are shared amongst all -probes and live as long as the entire systemtap session. There is one -namespace for all global variables, regardless of which script file -they are found within. Concurrent access to global variables is -automatically protected with locks, see the -SAFETY AND SECURITY - -section for more details. A global declaration may be written at the -outermost level anywhere, not within a block of code. Global -variables which are written but never read will be displayed -automatically at session shutdown. The translator will -infer for each its value type, and if it is used as an array, its key -types. Optionally, scalar globals may be initialized with a string -or number literal. The following declaration marks variables as global. - -
- -

- -

-
-global var1, var2, var3=4
-
-
- -
- - -

- -

- -Global variables can also be set as module options. One can do this by either -using the -G option, or the module must first be compiled using stap -p4. -Global variables can then be set on the command line when calling staprun on -the module generated by stap -p4. See -staprun(8) - -for more information. -

- -Arrays are limited in size by the MAXMAPENTRIES variable -- see the -SAFETY AND SECURITY - -section for details. Optionally, global arrays may be declared with a -maximum size in brackets, overriding MAXMAPENTRIES for that array only. -Note that this doesn't indicate the type of keys for the array, just the -size. - -
- -

- -

-
-global tiny_array[10], normal_array, big_array[50000]
-
-
- -
- - -

- -

- -Arrays may be configured for wrapping using the '%' suffix. This -causes older elements to be overwritten if more elements are inserted -than the array can hold. This works for both associative and statistics -typed arrays. - -
- -

- -

-
-global wrapped_array1%[10], wrapped_array2%
-
-
- -
- - -

- -

-  -

STATEMENTS

- -Statements enable procedural control flow. They may occur within -functions and probe handlers. The total number of statements executed -in response to any single probe event is limited to some number -defined by a macro in the translated C code, and is in the -neighbourhood of 1000. -
-
EXP
-Execute the string- or integer-valued expression and throw away -the value. -
{ STMT1 STMT2 ... } - -
-Execute each statement in sequence in this block. Note that -separators or terminators are generally not necessary between statements. -
; - -
-Null statement, do nothing. It is useful as an optional separator between -statements to improve syntax-error detection and to handle certain -grammar ambiguities. -
if (EXP) STMT1 [ else STMT2 ] - -
-Compare integer-valued EXP to zero. Execute the first (non-zero) -or second STMT (zero). -
while (EXP) STMT - -
-While integer-valued EXP evaluates to non-zero, execute STMT. -
for (EXP1; EXP2; EXP3) STMT - -
-Execute EXP1 as initialization. While EXP2 is non-zero, execute -STMT, then the iteration expression EXP3. -
foreach (VAR in ARRAY [ limit EXP ]) STMT - -
-Loop over each element of the named global array, assigning current -key to VAR. The array may not be modified within the statement. -By adding a single -+ or - - -operator after the VAR or the ARRAY identifier, the iteration will -proceed in a sorted order, by ascending or descending index or value. -If the array contains statistics aggregates, adding the desired -@operator - -between the ARRAY identifier and the -+ or - - -will specify the sorting aggregate function. See the STATISTICS -section below for the ones available. Default is -@count. - -Using the optional -limit - -keyword limits the number of loop iterations to EXP times. EXP is -evaluated once at the beginning of the loop. -
foreach ([VAR1, VAR2, ...] in ARRAY [ limit EXP ]) STMT - -
-Same as above, used when the array is indexed with a tuple of keys. -A sorting suffix may be used on at most one VAR or ARRAY identifier. -
foreach (VALUE = VAR in ARRAY [ limit EXP ]) STMT - -
-This variant of foreach saves current value into VALUE on each -iteration, so it is the same as ARRAY[VAR]. This also works with a -tuple of keys. Sorting suffixes on VALUE have the same effect as on ARRAY. -
break, continue - -
-Exit or iterate the innermost nesting loop -(while or for or foreach) - -statement. -
return EXP - -
-Return EXP value from enclosing function. If the function's value is -not taken anywhere, then a return statement is not needed, and the -function will have a special "unknown" type with no return value. -
next - -
-Return now from enclosing probe handler. This is especially useful in -probe aliases that apply event filtering predicates. -
try { STMT1 } catch { STMT2 } - -
-Run the statements in the first block. Upon any run-time errors, abort -STMT1 and start executing STMT2. Any errors in STMT2 will propagate to -outer try/catch blocks, if any. -
try { STMT1 } catch(VAR) { STMT2 } - -
-Same as above, plus assign the error message to the string scalar variable VAR. -
delete ARRAY[INDEX1, INDEX2, ...] - -
-Remove from ARRAY the element specified by the index tuple. The value will no -longer be available, and subsequent iterations will not report the element. -It is not an error to delete an element that does not exist. -
delete ARRAY - -
-Remove all elements from ARRAY. -
delete SCALAR - -
-Removes the value of SCALAR. Integers and strings are cleared to 0 and "" -respectively, while statistics are reset to the initial empty state. -

-

-  -

EXPRESSIONS

- -Systemtap supports a number of operators that have the same general syntax, -semantics, and precedence as in C and awk. Arithmetic is performed as per -typical C rules for signed integers. Division by zero or overflow is -detected and results in an error. -
-
binary numeric operators
-* / % + - >> << & ^ | && || - -
binary string operators
-. - -(string concatenation) -
numeric assignment operators
-= *= /= %= += -= >>= <<= &= ^= |= - -
string assignment operators
-= .= - -
unary numeric operators
-+ - ! ~ ++ -- - -
binary numeric, string comparison or regex matching operators
-< > <= >= == != =~ !~ - -
ternary operator
-cond ? exp1 : exp2 - -
grouping operator
-( exp ) - -
function call
-fn ([ arg1, arg2, ... ]) - -
array membership check
-exp in array - -
- -[exp1, exp2, ...] in array - -

-

-  -

REGULAR EXPRESSION MATCHING

- -The scripting language supports regular expression matching. -The basic syntax is as follows: - -
- -

- -

-
-exp =~ regex
-exp !~ regex
-
-
- -
- - -

- -(The first operand must be an expression evaluating to a string; the -second operand must be a string literal containing a syntactically -valid regular expression.) -

- -The regular expression syntax supports most of the features of POSIX -Extended Regular Expressions, except for subexpression reuse ("\1") -functionality. The ability to capture and extract the contents of the -matched string and subexpressions has not yet been implemented. -

-  -

PROBES

- -The main construct in the scripting language identifies probes. -Probes associate abstract events with a statement block ("probe -handler") that is to be executed when any of those events occur. The -general syntax is as follows: - -
- -

- -

-
-probe PROBEPOINT [, PROBEPOINT] { [STMT ...] }
-
-
- -
- - -

- -

- -Events are specified in a special syntax called "probe points". There -are several varieties of probe points defined by the translator, and -tapset scripts may define further ones using aliases. Probe points -may be wildcarded, grouped, or listed in preference sequences, or -declared optional. More details on probe point syntax and semantics -are listed on the -stapprobes(3stap) - -manual page. -

- -The probe handler is interpreted relative to the context of each -event. For events associated with kernel code, this context may -include -variables - -defined in the -source code - -at that spot. These "context variables" are presented to the script -as variables whose names are prefixed with "$". They may be accessed -only if the kernel's compiler preserved them despite optimization. -This is the same constraint that a debugger user faces when working -with optimized code. In addition, the objects must exist in paged-in -memory at the moment of the systemtap probe handler's execution, -because systemtap must not cause (suppresses) any additional paging. -Some probe types have very little context. -See the -stapprobes(3stap) - -man pages to see the kinds of context variables available at each kind -of probe point. -

- -New probe points may be defined using "aliases". Probe point aliases -look similar to probe definitions, but instead of activating a probe -at the given point, it just defines a new probe point name as an alias -to an existing one. There are two types of alias, i.e. the prologue -style and the epilogue style which are identified by "=" and "+=" -respectively. -

- -For prologue style alias, the statement block that follows an alias -definition is implicitly added as a prologue to any probe that refers -to the alias. While for the epilogue style alias, the statement block -that follows an alias definition is implicitly added as an epilogue to -any probe that refers to the alias. For example: - -
- -

- -

-
-probe syscall.read = kernel.function("sys_read") {
-  fildes = $fd
-  if (execname() == "init") next  # skip rest of probe
-}
-
-
- -
- - -

- -defines a new probe point - -syscall.read, - - -which expands to - -kernel.function(sys_read), - - -with the given statement as a prologue, which is useful to predefine -some variables for the alias user and/or to skip probe processing -entirely based on some conditions. And - -
- -

- -

-
-probe syscall.read += kernel.function("sys_read") {
-  if (tracethis) println ($fd)
-}
-
-
- -
- - -

- -defines a new probe point with the given statement as an epilogue, which -is useful to take actions based upon variables set or left over by the -the alias user. Please note that in each case, the statements in the -alias handler block are treated ordinarily, so that variables assigned -there constitute mere initialization, not a macro substitution. -

-An alias is used just like a built-in probe type. - -
- -

- -

-
-probe syscall.read {
-  printf("reading fd=%d, fildes)
-  if (fildes > 10) tracethis = 1
-}
-
-
- -
- - -

- -

-  -

FUNCTIONS

- -Systemtap scripts may define subroutines to factor out common work. -Functions take any number of scalar (integer or string) arguments, and -must return a single scalar (integer or string). An example function -declaration looks like this: - -
- -

- -

-
-function thisfn (arg1, arg2) {
-   return arg1 + arg2
-}
-
-
- -
- - -

- -Note the general absence of type declarations, which are instead -inferred by the translator. However, if desired, a function -definition may include explicit type declarations for its return value -and/or its arguments. This is especially helpful for embedded-C -functions. In the following example, the type inference engine need -only infer type type of arg2 (a string). - -
- -

- -

-
-function thatfn:string (arg1:long, arg2) {
-   return sprint(arg1) . arg2
-}
-
-
- -
- - -

- -Functions may call others or themselves -recursively, up to a fixed nesting limit. This limit is defined by -a macro in the translated C code and is in the neighbourhood of 10. -

-  -

PRINTING

- -There are a set of function names that are specially treated by the -translator. They format values for printing to the standard systemtap -output stream in a more convenient way. The -sprint* - -variants return the formatted string instead of printing it. -
-
print, sprint - -
-Print one or more values of any type, concatenated directly together. -
println, sprintln - -
-Print values like -print and sprint, - -but also append a newline. -
printd, sprintd - -
-Take a string delimiter and two or more values of any type, and print the -values with the delimiter interposed. The delimiter must be a literal -string constant. -
printdln, sprintdln - -
-Print values with a delimiter like -printd and sprintd, - -but also append a newline. -
printf, sprintf - -
-Take a formatting string and a number of values of corresponding types, -and print them all. The format must be a literal string constant. -
-

- -The -printf - -formatting directives similar to those of C, except that they are -fully type-checked by the translator: -

-
-
%b
-Writes a binary blob of the value given, instead of ASCII text. The width specifier determines the number of bytes to write; valid specifiers are %b %1b %2b %4b %8b. Default (%b) is 8 bytes. -
%c
-Character. -
%d,%i
-Signed decimal. -
%m
-Safely reads kernel memory at the given address, outputs its content. The optional precision specifier (not field width) determines the number of bytes to read - default is 1 byte. %10.4m prints 4 bytes of the memory in a 10-character-wide field. -
%M
-Same as %m, but outputs in hexadecimal. The minimal size of output is double the optional precision specifier - default is 1 byte (2 hex chars). %10.4M prints 4 bytes of the memory as 8 hexadecimal characters in a 10-character-wide field. -
%o
-Unsigned octal. -
%p
-Unsigned pointer address. -
%s
-String. -
%u
-Unsigned decimal. -
%x
-Unsigned hex value, in all lower-case. -
%X
-Unsigned hex value, in all upper-case. -
%%
-Writes a %. -
-
- -

- -The -# - -flag selects the alternate forms. For octal, this prefixes a 0. For hex, this -prefixes 0x or 0X, depending on case. For characters, this escapes -non-printing values with either C-like escapes or raw octal. -

- -Examples: - -
- -

- -

-
-a = "alice", b = "bob", p = 0x1234abcd, i = 123, j = -1, id[a] = 1234, id[b] = 4567
-print("hello")
-        Prints: hello
-println(b)
-        Prints: bob\n
-println(a . " is " . sprint(16))
-        Prints: alice is 16
-foreach (name in id)  printdln("|", strlen(name), name, id[name])
-        Prints: 5|alice|1234\n3|bob|4567
-printf("%c is %s; %x or %X or %p; %d or %u\n",97,a,p,p,p,j,j)
-        Prints: a is alice; 1234abcd or 1234ABCD or 0x1234abcd; -1 or 18446744073709551615\n
-printf("2 bytes of kernel buffer at address %p: %2m", p, p)
-        Prints: 2 byte of kernel buffer at address 0x1234abcd: <binary data>
-printf("%4b", p)
-        Prints (these values as binary data): 0x1234abcd
-printf("%#o %#x %#X\n", 1, 2, 3)
-        Prints: 01 0x2 0X3
-printf("%#c %#c %#c\n", 0, 9, 42)
-        Prints: \000 \t *
-
-
- -
- - -

- -

-  -

STATISTICS

- -It is often desirable to collect statistics in a way that avoids the -penalties of repeatedly exclusive locking the global variables those -numbers are being put into. Systemtap provides a solution using a -special operator to accumulate values, and several pseudo-functions to -extract the statistical aggregates. -

- -The aggregation operator is -<<<, - -and resembles an assignment, or a C++ output-streaming operation. -The left operand specifies a scalar or array-index lvalue, which must -be declared global. The right operand is a numeric expression. The -meaning is intuitive: add the given number to the pile of numbers to -compute statistics of. (The specific list of statistics to gather -is given separately, by the extraction functions.) - -
- -

- -

-
-foo <<< 1
-stats[pid()] <<< memsize
-
-
- -
- - -

- -

- -The extraction functions are also special. For each appearance of a -distinct extraction function operating on a given identifier, the -translator arranges to compute a set of statistics that satisfy it. -The statistics system is thereby "on-demand". Each execution of -an extraction function causes the aggregation to be computed for -that moment across all processors. -

- -Here is the set of extractor functions. The first argument of each is -the same style of lvalue used on the left hand side of the accumulate -operation. The -@count(v), @sum(v), @min(v), @max(v), @avg(v) - -extractor functions compute the number/total/minimum/maximum/average -of all accumulated values. The resulting values are all simple -integers. Arrays containing aggregates may be sorted and iterated. -See the -foreach - -construct above. -

- -Histograms are also available, but are more complicated because they -have a vector rather than scalar value. -@hist_linear(v,start,stop,interval) - -represents a linear histogram from "start" to "stop" by increments -of "interval". The interval must be positive. Similarly, -@hist_log(v) - -represents a base-2 logarithmic histogram. Printing a histogram -with the -print - -family of functions renders a histogram object as a tabular -"ASCII art" bar chart. - -
- -

- -

-
-probe timer.profile {
-  x[1] <<< pid()
-  x[2] <<< uid()
-  y <<< tid()
-}
-global x // an array containing aggregates
-global y // a scalar
-probe end {
-  foreach ([i] in x @count+) {
-     printf ("x[%d]: avg %d = sum %d / count %d\n",
-             i, @avg(x[i]), @sum(x[i]), @count(x[i]))
-     println (@hist_log(x[i]))
-  }
-  println ("y:")        
-  println (@hist_log(y))  
-}
-
-
- -
- - -

- -

-  -

TYPECASTING

- -Once a pointer has been saved into a script integer variable, the -translator loses the type information necessary to access members from -that pointer. Using the -@cast() - -operator tells the translator how to read a pointer. - -
- -

- -

-
-@cast(p, "type_name"[, "module"])->member
-
-
- -
- - -

- -

- -This will interpret -p - -as a pointer to a struct/union named -type_name - -and dereference the -member - -value. Further -->subfield - -expressions may be appended to dereference more levels. - -NOTE: -the same dereferencing operator --> - -is used to refer to both direct containment or pointer indirection. -Systemtap automatically determines which. The optional -module - -tells the translator where to look for information about that type. -Multiple modules may be specified as a list with -: - -separators. If the module is not specified, it will default either to -the probe module for dwarf probes, or to "kernel" for functions and all -other probes types. -

- -The translator can create its own module with type information from a header -surrounded by angle brackets, in case normal debuginfo is not available. For -kernel headers, prefix it with "kernel" to use the appropriate build system. -All other headers are build with default GCC parameters into a user module. -Multiple headers may be specified in sequence to resolve a codependency. - -
- -

- -

-
-@cast(tv, "timeval", "<sys/time.h>")->tv_sec
-@cast(task, "task_struct", "kernel<linux/sched.h>")->tgid
-@cast(task, "task_struct",
-      "kernel<linux/sched.h><linux/fs_struct.h>")->fs->umask
-
-
- -
- - -

- -Values acquired by -@cast - -may be pretty-printed by the - -$ " and " $$ -suffix operators, the same way as described in the CONTEXT VARIABLES -section of the -stapprobes(3stap) - -manual page. -

-

- -When in guru mode, the translator will also allow scripts to assign new -values to members of typecasted pointers. -

- -Typecasting is also useful in the case of -void* - -members whose type may be determinable at runtime. - -
- -

- -

-
-probe foo {
-  if ($var->type == 1) {
-    value = @cast($var->data, "type1")->bar
-  } else {
-    value = @cast($var->data, "type2")->baz
-  }
-  print(value)
-}
-
-
- -
- - -

- -

-  -

EMBEDDED C

- -When in guru mode, the translator accepts embedded code in the -top level of the script. Such code is enclosed between -%{ - -and -%} - -markers, and is transcribed verbatim, without analysis, in some -sequence, into the top level of the generated C code. At the -outermost level, this may be useful to add -#include - -instructions, and any auxiliary definitions for use by other embedded -code. -

- -Another place where embedded code is permitted is as a function body. -In this case, the script language body is replaced entirely by a piece -of C code enclosed again between -%{ and %} - -markers. -This C code may do anything reasonable and safe. There are a number -of undocumented but complex safety constraints on atomicity, -concurrency, resource consumption, and run time limits, so this -is an advanced technique. -

- -The memory locations set aside for input and output values -are made available to it using macros -STAP_ARG_* - -and -STAP_RETVALUE. - -Errors may be signalled with STAP_ERROR. The function may return -early with STAP_RETURN. Here are some examples: - -
- -

- -

-
-function integer_ops (val) %{
-  STAP_RETVALUE = STAP_ARG_val + 1;
-  if (STAP_RETVALUE == 4)
-      STAP_ERROR("wrong guess: %d", (int) STAP_RETVALUE);
-  if (STAP_RETVALUE == 3)
-      STAP_RETURN(0);
-  STAP_RETVALUE ++;
-%}
-function string_ops (val) %{
-  strlcpy (STAP_RETVALUE, STAP_ARG_val, MAXSTRINGLEN);
-  strlcat (STAP_RETVALUE, "one", MAXSTRINGLEN);
-  if (strcmp (STAP_RETVALUE, "three-two-one"))
-      STAP_RETURN("parameter should be three-two-");
-%}
-function no_ops () %{
-    STAP_RETURN(); /* function inferred with no return value */
-%}
-
-
- -
- - -

- -The function argument and return value types have to be inferred by -the translator from the call sites in order for this to work. The -user should examine C code generated for ordinary script-language -functions in order to write compatible embedded-C ones. -

- -The last place where embedded code is permitted is as an expression rvalue. -In this case, the C code enclosed between -%{ and %} - -markers is interpreted as an ordinary expression value. It is assumed -to be a normal 64-bit signed number, unless the marker -/* string */ - -is included, in which case it's treated as a string. - -
- -

- -

-
-function add_one (val) {
-  return val + %{ 1 %}
-}
-function add_string_two (val) {
-  return val . %{ /* string */ "two" %}
-}
-
-
- -
- - -

- -

- -The embedded-C code may contain markers to assert optimization -and safety properties. -

-
/* pure */ - -
-means that the C code has no side effects and may be elided entirely if its -value is not used by script code. -
/* unprivileged */ - -
-means that the C code is so safe that even unprivileged users are permitted -to use it. -
/* myproc-unprivileged */ - -
-means that the C code is so safe that even unprivileged users are permitted -to use it, provided that the target of the current probe is within the user's -own process. -
/* guru */ - -
-means that the C code is so unsafe that a systemtap user must specify --g - -(guru mode) to use this. -
/* unmangled */ - -
-in an embedded-C function, means that the legacy (pre-1.8) argument -access syntax should be made available inside the function. Hence, in -addition to -STAP_ARG_foo - -and -STAP_RETVALUE - -one can use -THIS->foo - -and -THIS->__retvalue - -respectively inside the function. This is useful for quickly migrating code written for SystemTap version 1.7 and earlier. -
/* string */ - -
-in embedded-C expressions only, means that the expression has -const char * - -type and should be treated as a string value, instead of -the default long numeric. -

-

-  -

BUILT-INS

- -A set of builtin probe point aliases are provided -by the scripts installed in the directory specified in the -stappaths(7) - -manual page. The functions are described in the -stapprobes(3stap) - -manual page. -

-  -

PROCESSING

- -The translator begins pass 1 by parsing the given input script, -and all scripts (files named -*.stp) - -found in a tapset directory. The directories listed -with --I - -are processed in sequence, each processed in "guru mode". For each -directory, a number of subdirectories are also searched. These -subdirectories are derived from the selected kernel version (the --R - -option), -in order to allow more kernel-version-specific scripts to override less -specific ones. For example, for a kernel version -2.6.12-23.FC3 - -the following patterns would be searched, in sequence: -2.6.12-23.FC3/*.stp, - -2.6.12/*.stp, - -2.6/*.stp, - -and finally -*.stp. - -Stopping the translator after pass 1 causes it to print the parse trees. -

-

- -In pass 2, the translator analyzes the input script to resolve symbols -and types. References to variables, functions, and probe aliases that -are unresolved internally are satisfied by searching through the -parsed tapset script files. If any tapset script file is selected -because it defines an unresolved symbol, then the entirety of that -file is added to the translator's resolution queue. This process -iterates until all symbols are resolved and a subset of tapset script -files is selected. -

- -Next, all probe point descriptions are validated -against the wide variety supported by the translator. Probe points that -refer to code locations ("synchronous probe points") require the -appropriate kernel debugging information to be installed. In the -associated probe handlers, target-side variables (whose names begin -with "$") are found and have their run-time locations decoded. -

- -Next, all probes and functions are analyzed for optimization -opportunities, in order to remove variables, expressions, and -functions that have no useful value and no side-effect. Embedded-C -functions are assumed to have side-effects unless they include the -magic string -/* pure */. - -Since this optimization can hide latent code errors such as type -mismatches or invalid $context variables, it sometimes may be useful -to disable the optimizations with the --u - -option. -

- -Finally, all variable, function, parameter, array, and index types are -inferred from context (literals and operators). Stopping the -translator after pass 2 causes it to list all the probes, functions, -and variables, along with all inferred types. Any inconsistent or -unresolved types cause an error. -

-

- -In pass 3, the translator writes C code that represents the actions -of all selected script files, and creates a -Makefile - -to build that into a kernel object. These files are placed into a -temporary directory. Stopping the translator at this point causes -it to print the contents of the C file. -

-

- -In pass 4, the translator invokes the Linux kernel build system to -create the actual kernel object file. This involves running -make - -in the temporary directory, and requires a kernel module build -system (headers, config and Makefiles) to be installed in the usual -spot -/lib/modules/VERSION/build. - -Stopping the translator after pass 4 is the last chance before -running the kernel object. This may be useful if you want to -archive the file. -

-

- -In pass 5, the translator invokes the systemtap auxiliary program -staprun - -program for the given kernel object. This program arranges to load -the module then communicates with it, copying trace data from the -kernel into temporary files, until the user sends an interrupt signal. -Any run-time error encountered by the probe handlers, such as running -out of memory, division by zero, exceeding nesting or runtime limits, -results in a soft error indication. Soft errors in excess of -MAXERRORS block of all subsequent probes (except error-handling -probes), and terminate the session. Finally, -staprun - -unloads the module, and cleans up. -

-  -

ABNORMAL TERMINATION

- -

-One should avoid killing the stap process forcibly, for example with -SIGKILL, because the stapio process (a child process of the stap -process) and the loaded module may be left running on the system. If -this happens, send SIGTERM or SIGINT to any remaining stapio -processes, then use rmmod to unload the systemtap module. -

-

-  -

EXAMPLES

- -See the -stapex(3stap) - -manual page for a collection of samples. -

-  -

CACHING

- -The systemtap translator caches the pass 3 output (the generated C -code) and the pass 4 output (the compiled kernel module) if pass 4 -completes successfully. This cached output is reused if the same -script is translated again assuming the same conditions exist (same kernel -version, same systemtap version, etc.). Cached files are stored in -the -$SYSTEMTAP_DIR/cache - -directory. The cache can be limited by having the file -cache_mb_limit - -placed in the cache directory (shown above) containing only an ASCII -integer representing how many MiB the cache should not exceed. In the -absence of this file, a default will be created with the limit set to 256MiB. -This is a 'soft' limit in that the cache will be cleaned after a new entry -is added if the cache clean interval is exceeded, so the total cache size may -temporarily exceed this limit. This interval can be specified by having the -file -cache_clean_interval_s - -placed in the cache directory (shown above) containing only an ASCII integer -representing the interval in seconds. In the absence of this file, a default -will be created with the interval set to 30 s. -

-  -

SAFETY AND SECURITY

- -Systemtap is an administrative tool. It exposes kernel internal data -structures and potentially private user information. -

-To actually run the kernel objects it builds, a user must be one of -the following: -

-
-the root user; -
-a member of the -stapdev - -and -stapusr - -groups; -
-a member of the -stapsys - -and -stapusr - -groups; or -
-a member of the -stapusr - -group. -
-

- -The root user or a user who is a member of both the -stapdev - -and -stapusr - -groups can build and run any systemtap script. -

- -A user who is a member of both the -stapsys - -and -stapusr - -groups can only use pre-built modules under the following conditions: -

-
-The module has been signed by a trusted signer. Trusted signers are normally -systemtap compile-servers which sign modules when the --privilege option is -specified by the client. See the -stap-server(8) - -manual page for more information. -
-The module was built using the --privilege=stapsys or the --privilege=stapusr -options. -
-

- -Members of only the -stapusr - -group can only use pre-built modules under the following conditions: -

-
-The module is located in -the /lib/modules/VERSION/systemtap directory. This directory -must be owned by root and not be world writable. -
-

- -or -

-
-The module has been signed by a trusted signer. Trusted signers are normally -systemtap compile-servers which sign modules when the --privilege option is -specified by the client. See the -stap-server(8) - -manual page for more information. -
-The module was built using the FI--privilege=stapusr option. -
-

- -The kernel modules generated by -stap - -program are run by the -staprun - -program. The latter is a part of the Systemtap package, dedicated to -module loading and unloading (but only in the white zone), and -kernel-to-user data transfer. Since -staprun - -does not perform any additional security checks on the kernel objects -it is given, it would be unwise for a system administrator to add -untrusted users to the -stapdev - -or -stapusr - -groups. -

- -The translator asserts certain safety constraints. It aims to ensure -that no handler routine can run for very long, allocate memory, -perform unsafe operations, or in unintentionally interfere with the -kernel. Uses of script global variables are automatically read/write -locked as appropriate, to protect against manipulation by concurrent probe -handlers. (Deadlocks are detected with timeouts. Use the --t - -flag to receive reports of excessive lock contention.) Use of guru mode -constructs such as embedded C can violate these constraints, leading -to kernel crash or data corruption. -

- -The resource use limits are set by macros in the generated C code. -These may be overridden with the --D - -flag. A selection of these is as follows: -

-
MAXNESTING
-Maximum number of nested function calls. Default determined by -script analysis, with a bonus 10 slots added for recursive -scripts. -
MAXSTRINGLEN
-Maximum length of strings, default 128. -
MAXTRYLOCK
-Maximum number of iterations to wait for locks on global variables -before declaring possible deadlock and skipping the probe, default 1000. -
MAXACTION
-Maximum number of statements to execute during any single probe hit -(with interrupts disabled), -default 1000. -
MAXACTION_INTERRUPTIBLE
-Maximum number of statements to execute during any single probe hit -which is executed with interrupts enabled (such as begin/end probes), -default (MAXACTION * 10). -
MAXBACKTRACE
-Maximum number of stack frames that will be be processed by the stap -runtime unwinder as produced by the backtrace functions in the -[u]context-unwind.stp tapsets, default 20. -
MAXMAPENTRIES
-Default maximum number of rows in any single global array, default 2048. -Individual arrays may be declared with a larger or smaller limit instead: - -
- -

- -

-
-global big[10000],little[5]
-
-
- -
- - -

- -or denoted with -% - -to make them wrap-around automatically. -

MAXERRORS
-Maximum number of soft errors before an exit is triggered, default 0, which -means that the first error will exit the script. Note that with the ---suppress-handler-errors - -option, this limit is not enforced. -
MAXSKIPPED
-Maximum number of skipped probes before an exit is triggered, default 100. -Running systemtap with -t (timing) mode gives more details about skipped -probes. With the default -DINTERRUPTIBLE=1 setting, probes skipped due to -reentrancy are not accumulated against this limit. Note that with the ---suppress-handler-errors - -option, this limit is not enforced. -
MINSTACKSPACE
-Minimum number of free kernel stack bytes required in order to -run a probe handler, default 1024. This number should be large enough -for the probe handler's own needs, plus a safety margin. -
MAXUPROBES
-Maximum number of concurrently armed user-space probes (uprobes), default -somewhat larger than the number of user-space probe points named in the script. -This pool needs to be potentialy large because individual uprobe objects (about -64 bytes each) are allocated for each process for each matching script-level probe. -
STP_MAXMEMORY
-Maximum amount of memory (in kilobytes) that the systemtap module -should use, default unlimited. The memory size includes the size of -the module itself, plus any additional allocations. This only tracks -direct allocations by the systemtap runtime. This does not track -indirect allocations (as done by kprobes/uprobes/etc. internals). -
STP_PROCFS_BUFSIZE
-Size of procfs probe read buffers (in bytes). Defaults to -MAXSTRINGLEN. - -This value can be overridden on a per-procfs file basis using the -procfs read probe -.maxsize(MAXSIZE) - -parameter. -
-

- -With scripts that contain probes on any interrupt path, it is possible that -those interrupts may occur in the middle of another probe handler. The probe -in the interrupt handler would be skipped in this case to avoid reentrance. -To work around this issue, execute stap with the option --DINTERRUPTIBLE=0 - -to mask interrupts throughout the probe handler. This does add some extra -overhead to the probes, but it may prevent reentrance for common problem -cases. However, probes in NMI handlers and in the callpath of the stap -runtime may still be skipped due to reentrance. -

-

- -Multiple scripts can write data into a relay buffer concurrently. A host -script provides an interface for accessing its relay buffer to guest scripts. -Then, the output of the guests are merged into the output of the host. -To run a script as a host, execute stap with --DRELAYHOST[=name] - -option. The -name - -identifies your host script among several hosts. -While running the host, execute stap with --DRELAYGUEST[=name] - -to add a guest script to the host. -Note that you must unload guests before unloading a host. If there are some -guests connected to the host, unloading the host will be failed. -

-

- -In case something goes wrong with -stap or staprun - -after a probe has already started running, one may safely kill both -user processes, and remove the active probe kernel module with -rmmod. - -Any pending trace messages may be lost. -

-

- -In addition to the methods outlined above, the generated kernel module -also uses overload processing to make sure that probes can't run for -too long. If more than STP_OVERLOAD_THRESHOLD cycles (default -500000000) have been spent in all the probes on a single cpu during -the last STP_OVERLOAD_INTERVAL cycles (default 1000000000), the probes -have overloaded the system and an exit is triggered. -

- -By default, overload processing is turned on for all modules. If you -would like to disable overload processing, define STP_NO_OVERLOAD (or -its alias STAP_NO_OVERLOAD). -

-  -

UNPRIVILEGED USERS

- -

-Systemtap exposes kernel internal data -structures and potentially private user information. Because of this, use of -systemtap's full capabilities are restricted to root and to users who are -members of the groups stapdev and stapusr. -

-However, a restricted set of systemtap's features can be made available to -trusted, unprivileged users. These users are members of the group stapusr -only, or members of the groups stapusr and stapsys. -These users can load systemtap modules which have been compiled and -certified by a trusted systemtap compile-server. See the descriptions of the -options --privilege and --use-server. See -README.unprivileged in the systemtap source code for information about -setting up a trusted compile server. -

-The restrictions enforced when --privilege=stapsys is specified are designed -to prevent unprivileged users from: -

-
-
-harming the system maliciously. -
-
- -

-The restrictions enforced when --privilege=stapusr is specified are designed -to prevent unprivileged users from: -

-
-
-harming the system maliciously. -
-gaining access to information which would not normally be available to an -unprivileged user. -
-disrupting the performance of processes owned by other users of the system. -Some overhead to the system in general is unavoidable since the -unprivileged user's probes -will be triggered at the appropriate times. What we would like to avoid is -targeted interruption of another user's processes which would not normally be -possible by an unprivileged user. -
-
- -

-  -

PROBE RESTRICTIONS

- -A member of the groups stapusr and stapsys may use all probe points. -

- -A member of only the group stapusr may use only the following probes: -

-
-
-begin, begin(n) -
-end, end(n) -
-error(n) -
-never -
-process.*, where the target process is owned by the user. -
-timer.{jiffies,s,sec,ms,msec,us,usec,ns,nsec}(n)* -
-timer.hz(n) -
-
- -

-  -

SCRIPTING LANGUAGE RESTRICTIONS

- -The following scripting language features are unavailable to all unprivileged users: -

-

-
-
-any feature enabled by the Guru Mode (-g) option. -
-embedded C code. -
-
- -

-  -

RUNTIME RESTRICTIONS

- -The following runtime restrictions are placed upon all unprivileged users: -
-
-
-Only the default runtime code (see -R) may be used. -
-
- -

-Additional restrictions are placed on members of only the group stapusr: -

-
-
-Probing of processes owned by other users is not permitted. -
-Access of kernel memory (read and write) is not permitted. -
-
- -

-  -

COMMAND LINE OPTION RESTRICTIONS

- -Some command line options provide access to features which must not be available -to all unprivileged users: -

-

-
-
--g may not be specified. -
-The following options may not be used by the compile-server client: - -
- -

- -

-
-    -a, -B, -D, -I, -r, -R
-
-
- -
- - -

- -

-
- -

-  -

ENVIRONMENT RESTRICTIONS

- -The following environment variables must not be set for all unprivileged users: - -
- -

- -

-
-SYSTEMTAP_RUNTIME
-SYSTEMTAP_TAPSET
-SYSTEMTAP_DEBUGINFO_PATH
-
-
- -
- - -

- -

-  -

TAPSET RESTRICTIONS

- -In general, tapset functions are only available for members of the -group stapusr when they do not gather information that an ordinary -program running with that user's privileges would be denied access to. -

-There are two categories of unprivileged tapset functions. The first -category consists of utility functions that are unconditionally -available to all users; these include such things as: - -
- -

- -

-
-cpu:long ()
-exit ()
-str_replace:string (prnt_str:string, srch_str:string, rplc_str:string)
-
-
- -
- - -

- -

-The second category consists of so-called -myproc-unprivileged - -functions that can only gather information within their own -processes. Scripts that wish to use these functions must test the -result of the tapset function is_myproc and only call these -functions if the result is 1. The script will exit immediately if any -of these functions are called by an unprivileged user within a probe -within a process which is not owned by that user. Examples of -myproc-unprivileged - -functions include: - -
- -

- -

-
-print_usyms (stk:string)
-user_int:long (addr:long)
-usymname:string (addr:long)
-
-
- -
- - -

- -

-A compile error is triggered when any function not in either of the -above categories is used by members of only the group stapusr. -

-No other built-in tapset functions may be used by members of only the -group stapusr. -

-  -

ALTERNATE RUNTIMES

- -

-As described above, systemtap's default runtime mode involves building and -loading kernel modules, with various security tradeoffs presented. Systemtap -now includes a new prototype backend, selected with --runtime=dyninst, -which uses Dyninst to instrument a user's own processes at runtime. This -backend does not use kernel modules, and does not require root privileges, but -is restricted with respect to the kinds of probes and other constructs that a -script may use. -

-The dyninst runtime operates in target-attach mode, so it does require -a -c COMMAND or -x PID process. For example: - -
- -

- -

-
-stap --runtime=dyninst -c 'stap -V' \
-     -e 'probe process.function("main")
-         { println("hi from dyninst!") }'
-
-
- -
- - -

- -

-It may be necessary to disable a conflicting selinux check with - -
- -

- -

-
-# setsebool allow_execstack 1
-
-
- -
- - -

- -

-  -

EXIT STATUS

- -

-The systemtap translator generally returns with a success code of 0 if -the requested script was processed and executed successfully through -the requested pass. Otherwise, errors may be printed to stderr and -a failure code is returned. Use --v - -or --vp N - -to increase (global or per-pass) verbosity to identify the source of the -trouble. -

-In listings mode -(-l and -L), - -error messages are normally suppressed. A success code of 0 is returned -if at least one matching probe was found. -

-A script executing in pass 5 that is interrupted with ^C / SIGINT is -considered to be successful. -

-  -

DEPRECATION

- -

-Over time, some features of the script language and the tapset library -may undergo incompatible changes, so that a script written against -an old version of systemtap may no longer run. In these cases, it may -help to run systemtap with the ---compatible VERSION - -flag, specifying the last known working version. Running -systemtap with the ---check-version - -flag will output a warning if any possible incompatible elements have -been parsed. Deprecation historical details may be found in the NEWS file. -

-  -

FILES

- -
-
Important files and their corresponding paths can be located in the
-stappaths (7) manual page. -

-

-  -

SEE ALSO

- - -
-stapprobes(3stap),
-function::*(3stap),
-probe::*(3stap),
-tapset::*(3stap),
-error::reporting(7stap),
-stappaths(7),
-staprun(8),
-stapdyn(8),
-stapvars(3stap),
-stapex(3stap),
-stap-server(8),
-stap-prep(1),
-awk(1),
-gdb(1)
-
-
  -

BUGS

- -Use the Bugzilla link of the project web page or our mailing list. - -http://sourceware.org/systemtap/,<systemtap@sourceware.org>. - - -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
DESCRIPTION
-
OPTIONS
-
ARGUMENTS
-
SCRIPT LANGUAGE
-
-
GENERAL SYNTAX
-
PREPROCESSING
-
PREPROCESSOR MACROS
-
VARIABLES
-
STATEMENTS
-
EXPRESSIONS
-
REGULAR EXPRESSION MATCHING
-
PROBES
-
FUNCTIONS
-
PRINTING
-
STATISTICS
-
TYPECASTING
-
EMBEDDED C
-
BUILT-INS
-
-
PROCESSING
-
-
ABNORMAL TERMINATION
-
-
EXAMPLES
-
CACHING
-
SAFETY AND SECURITY
-
UNPRIVILEGED USERS
-
-
PROBE RESTRICTIONS
-
SCRIPTING LANGUAGE RESTRICTIONS
-
RUNTIME RESTRICTIONS
-
COMMAND LINE OPTION RESTRICTIONS
-
ENVIRONMENT RESTRICTIONS
-
TAPSET RESTRICTIONS
-
-
ALTERNATE RUNTIMES
-
EXIT STATUS
-
DEPRECATION
-
FILES
-
SEE ALSO
-
BUGS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:25 GMT, March 18, 2014 - - diff --git a/man/stapdyn.8.html b/man/stapdyn.8.html deleted file mode 100644 index 0ae1d6da..00000000 --- a/man/stapdyn.8.html +++ /dev/null @@ -1,250 +0,0 @@ - -Manpage of STAPDYN - -

STAPDYN

-Section: Maintenance Commands (8)
Index -Return to Main Contents
- -  -

NAME

- -stapdyn - systemtap dyninst runtime -

-  -

SYNOPSIS

- -

-
- -stapdyn - -[ -OPTIONS - -] -MODULE - -[ -MODULE-OPTIONS - -] -

-  -

DESCRIPTION

- -

-The -stapdyn - -program is the dyninst back-end of the Systemtap tool. It expects a -shared library produced by the front-end -stap - -tool, when run with ---dyninst. - -

-

- -Splitting the systemtap tool into a front-end and a back-end allows a -user to compile a systemtap script on a development machine that has -the debugging information (need to compile the script) and then -transfer the resulting shared objevct to a production machine that -doesn't have any development tools or debugging information installed. -

- -Please refer to stappaths (7) for the version number, or run -rpm -q systemtap (fedora/red hat) -apt-get -v systemtap (ubuntu) -

-  -

OPTIONS

- -The -stapdyn - -program supports the following options. Any other option -prints a list of supported options. -
-
-v - -
-Verbose mode. -
-V - -
-Print version number and exit. -
-w - -
-Suppress warnings from the script. -
-c CMD - -
-Command CMD will be run and the -stapdyn - -program will exit when CMD -does. The '_stp_target' variable will contain the pid for CMD. -
-x PID - -
-The '_stp_target' variable will be set to PID. -
-o FILE - -
-Send output to FILE. If the module uses bulk mode, the output will -be in percpu files FILE_x(FILE_cpux in background and bulk mode) -where 'x' is the cpu number. This supports strftime(3) formats -for FILE. -
-C WHEN - -
-Control coloring of error messages. WHEN must be either - -"never", "always", or "auto" - -(i.e. enable only if at a terminal). If the option is missing, then "auto" -is assumed. Colors can be modified using the SYSTEMTAP_COLORS environment -variable. See the -stap(1) - -manual page for more information on syntax and behaviour. -
var1=val - -
-Sets the value of global variable var1 to val. Global variables contained -within a script are treated as options and can be set from the -stapdyn command line. -

-

-  -

ARGUMENTS

- -MODULE - -is either a module path or a module name. If it is a module name, -the module will be looked for in the following directory -(where 'VERSION' is the output of "uname -r"): -
-
-/lib/modules/VERSION/systemtap -
-

- -

- $ stap --dyninst -p4 -m mod1 -e 'global var1="foo"; probe begin{printf("%s\n", var1); exit()}' -
- -

- -Running this with an additional module argument: -

- -

- $ stapdyn mod1.so var1="HelloWorld" -
- - HelloWorld -

- -Spaces and exclamation marks currently cannot be passed into global variables -this way. -

-  -

EXAMPLES

- -See the -stapex(3stap) - -manual page for a collection of sample scripts. -

- -Here is a very basic example of how to use -stapdyn. - -First, use -stap - -to compile a script. The -stap - -program will report the pathname to the resulting module. -

- - $ stap --dyninst -p4 -e 'probe begin { printf("Hello World!\n"); exit() }' -
- - /home/user/.systemtap/cache/85/stap_8553d83f78c_265.so -

- -Run -stapdyn - -with the pathname to the module as an argument. -

- - $ stapdyn /home/user/.systemtap/cache/85/stap_8553d83f78c_265.so -
- - Hello World! -

-  -

SAFETY AND SECURITY

- -Systemtap, in DynInst mode, is a developer tool, and runs completely -unprivileged. The Linux kernel will only permit one's own processes -to be accessed, which is enforced by the -ptrace(2) - -system call. -See the -stap(1) - -manual page for additional information on safety and security. -

-  -

SEE ALSO

- -stap(1), - -stapprobes(3stap), - -stap-server(8), - -staprun(8), - -stapex(3stap) - -

-  -

BUGS

- -Use the Bugzilla link of the project web page or our mailing list. - -http://sourceware.org/systemtap/, <systemtap@sourceware.org>. - - -

-

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
DESCRIPTION
-
OPTIONS
-
ARGUMENTS
-
EXAMPLES
-
SAFETY AND SECURITY
-
SEE ALSO
-
BUGS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/stapex.3stap.html b/man/stapex.3stap.html deleted file mode 100644 index a25293c2..00000000 --- a/man/stapex.3stap.html +++ /dev/null @@ -1,246 +0,0 @@ - -Manpage of STAPEX - -

STAPEX

-Section: Misc. Reference Manual Pages (3stap)
Index -Return to Main Contents
- -  -

NAME

- -stapex - systemtap examples -

- - - -

-  -

LANGUAGE BASICS

- -These examples give a feel for basic systemtap syntax and -control structures. -

- -

- -
- -

-
-global odds, evens
-
-probe begin {
-  # "no" and "ne" are local integers
-  for (i=0; i<10; i++) {
-    if (i % 2) odds [no++] = i
-    else evens [ne++] = i 
-  }
-  delete odds[2]
-  delete evens[3]
-  exit ()
-}
-
-probe end {
-  foreach (x+ in odds) {
-    printf ("odds[%d] = %d, x, odds[x])
-  }
-  foreach (x in evens-) {
-    printf ("evens[%d] = %d, x, evens[x])
-  }
-}
-
-
- -
- - -

- -This prints: - -

- -
- -

-
-odds[1] = 1
-odds[3] = 5
-odds[4] = 7
-odds[5] = 9
-evens[5] = 8
-evens[4] = 6
-evens[2] = 2
-evens[1] = 0
-
-
- -
- - -

- -Note that all variables types are inferred, and that all locals -and globals are automatically initialized. -

-

- -This script prints the primes between 0 and 49. - -

- -
- -

-
-function isprime (x) {
-  if (x < 2) return 0
-  for (i=2; i<x; i++) {
-    if (x % i == 0) return 0
-    if (i * i > x) break
-  }
-  return 1
-}
-probe begin {
-  for (i=0; i<50; i++)
-    if (isprime (i)) printf("%d, i)
-  exit()
-}
-
-
- -
- - -

- -

-

- -This script demonstrates recursive functions. - -

- -
- -

-
-function fibonacci(i) {
-  if (i < 1) error ("bad number")
-  if (i == 1) return 1
-  if (i == 2) return 2
-  return fibonacci (i-1) + fibonacci (i-2)
-}
-probe begin {
-  printf ("11th fibonacci number: %d, fibonacci (11))
-  exit ()
-}
-
-
- -
- - -

- -Any larger number may exceed the MAXACTION or MAXNESTING -limits, and result in an error. -

-

-  -

PROBING

- -

-To trace entry and exit from a function, use a pair of probes: - -

- -
- -

-
-probe kernel.function("sys_mkdir") { println ("enter") }
-probe kernel.function("sys_mkdir").return { println ("exit") }
-
-
- -
- - -

- -

-To list the probeable functions in the kernel, use the listings mode. - -

- -
- -

-
-% stap -l 'kernel.function("*")'
-
-
- -
- - -

- -

-To list the probeable functions and local variables in the kernel, use another listings mode. - -

- -
- -

-
-% stap -L 'kernel.function("*")'
-
-
- -
- - -

- -

-  -

MORE EXAMPLES

- -

-The directory to find more examples can be found in the stappaths (7) manual page, -and online at - -http://sourceware.org/systemtap/examples/ - - -

-  -

SEE ALSO

- - -
-stap(1)
-stapprobes(3stap)
-stappaths(7)
-
-
-
-
- 

Index

-
-
NAME
-
LANGUAGE BASICS
-
PROBING
-
MORE EXAMPLES
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/stapfuncs.3stap.html b/man/stapfuncs.3stap.html deleted file mode 100644 index 5b7e3ae7..00000000 --- a/man/stapfuncs.3stap.html +++ /dev/null @@ -1,54 +0,0 @@ - -Manpage of STAPFUNCS - -

STAPFUNCS

-Section: Misc. Reference Manual Pages (3stap)
Index -Return to Main Contents
- -  -

NAME

- -stapfuncs - systemtap functions -

-  -

DESCRIPTION

- -Functions in the standard systemtap tapset are individually documented -in the -3stap - -manual section, with the -function:: - -prefix. Some built-in functions such as -printf - -are documented on the -stap(1) - -man page. -

-  -

SEE ALSO

- - -
-stap(1),
-function::*(3stap),
-tapset::*(3stap)
-
-
-
- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/stappaths.7.html b/man/stappaths.7.html deleted file mode 100644 index 34f03ea9..00000000 --- a/man/stappaths.7.html +++ /dev/null @@ -1,182 +0,0 @@ - -Manpage of STAP - -

STAP

-Section: Environments, Tables, and Troff Macros (7)
Updated: Systemtap Team
Index -Return to Main Contents
- -  -

NAME

- -

-stappaths - systemtap configurable file paths -

-

- - - -

-  -

DESCRIPTION

- -This manual page was generated on 2014-02-17 for systemtap 2.5. -The following section will list the main paths in systemtap that are -important to know and may be required to reference. -
-
/home/fche/Private/DEVEL/DEVEL-systemtap/git/BUILD2/../INST2/share/systemtap/tapset/
-The directory for the standard probe-alias / function tapset library, -unless overridden by the -SYSTEMTAP_TAPSET - -environment variable or the -XDG_DATA_DIRS - -environment variable. -These are described in the -stapprobes(3stap), - -probe::*(3stap), - -and -function::*(3stap) - -manual pages. -
/home/fche/Private/DEVEL/DEVEL-systemtap/git/BUILD2/../INST2/share/systemtap/runtime/
-The runtime sources, unless overridden by the -SYSTEMTAP_RUNTIME - -environment variable. -
/home/fche/Private/DEVEL/DEVEL-systemtap/git/BUILD2/../INST2/bin/staprun
-The auxiliary program supervising module loading, interaction, and -unloading. -
${exec_prefix}/libexec/systemtap/stapio
-The auxiliary program for module input and output handling. -
/usr/include/sys/sdt.h
-Location of the <sys/sdt.h> headers. -
Kernel debuginfo Path: /usr/lib/debug/lib/modules/$(uname -r)/
-The location of kernel debugging information when packaged into the -kernel-debuginfo - -RPM, unless overridden by the -SYSTEMTAP_DEBUGINFO_PATH - -environment variable. The default value for this variable is -+:.debug:/usr/lib/debug:build. - -elfutils searches vmlinux in this path and it interprets the path as a base -directory of which various subdirectories will be searched for finding debuginfo -for the kernel, kernel modules, and user-space binaries. -By default, systemtap will also look for vmlinux in these locations: -

- -
- -

-
-/boot/vmlinux-`uname -r` 
-/lib/modules/`uname -r`/vmlinux
-/lib/modules/`uname -r`/vmlinux.debug
-/lib/modules/`uname -r`/build/vmlinux
-/lib/modules/`uname -r`/.debug/vmlinux.debug
-/usr/lib/debug/lib/modules/`uname -r`/vmlinux.debug
-/var/cache/abrt-di/usr/debug/lib/modules/`uname -r`/
-/var/cache/abrt-di/usr/lib/debug/lib/modules/`uname -r`/vmlinux.debug
-
-
-
- -
- - -
-
       -Corresponding source files are usually located under /usr/src/debug/. -Further file information on user-space applications can be determined per-basis using -rpm -ql <package>-debuginfo. For supported user-space applications information please -visit the systemtap wiki. -
$HOME/.systemtap
-Systemtap data directory for cached systemtap files, unless overridden -by the -SYSTEMTAP_DIR - -environment variable. -
/tmp/stapXXXXXX
-Temporary directory for systemtap files, including translated C code -and kernel object. -
/lib/modules/VERSION/build
-The location of kernel module building infrastructure. -
/home/fche/Private/DEVEL/DEVEL-systemtap/git/BUILD2/../INST2/share/doc/systemtap*/examples
-Examples with greater detail can be found here. Each example comes with a .txt -or .meta file explaining what the example, sample or demo does and how it is -ordinarily run. -
$SYSTEMTAP_DIR/ssl/server
-User's server-side SSL certificate database. If SYSTEMTAP_DIR is not -set, the default is $HOME/.systemtap. -
$SYSTEMTAP_DIR/ssl/client
-User's private client-side SSL certificate database. If SYSTEMTAP_DIR is not -set, the default is $HOME/.systemtap. -
${prefix}/etc/systemtap/ssl/client
-Global client-side SSL certificate database. -
${prefix}/etc/systemtap/staprun/
-staprun's trusted signer certificate database. -
${prefix}/etc/sysconfig/stap-server/
-stap-server service global configuration file. -
${prefix}/etc/stap-server/conf.d/*.conf
-stap-server service configuration files for default servers. -
/var/run/stap-server/
-stap-server service default location of status files for running servers. -
/var/log/stap-server/log
-stap-server service default log file. -

-

-

-

- -  -

FILES

- - -/home/fche/Private/DEVEL/DEVEL-systemtap/git/BUILD2/../INST2/share/systemtap/tapset - - -

-  -

SEE ALSO

- - -
-stapprobes(3stap),
-staprun(8),
-stapvars(3stap),
-stapex(3stap),
-stap-server(8),
-awk(1),
-gdb(1)
-
-
-
  -

BUGS

- -Use the Bugzilla link of the project web page or our mailing list. - -http://sourceware.org/systemtap/,<systemtap@sourceware.org>. - - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
FILES
-
SEE ALSO
-
BUGS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/stapprobes.3stap.html b/man/stapprobes.3stap.html deleted file mode 100644 index 2b35dfbc..00000000 --- a/man/stapprobes.3stap.html +++ /dev/null @@ -1,2020 +0,0 @@ - -Manpage of STAPPROBES - -

STAPPROBES

-Section: Misc. Reference Manual Pages (3stap)
Index -Return to Main Contents
- -  -

NAME

- -stapprobes - systemtap probe points -

- - - -

-  -

DESCRIPTION

- -The following sections enumerate the variety of probe points supported -by the systemtap translator, and some of the additional aliases defined by -standard tapset scripts. Many are individually documented in the -3stap - -manual section, with the -probe:: - -prefix. -

-  -

SYNTAX

- -

-

- - -

- -
- -

-
-probe PROBEPOINT [, PROBEPOINT] { [STMT ...] }
-
-
- -
- - -

- -

- -A probe declaration may list multiple comma-separated probe points in -order to attach a handler to all of the named events. Normally, the -handler statements are run whenever any of events occur. -

- -The syntax of a single probe point is a general dotted-symbol -sequence. This allows a breakdown of the event namespace into parts, -somewhat like the Domain Name System does on the Internet. Each -component identifier may be parametrized by a string or number -literal, with a syntax like a function call. A component may include -a "*" character, to expand to a set of matching probe points. It may -also include "**" to match multiple sequential components at once. -Probe aliases likewise expand to other probe points. -

- -Probe aliases can be given on their own, or with a suffix. The suffix -attaches to the underlying probe point that the alias is expanded -to. For example, - -

- -
- -

-
-syscall.read.return.maxactive(10)
-
-
- -
- - -

- -expands to - -

- -
- -

-
-kernel.function("sys_read").return.maxactive(10)
-
-
- -
- - -

- -with the component -maxactive(10) - -being recognized as a suffix. -

- -Normally, each and every probe point resulting from wildcard- and -alias-expansion must be resolved to some low-level system -instrumentation facility (e.g., a kprobe address, marker, or a timer -configuration), otherwise the elaboration phase will fail. -

- -However, a probe point may be followed by a "?" character, to indicate -that it is optional, and that no error should result if it fails to -resolve. Optionalness passes down through all levels of -alias/wildcard expansion. Alternately, a probe point may be followed -by a "!" character, to indicate that it is both optional and -sufficient. (Think vaguely of the Prolog cut operator.) If it does -resolve, then no further probe points in the same comma-separated list -will be resolved. Therefore, the "!" sufficiency mark only makes -sense in a list of probe point alternatives. -

- -Additionally, a probe point may be followed by a "if (expr)" statement, in -order to enable/disable the probe point on-the-fly. With the "if" statement, -if the "expr" is false when the probe point is hit, the whole probe body -including alias's body is skipped. The condition is stacked up through -all levels of alias/wildcard expansion. So the final condition becomes -the logical-and of conditions of all expanded alias/wildcard. The expressions -are necessarily restricted to global variables. -

- -These are all -syntactically - -valid probe points. (They are generally -semantically - -invalid, depending on the contents of the tapsets, and the versions of -kernel/user software installed.) -

- -

- -
- -

-
-kernel.function("foo").return
-process("/bin/vi").statement(0x2222)
-end
-syscall.*
-syscall.*.return.maxactive(10)
-sys**open
-kernel.function("no_such_function") ?
-module("awol").function("no_such_function") !
-signal.*? if (switch)
-kprobe.function("foo")
-
-
- -
- - -

- -

-Probes may be broadly classified into "synchronous" and -"asynchronous". A "synchronous" event is deemed to occur when any -processor executes an instruction matched by the specification. This -gives these probes a reference point (instruction address) from which -more contextual data may be available. Other families of probe points -refer to "asynchronous" events such as timers/counters rolling over, -where there is no fixed reference point that is related. Each probe -point specification may match multiple locations (for example, using -wildcards or aliases), and all them are then probed. A probe -declaration may also contain several comma-separated specifications, -all of which are probed. -

-  -

DWARF DEBUGINFO

- -

-Resolving some probe points requires DWARF debuginfo or "debug -symbols" for the specific part being instrumented. For some others, -DWARF is automatically synthesized on the fly from source code header -files. For others, it is not needed at all. Since a systemtap script -may use any mixture of probe points together, the union of their DWARF -requirements has to be met on the computer where script compilation -occurs. (See the --use-server option and the stap-server(8) man page for information about the remote compilation facility, -which allows these requirements to be met on a different machine.) -

- -The following point lists many of the available probe point families, -to classify them with respect to their need for DWARF debuginfo. -

- - - - - - - - - - - - - - -
DWARFNON-DWARF

kernel.function, .statementkernel.mark
module.function, .statementprocess.mark, process.plt
process.function, .statementbegin, end, error, never
process.mark (backup)timer
perf
procfs
AUTO-DWARFkernel.statement.absolute
kernel.data
kernel.tracekprobe.function
process.statement.absolute
process.begin, .end, .error
- -

-  -

PROBE POINT FAMILIES

- -

-  -

BEGIN/END/ERROR

- -

-The probe points -begin and end - -are defined by the translator to refer to the time of session startup -and shutdown. All "begin" probe handlers are run, in some sequence, -during the startup of the session. All global variables will have -been initialized prior to this point. All "end" probes are run, in -some sequence, during the -normal - -shutdown of a session, such as in the aftermath of an -exit () - -function call, or an interruption from the user. In the case of an -error-triggered shutdown, "end" probes are not run. There are no -target variables available in either context. -

- -If the order of execution among "begin" or "end" probes is significant, -then an optional sequence number may be provided: -

- -

- -
- -

-
-begin(N)
-end(N)
-
-
- -
- - -

- -

-The number N may be positive or negative. The probe handlers are run in -increasing order, and the order between handlers with the same sequence -number is unspecified. When "begin" or "end" are given without a -sequence, they are effectively sequence zero. -

-The -error - -probe point is similar to the -end - -probe, except that each such probe handler run when the session ends -after errors have occurred. In such cases, "end" probes are skipped, -but each "error" probe is still attempted. This kind of probe can be -used to clean up or emit a "final gasp". It may also be numerically -parametrized to set a sequence. -

-  -

NEVER

- -The probe point -never - -is specially defined by the translator to mean "never". Its probe -handler is never run, though its statements are analyzed for symbol / -type correctness as usual. This probe point may be useful in -conjunction with optional probes. -

-  -

SYSCALL and ND_SYSCALL

- -

-The -syscall.* and nd_syscall.* - -aliases define several hundred probes, too many to -detail here. They are of the general form: -

- -

- -
- -

-
-syscall.NAME
-
-nd_syscall.NAME -
-syscall.NAME.return -
-nd_syscall.NAME.return - -
- -
- - -

- -

-Generally, a pair of probes are defined for each normal system call as listed in the -syscalls(2) - -manual page, one for entry and one for return. Those system calls that never -return do not have a corresponding -.return - -probe. The nd_* family of probes are about the same, except it uses -non-DWARF - -based searching mechanisms, which may result in a lower quality of symbolic -context data (parameters), and may miss some system calls. You may want to -try them first, in case kernel debugging information is not immediately available. -

- -Each probe alias provides a variety of variables. Looking at the tapset source -code is the most reliable way. Generally, each variable listed in the standard -manual page is made available as a script-level variable, so -syscall.open - -exposes -filename, flags, and mode. - -In addition, a standard suite of variables is available at most aliases: -

-
argstr - -
-A pretty-printed form of the entire argument list, without parentheses. -
name - -
-The name of the system call. -
retstr - -
-For return probes, a pretty-printed form of the system-call result. -
-

- -As usual for probe aliases, these variables are all simply initialized -once from the underlying $context variables, so that later changes to -$context variables are not automatically reflected. Not all probe -aliases obey all of these general guidelines. Please report any -bothersome ones you encounter as a bug. -

- -If debuginfo availability is a problem, you may try using the -non-DWARF syscall probe aliases instead. Use the -nd_syscall. - -prefix instead of -syscall. - -The same context variables are available, as far as possible. -

-  -

TIMERS

- -

-Intervals defined by the standard kernel "jiffies" timer may be used -to trigger probe handlers asynchronously. Two probe point variants -are supported by the translator: -

- -

- -
- -

-
-timer.jiffies(N)
-timer.jiffies(N).randomize(M)
-
-
- -
- - -

- -

-The probe handler is run every N jiffies (a kernel-defined unit of -time, typically between 1 and 60 ms). If the "randomize" component is -given, a linearly distributed random value in the range [-M..+M] is -added to N every time the handler is run. N is restricted to a -reasonable range (1 to around a million), and M is restricted to be -smaller than N. There are no target variables provided in either -context. It is possible for such probes to be run concurrently on -a multi-processor computer. -

- -Alternatively, intervals may be specified in units of time. -There are two probe point variants similar to the jiffies timer: -

- -

- -
- -

-
-timer.ms(N)
-timer.ms(N).randomize(M)
-
-
- -
- - -

- -

-Here, N and M are specified in milliseconds, but the full options for units -are seconds (s/sec), milliseconds (ms/msec), microseconds (us/usec), -nanoseconds (ns/nsec), and hertz (hz). Randomization is not supported for -hertz timers. -

-The actual resolution of the timers depends on the target kernel. For -kernels prior to 2.6.17, timers are limited to jiffies resolution, so -intervals are rounded up to the nearest jiffies interval. After 2.6.17, -the implementation uses hrtimers for tighter precision, though the actual -resolution will be arch-dependent. In either case, if the "randomize" -component is given, then the random value will be added to the interval -before any rounding occurs. -

- -Profiling timers are also available to provide probes that execute on -all CPUs at the rate of the system tick (CONFIG_HZ). This probe takes -no parameters. On some kernels, this is a one-concurrent-user-only or -disabled facility, resulting in error -16 (EBUSY) during probe -registration. -

- -

- -
- -

-
-timer.profile.tick
-
-
- -
- - -

- -

-Full context information of the interrupted process is available, making -this probe suitable for a time-based sampling profiler. -

- -It is recommended to use the tapset probe -timer.profile - -rather than timer.profile.tick. This probe point behaves identically -to timer.profile.tick when the underlying functionality is available, -and falls back to using perf.sw.cpu_clock on some recent kernels which -lack the corresponding profile timer facility. -

-  -

DWARF

- -

-This family of probe points uses symbolic debugging information for -the target kernel/module/program, as may be found in unstripped -executables, or the separate -debuginfo - -packages. They allow placement of probes logically into the execution -path of the target program, by specifying a set of points in the -source or object code. When a matching statement executes on any -processor, the probe handler is run in that context. -

- -Probe points in the DWARF family can be identified by the target kernel -module (or user process), source file, line number, function name, or -some combination of these. -

- -Here is a list of DWARF probe points currently supported: - -

- -
- -

-
-kernel.function(PATTERN)
-kernel.function(PATTERN).call
-kernel.function(PATTERN).callee(PATTERN)
-kernel.function(PATTERN).callees(DEPTH)
-kernel.function(PATTERN).return
-kernel.function(PATTERN).inline
-kernel.function(PATTERN).label(LPATTERN)
-module(MPATTERN).function(PATTERN)
-module(MPATTERN).function(PATTERN).call
-module(MPATTERN).function(PATTERN).callee(PATTERN)
-module(MPATTERN).function(PATTERN).callees(DEPTH)
-module(MPATTERN).function(PATTERN).return
-module(MPATTERN).function(PATTERN).inline
-module(MPATTERN).function(PATTERN).label(LPATTERN)
-kernel.statement(PATTERN)
-kernel.statement(ADDRESS).absolute
-module(MPATTERN).statement(PATTERN)
-process("PATH").function("NAME")
-process("PATH").statement("*@FILE.c:123")
-process("PATH").library("PATH").function("NAME")
-process("PATH").library("PATH").statement("*@FILE.c:123")
-process("PATH").function("*").return
-process("PATH").function("myfun").label("foo")
-process("PATH").function("foo").callee("bar")
-process("PATH").function("foo").callees(DEPTH)
-process(PID).statement(ADDRESS).absolute
-
-
- -
- - -

- -(See the USER-SPACE section below for more information on the process -probes.) -

- -The list above includes multiple variants and modifiers which provide -additional functionality or filters. They are: -

-
-
.function
-Places a probe near the beginning of the named function, so that -parameters are available as context variables. -
.return
-Places a probe at the moment after the return from the named -function, so the return value is available as the "$return" context -variable. -
.inline
-Filters the results to include only instances of inlined functions. Note -that inlined functions do not have an identifiable return point, so -.return is not supported on .inline probes. -
.call
-Filters the results to include only non-inlined functions (the opposite -set of .inline) -
.exported
-Filters the results to include only exported functions. -
.statement
-Places a probe at the exact spot, exposing those local variables that -are visible there. -
.callee
-Places a probe on the callee function given in the .callee -modifier, where the callee must be a function called by the target -function given in .function. The advantage of doing this over -directly probing the callee function is that this probe point is run -only when the callee is called from the target function (add the --DSTAP_CALLEE_MATCHALL directive to override this when calling -stap(1)). -

-Note that only callees that can be statically determined are available. -For example, calls through function pointers are not available. -Additionally, calls to functions located in other objects (e.g. -libraries) are not available (instead use another probe point). This -feature will only work for code compiled with GCC 4.7+. -

.callees
-Shortcut for .callee("*"), which places a probe on all callees of -the function. -
.callees(DEPTH)
-Recursively places probes on callees. For example, .callees(2) -will probe both callees of the target function, as well as callees of -those callees. And .callees(3) goes one level deeper, etc... -A callee probe at depth N is only triggered when the N callers in the -callstack match those that were statically determined during analysis -(this also may be overriden using -DSTAP_CALLEE_MATCHALL). -
-
- -

- -In the above list of probe points, MPATTERN stands for a string literal -that aims to identify the loaded kernel module of interest and LPATTERN -stands for a source program label. Both MPATTERN and LPATTERN may -include the "*" "[]", and "?" wildcards. -PATTERN stands for a string literal that -aims to identify a point in the program. It is made up of three -parts: -

-
-The first part is the name of a function, as would appear in the -nm - -program's output. This part may use the "*" and "?" wildcarding -operators to match multiple names. -
-The second part is optional and begins with the "@" character. -It is followed by the path to the source file containing the function, -which may include a wildcard pattern, such as mm/slab*. -If it does not match as is, an implicit "*/" is optionally added -before - -the pattern, so that a script need only name the last few components -of a possibly long source directory path. -
-Finally, the third part is optional if the file name part was given, -and identifies the line number in the source file preceded by a ":" -or a "+". The line number is assumed to be an -absolute line number if preceded by a ":", or relative to the entry of -the function if preceded by a "+". -All the lines in the function can be matched with ":*". -A range of lines x through y can be matched with ":x-y". -
-

- -As an alternative, PATTERN may be a numeric constant, indicating an -address. Such an address may be found from symbol tables of the -appropriate kernel / module object file. It is verified against -known statement code boundaries, and will be relocated for use at -run time. -

- -In guru mode only, absolute kernel-space addresses may be specified with -the ".absolute" suffix. Such an address is considered already relocated, -as if it came from -/proc/kallsyms, - -so it cannot be checked against statement/instruction boundaries. -  -

CONTEXT VARIABLES

- -

-

- -Many of the source-level context variables, such as function parameters, -locals, globals visible in the compilation unit, may be visible to -probe handlers. They may refer to these variables by prefixing their -name with "$" within the scripts. In addition, a special syntax -allows limited traversal of structures, pointers, and arrays. More -syntax allows pretty-printing of individual variables or their groups. -See also -@cast. - -Note that variables may be inaccessible due to them being paged out, -or for a few other reasons. See also man -error::fault(7stap). - -

-

-
$var
-refers to an in-scope variable "var". If it's an integer-like type, -it will be cast to a 64-bit int for systemtap script use. String-like -pointers (char *) may be copied to systemtap string values using the -kernel_string or user_string - -functions. -
@var("varname")
-an alternative syntax for -$varname - -
@var("varname@src/file.c")
-refers to the global (either file local or external) variable -varname - -defined when the file -src/file.c - -was compiled. The CU in which the variable is resolved is the first CU -in the module of the probe point which matches the given file name at -the end and has the shortest file name path (e.g. given -@var(foo@bar/baz.c) - -and CUs with file name paths -src/sub/module/bar/baz.c - -and -src/bar/baz.c - -the second CU will be chosen to resolve the (file) global variable -foo - -
$var->field traversal via a structure's or a pointer's field. This
-generalized indirection operator may be repeated to follow more -levels. Note that the -. - -operator is not used for plain structure -members, only --> - -for both purposes. (This is because "." is reserved for string -concatenation.) -
$return
-is available in return probes only for functions that are declared -with a return value. -
$var[N]
-indexes into an array. The index given with a literal number or even -an arbitrary numeric expression. -
-

- -A number of operators exist for such basic context variable expressions: -

-
$$vars
-expands to a character string that is equivalent to - -

- -
- -

-
-sprintf("parm1=%x ... parmN=%x var1=%x ... varN=%x",
-        parm1, ..., parmN, var1, ..., varN)
-
-
- -
- - -

- -for each variable in scope at the probe point. Some values may be -printed as -=? - -if their run-time location cannot be found. -

$$locals
-expands to a subset of $$vars for only local variables. -
$$parms
-expands to a subset of $$vars for only function parameters. -
$$return
-is available in return probes only. It expands to a string that -is equivalent to sprintf("return=%x", $return) -if the probed function has a return value, or else an empty string. -
& $EXPR
-expands to the address of the given context variable expression, if it -is addressable. -
@defined($EXPR)
-expands to 1 or 0 iff the given context variable expression is resolvable, -for use in conditionals such as - -

- -
- -

-
-@defined($foo->bar) ? $foo->bar : 0
-
-
- -
- - -

- -

$EXPR$
-expands to a string with all of $EXPR's members, equivalent to - -

- -
- -

-
-sprintf("{.a=%i, .b=%u, .c={...}, .d=[...]}",
-         $EXPR->a, $EXPR->b)
-
-
- -
- - -

- -

$EXPR$$
-expands to a string with all of $var's members and submembers, equivalent to - -

- -
- -

-
-sprintf("{.a=%i, .b=%u, .c={.x=%p, .y=%c}, .d=[%i, ...]}",
-        $EXPR->a, $EXPR->b, $EXPR->c->x, $EXPR->c->y, $EXPR->d[0])
-
-
- -
- - -

- -

-

-  -

MORE ON RETURN PROBES

- -

-

- -For the kernel ".return" probes, only a certain fixed number of -returns may be outstanding. The default is a relatively small number, -on the order of a few times the number of physical CPUs. If many -different threads concurrently call the same blocking function, such -as futex(2) or read(2), this limit could be exceeded, and skipped -"kretprobes" would be reported by "stap -t". To work around this, -specify a - -

- -
- -

-
-probe FOO.return.maxactive(NNN)
-
-
- -
- - -

- -suffix, with a large enough NNN to cover all expected concurrently blocked -threads. Alternately, use the - -

- -
- -

-
-stap -DKRETACTIVE=NNNN
-
-
- -
- - -

- -stap command line macro setting to override the default for all -".return" probes. -

-

- -For ".return" probes, context variables other than the "$return" may -be accessible, as a convenience for a script programmer wishing to -access function parameters. These values are snapshots -taken at the time of function entry. Local variables within the -function are not generally accessible, since those variables did -not exist in allocated/initialized form at the snapshot moment. -

- -In addition, arbitrary entry-time expressions can also be saved for -".return" probes using the -@entry(expr) - -operator. For example, one can compute the elapsed time of a function: - -

- -
- -

-
-probe kernel.function("do_filp_open").return {
-    println( get_timeofday_us() - @entry(get_timeofday_us()) )
-}
-
-
- -
- - -

- -

-

- -The following table summarizes how values related to a function -parameter context variable, a pointer named addr, may be -accessed from a -.return - -probe. - - - - - - - -
at-entry valuepast-exit value

$addrnot available
$addr->x->y@cast(@entry($addr),"struct zz")->x->y
$addr[0]{kernel,user}_{char,int,...}(& $addr[0])
- -

-

-  -

DWARFLESS

- -In absence of debugging information, entry & exit points of kernel & module -functions can be probed using the "kprobe" family of probes. -However, these do not permit looking up the arguments / local variables -of the function. -Following constructs are supported : - -

- -
- -

-
-kprobe.function(FUNCTION)
-kprobe.function(FUNCTION).call
-kprobe.function(FUNCTION).return
-kprobe.module(NAME).function(FUNCTION)
-kprobe.module(NAME).function(FUNCTION).call
-kprobe.module(NAME).function(FUNCTION).return
-kprobe.statement.(ADDRESS).absolute
-
-
- -
- - -

- -

- -Probes of type -function - -are recommended for kernel functions, whereas probes of type -module - -are recommended for probing functions of the specified module. -In case the absolute address of a kernel or module function is known, -statement - -probes can be utilized. -

- -Note that -FUNCTION - -and -MODULE - -names -must not - -contain wildcards, or the probe will not be registered. -Also, statement probes must be run under guru-mode only. -

-

-  -

USER-SPACE

- -Support for user-space probing is available for kernels that are -configured with the utrace extensions, or have the uprobes facility in -linux 3.5. (Various kernel build configuration options need to be -enabled; systemtap will advise if these are missing.) -

-

- -There are several forms. First, a non-symbolic probe point: - -

- -
- -

-
-process(PID).statement(ADDRESS).absolute
-
-
- -
- - -

- -is analogous to - -kernel.statement(ADDRESS).absolute -in that both use raw (unverified) virtual addresses and provide -no $variables. The target PID parameter must identify a running -process, and ADDRESS should identify a valid instruction address. -All threads of that process will be probed. -

- -Second, non-symbolic user-kernel interface events handled by -utrace may be probed: - -

- -
- -

-
-process(PID).begin
-process("FULLPATH").begin
-process.begin
-process(PID).thread.begin
-process("FULLPATH").thread.begin
-process.thread.begin
-process(PID).end
-process("FULLPATH").end
-process.end
-process(PID).thread.end
-process("FULLPATH").thread.end
-process.thread.end
-process(PID).syscall
-process("FULLPATH").syscall
-process.syscall
-process(PID).syscall.return
-process("FULLPATH").syscall.return
-process.syscall.return
-process(PID).insn
-process("FULLPATH").insn
-process(PID).insn.block
-process("FULLPATH").insn.block
-
-
- -
- - -

- -

- -A -.begin - -probe gets called when new process described by PID or FULLPATH gets created. -A -.thread.begin - -probe gets called when a new thread described by PID or FULLPATH gets created. -A -.end - -probe gets called when process described by PID or FULLPATH dies. -A -.thread.end - -probe gets called when a thread described by PID or FULLPATH dies. -A -.syscall - -probe gets called when a thread described by PID or FULLPATH makes a -system call. The system call number is available in the -$syscall - -context variable, and the first 6 arguments of the system call -are available in the -$argN - -(ex. $arg1, $arg2, ...) context variable. -A -.syscall.return - -probe gets called when a thread described by PID or FULLPATH returns from a -system call. The system call number is available in the -$syscall - -context variable, and the return value of the system call is available -in the -$return - -context variable. -A -.insn - -probe gets called for every single-stepped instruction of the process described by PID or FULLPATH. -A -.insn.block - -probe gets called for every block-stepped instruction of the process described by PID or FULLPATH. -

- -If a process probe is specified without a PID or FULLPATH, all user -threads will be probed. However, if systemtap was invoked with the --c or -x - -options, then process probes are restricted to the process -hierarchy associated with the target process. If a process probe is -specified without a PID or FULLPATH, but with the --c - -option, the PATH of the --c - -cmd will be heuristically filled into the process PATH. -

-

- -Third, symbolic static instrumentation compiled into programs and -shared libraries may be -probed: - -

- -
- -

-
-process("PATH").mark("LABEL")
-process("PATH").provider("PROVIDER").mark("LABEL")
-
-
- -
- - -

- -

- -A -.mark - -probe gets called via a static probe which is defined in the -application by STAP_PROBE1(PROVIDER,LABEL,arg1), which are macros defined in -sys/sdt.h. - -The PROVIDER is an arbitrary application identifier, LABEL is the -marker site identifier, and arg1 is the integer-typed argument. -STAP_PROBE1 is used for probes with 1 argument, STAP_PROBE2 is used -for probes with 2 arguments, and so on. The arguments of the probe -are available in the context variables $arg1, $arg2, ... An -alternative to using the STAP_PROBE macros is to use the dtrace script -to create custom macros. Additionally, the variables $$name and -$$provider are available as parts of the probe point name. The -sys/sdt.h - -macro names DTRACE_PROBE* are available as aliases for STAP_PROBE*. -

-

- -Finally, full symbolic source-level probes in user-space programs and -shared libraries are supported. These are exactly analogous to the -symbolic DWARF-based kernel/module probes described above. They -expose the same sorts of context $variables for function parameters, -local variables, and so on. - -

- -
- -

-
-process("PATH").function("NAME")
-process("PATH").statement("*@FILE.c:123")
-process("PATH").plt("NAME")
-process("PATH").library("PATH").plt("NAME")
-process("PATH").library("PATH").function("NAME")
-process("PATH").library("PATH").statement("*@FILE.c:123")
-process("PATH").function("*").return
-process("PATH").function("myfun").label("foo")
-process("PATH").function("foo").callee("bar")
-
-
- -
- - -

- -

-

- -Note that for all process probes, -PATH - -names refer to executables that are searched the same way shells do: relative -to the working directory if they contain a "/" character, otherwise in -$PATH. - -If PATH names refer to scripts, the actual interpreters (specified in the -script in the first line after the #! characters) are probed. -If PATH is a process component parameter referring to shared libraries -then all processes that map it at runtime would be selected for -probing. If PATH is a library component parameter referring to shared -libraries then the process specified by the process component would be -selected. -

-

- -A .plt probe will probe functions in the program linkage table -corresponding to the rest of the probe point. .plt can be specified -as a shorthand for .plt("*"). The symbol name is available as a -$$name context variable; function arguments are not available, since -PLTs are processed without debuginfo. -

-

- -If the PATH string contains wildcards as in the MPATTERN case, then -standard globbing is performed to find all matching paths. In this -case, the -$PATH - -environment variable is not used. -

-

- -If systemtap was invoked with the --c or -x - -options, then process probes are restricted to the process -hierarchy associated with the target process. -

-  -

JAVA

- -Support for probing Java methods is available using Byteman as a -backend. Byteman is an instrumentation tool from the JBoss project -which systemtap can use to monitor invocations for a specific method -or line in a Java program. -

- -Systemtap does so by generating a Byteman script listing the probes to -instrument and then invoking the Byteman -bminstall - -utility. -

- -This Java instrumentation support is currently a prototype feature -with major limitations. Moreover, Java probing currently does not -work across users; the stap script must run (with appropriate -permissions) under the same user that the Java process being -probed. (Thus a stap script under root currently cannot probe Java -methods in a non-root-user Java process.) -

-

- -The first probe type refers to Java processes by the name of the Java process: - -

- -
- -

-
-java("PNAME").class("CLASSNAME").method("PATTERN")
-java("PNAME").class("CLASSNAME").method("PATTERN").return
-
-
- -
- - -

- -The PNAME argument must be a pre-existing jvm pid, and be identifiable -via a jps listing. -

- -The PATTERN parameter specifies the signature of the Java method to -probe. The signature must consist of the exact name of the method, -followed by a bracketed list of the types of the arguments, for -instance "myMethod(int,double,Foo)". Wildcards are not supported. -

- -The probe can be set to trigger at a specific line within the method -by appending a line number with colon, just as in other types of -probes: "myMethod(int,double,Foo):245". -

- -The CLASSNAME parameter identifies the Java class the method belongs -to, either with or without the package qualification. By default, the -probe only triggers on descendants of the class that do not override -the method definition of the original class. However, CLASSNAME can -take an optional caret prefix, as in -^org.my.MyClass, - -which specifies that the probe should also trigger on all descendants -of MyClass that override the original method. For instance, every method -with signature foo(int) in program org.my.MyApp can be probed at once using - -

- -
- -

-
-java("org.my.MyApp").class("^java.lang.Object").method("foo(int)")
-
-
- -
- - -

- -

- -The second probe type works analogously, but refers to Java processes by PID: - -

- -
- -

-
-java(PID).class("CLASSNAME").method("PATTERN")
-java(PID).class("CLASSNAME").method("PATTERN").return
-
-
- -
- - -

- -(PIDs for an already running process can be obtained using the -jps(1) - -utility.) -

- -Context variables defined within java probes include -$arg1 - -through -$arg10 - -(for up to the first 10 arguments of a method), represented as integers or strings. -

-  -

PROCFS

- -

-These probe points allow procfs "files" in -/proc/systemtap/MODNAME to be created, read and written using a -permission that may be modified using the proper umask value. Default permissions are 0400 for read -probes, and 0200 for write probes. If both a read and write probe are being -used on the same file, a default permission of 0600 will be used. -Using procfs.umask(0040).read would -result in a 0404 permission set for the file. -(MODNAME - -is the name of the systemtap module). The -proc - -filesystem is a pseudo-filesystem which is used an an interface to -kernel data structures. There are several probe point variants supported -by the translator: -

- -

- -
- -

-
-procfs("PATH").read
-procfs("PATH").umask(UMASK).read
-procfs("PATH").read.maxsize(MAXSIZE)
-procfs("PATH").umask(UMASK).maxsize(MAXSIZE)
-procfs("PATH").write
-procfs("PATH").umask(UMASK).write
-procfs.read
-procfs.umask(UMASK).read
-procfs.read.maxsize(MAXSIZE)
-procfs.umask(UMASK).read.maxsize(MAXSIZE)
-procfs.write
-procfs.umask(UMASK).write
-
-
- -
- - -

- -

-PATH - -is the file name (relative to /proc/systemtap/MODNAME) to be created. -If no -PATH - -is specified (as in the last two variants above), -PATH - -defaults to "command". -

- -When a user reads /proc/systemtap/MODNAME/PATH, the corresponding -procfs -read - -probe is triggered. The string data to be read should be assigned to -a variable named -$value, - -like this: -

- -

- -
- -

-
-procfs("PATH").read { $value = "100\n" }
-
-
- -
- - -

- -

- -When a user writes into /proc/systemtap/MODNAME/PATH, the -corresponding procfs -write - -probe is triggered. The data the user wrote is available in the -string variable named -$value, - -like this: -

- -

- -
- -

-
-procfs("PATH").write { printf("user wrote: %s", $value) }
-
-
- -
- - -

- -

- -MAXSIZE - -is the size of the procfs read buffer. Specifying -MAXSIZE - -allows larger procfs output. If no -MAXSIZE - -is specified, the procfs read buffer defaults to -STP_PROCFS_BUFSIZE - -(which defaults to -MAXSTRINGLEN, - -the maximum length of a string). -If setting the procfs read buffers for more than one file is needed, -it may be easiest to override the -STP_PROCFS_BUFSIZE - -definition. -Here's an example of using -MAXSIZE: - -

- -

- -
- -

-
-procfs.read.maxsize(1024) {
-    $value = "long string..."
-    $value .= "another long string..."
-    $value .= "another long string..."
-    $value .= "another long string..."
-}
-
-
- -
- - -

- -

-  -

NETFILTER HOOKS

- -

-These probe points allow observation of network packets using the -netfilter mechanism. A netfilter probe in systemtap corresponds to a -netfilter hook function in the original netfilter probes API. It is -probably more convenient to use -tapset::netfilter(3stap), - -which wraps the primitive netfilter hooks and does the work of -extracting useful information from the context variables. -

-

- -There are several probe point variants supported by the translator: -

- -

- -
- -

-
-netfilter.hook("HOOKNAME").pf("PROTOCOL_F")
-netfilter.pf("PROTOCOL_F").hook("HOOKNAME")
-netfilter.hook("HOOKNAME").pf("PROTOCOL_F").priority("PRIORITY")
-netfilter.pf("PROTOCOL_F").hook("HOOKNAME").priority("PRIORITY")
-
-
- -
- - -

- -

-

- -PROTOCOL_F - -is the protocol family to listen for, currently one of -NFPROTO_IPV4, - -NFPROTO_IPV6, - -NFPROTO_ARP, - -or -NFPROTO_BRIDGE. - -

-

- -HOOKNAME - -is the point, or 'hook', in the protocol stack at which to intercept -the packet. The available hook names for each protocol family are -taken from the kernel header files <linux/netfilter_ipv4.h>, -<linux/netfilter_ipv6.h>, <linux/netfilter_arp.h> and -<linux/netfilter_bridge.h>. For instance, allowable hook names for -NFPROTO_IPV4 - -are -NF_INET_PRE_ROUTING, - -NF_INET_LOCAL_IN, - -NF_INET_FORWARD, - -NF_INET_LOCAL_OUT, - -and -NF_INET_POST_ROUTING. - -

-

- -PRIORITY - -is an integer priority giving the order in which the probe point -should be triggered relative to any other netfilter hook functions -which trigger on the same packet. Hook functions execute on each -packet in order from smallest priority number to largest priority number. If no -PRIORITY - -is specified (as in the first two probe point variants above), -PRIORITY - -defaults to "0". -

-There are a number of predefined priority names of the form -NF_IP_PRI_* - -and -NF_IP6_PRI_* - -which are defined in the kernel header files <linux/netfilter_ipv4.h> and <linux/netfilter_ipv6.h> respectively. The script is permitted to use these -instead of specifying an integer priority. (The probe points for -NFPROTO_ARP - -and -NFPROTO_BRIDGE - -currently do not expose any named hook priorities to the script writer.) -Thus, allowable ways to specify the priority include: -

- -

- -
- -

-
-priority("255")
-priority("NF_IP_PRI_SELINUX_LAST")
-
-
- -
- - -

- -

-A script using guru mode is permitted to specify any identifier or -number as the parameter for hook, pf, and priority. This feature -should be used with caution, as the parameter is inserted verbatim into -the C code generated by systemtap. -

-The netfilter probe points define the following context variables: -

-
$hooknum - -
-The hook number. -
$skb - -
-The address of the sk_buff struct representing the packet. See -<linux/skbuff.h> for details on how to use this struct, or -alternatively use the tapset -tapset::netfilter(3stap) - -for easy access to key information. -

-

$in - -
-The address of the net_device struct representing the network device -on which the packet was received (if any). May be 0 if the device is -unknown or undefined at that stage in the protocol stack. -

-

$out - -
-The address of the net_device struct representing the network device -on which the packet will be sent (if any). May be 0 if the device is -unknown or undefined at that stage in the protocol stack. -

-

$verdict - -
-(Guru mode only.) Assigning one of the verdict values defined in -<linux/netfilter.h> to this variable alters the further progress of -the packet through the protocol stack. For instance, the following -guru mode script forces all ipv6 network packets to be dropped: -

- -

- -
- -

-
-probe netfilter.pf("NFPROTO_IPV6").hook("NF_IP6_PRE_ROUTING") {
-  $verdict = 0 /* nf_drop */
-}
-
-
- -
- - -

- -

-For convenience, unlike the primitive probe points discussed here, the -probes defined in -tapset::netfilter(3stap) - -export the lowercase names of the verdict constants (e.g. NF_DROP -becomes nf_drop) as local variables. -

-

-  -

MARKERS

- -

-This family of probe points hooks up to static probing markers -inserted into the kernel or modules. These markers are special macro -calls inserted by kernel developers to make probing faster and more -reliable than with DWARF-based probes. Further, DWARF debugging -information is -not - -required to probe markers. -

-Marker probe points begin with -kernel. - -The next part names the marker itself: -mark(name). - -The marker name string, which may contain the usual wildcard characters, -is matched against the names given to the marker macros when the kernel -and/or module was compiled. Optionally, you can specify -format(format). - -Specifying the marker format string allows differentiation between two -markers with the same name but different marker format strings. -

-The handler associated with a marker-based probe may read the -optional parameters specified at the macro call site. These are -named -$arg1 through $argNN, - -where NN is the number of parameters supplied by the macro. Number -and string parameters are passed in a type-safe manner. -

-The marker format string associated with a marker is available in -$format. - -And also the marker name string is available in -$name. - -

-  -

TRACEPOINTS

- -

-This family of probe points hooks up to static probing tracepoints -inserted into the kernel or modules. As with markers, these -tracepoints are special macro calls inserted by kernel developers to -make probing faster and more reliable than with DWARF-based probes, -and DWARF debugging information is not required to probe tracepoints. -Tracepoints have an extra advantage of more strongly-typed parameters -than markers. -

-Tracepoint probes begin with -kernel. - -The next part names the tracepoint itself: -trace(name). - -The tracepoint name string, which may contain the usual wildcard -characters, is matched against the names defined by the kernel -developers in the tracepoint header files. -

-The handler associated with a tracepoint-based probe may read the -optional parameters specified at the macro call site. These are -named according to the declaration by the tracepoint author. For -example, the tracepoint probe -kernel.trace(sched_switch) - -provides the parameters -$rq, $prev, and $next. - -If the parameter is a complex type, as in a struct pointer, then a -script can access fields with the same syntax as DWARF $target -variables. Also, tracepoint parameters cannot be modified, but in -guru-mode a script may modify fields of parameters. -

-The name of the tracepoint is available in -$$name, - -and a string of name=value pairs for all parameters of the tracepoint -is available in -$$vars or $$parms. - -

-  -

HARDWARE BREAKPOINTS

- -This family of probes is used to set hardware watchpoints for a given -
 (global) kernel symbol. The probes take three components as inputs : -

-1. The -virtualaddress/name - -of the kernel symbol to be traced is supplied as argument to this class -of probes. ( Probes for only data segment variables are supported. Probing -local variables of a function cannot be done.) -

-2. Nature of access to be probed : -a. -.write - -probe gets triggered when a write happens at the specified address/symbol -name. -b. -rw - -probe is triggered when either a read or write happens. -

-3. -.length - -(optional) -Users have the option of specifying the address interval to be probed -using "length" constructs. The user-specified length gets approximated -to the closest possible address length that the architecture can -support. If the specified length exceeds the limits imposed by -architecture, an error message is flagged and probe registration fails. -Wherever 'length' is not specified, the translator requests a hardware -breakpoint probe of length 1. It should be noted that the "length" -construct is not valid with symbol names. -

-Following constructs are supported : - -

- -
- -

-
-probe kernel.data(ADDRESS).write
-probe kernel.data(ADDRESS).rw
-probe kernel.data(ADDRESS).length(LEN).write
-probe kernel.data(ADDRESS).length(LEN).rw
-probe kernel.data("SYMBOL_NAME").write
-probe kernel.data("SYMBOL_NAME").rw
-
-
- -
- - -

- -

-This set of probes make use of the debug registers of the processor, -which is a scarce resource. (4 on x86 , 1 on powerpc ) The script -translation flags a warning if a user requests more hardware breakpoint probes -than the limits set by architecture. For example,a pass-2 warning is flashed -when an input script requests 5 hardware breakpoint probes on an x86 -system while x86 architecture supports a maximum of 4 breakpoints. -Users are cautioned to set probes judiciously. -

-  -

PERF

- -

-This family of probe points interfaces to the kernel "perf event" -infrastructure for controlling hardware performance counters. -The events being attached to are described by the "type", -"config" fields of the -perf_event_attr - -structure, and are sampled at an interval governed by the -"sample_period" field. -

-These fields are made available to systemtap scripts using -the following syntax: - -

- -
- -

-
-probe perf.type(NN).config(MM).sample(XX)
-probe perf.type(NN).config(MM)
-probe perf.type(NN).config(MM).process("PROC")
-probe perf.type(NN).config(MM).counter("COUNTER")
-probe perf.type(NN).config(MM).process("PROC").counter("COUNTER")
-
-
- -
- - -

- -The systemtap probe handler is called once per XX increments -of the underlying performance counter. The default sampling -count is 1000000. -The range of valid type/config is described by the -perf_event_open(2) - -system call, and/or the -linux/perf_event.h - -file. Invalid combinations or exhausted hardware counter resources -result in errors during systemtap script startup. Systemtap does -not sanity-check the values: it merely passes them through to -the kernel for error- and safety-checking. By default the perf event -probe is systemwide unless .process is specified, which will bind the -probe to a specific task. If the name is omitted then it -is inferred from the stap -c argument. A perf event can be read on -demand using .counter. The body of the perf probe handler will not be -invoked for a .counter probe; instead, the counter is read in a user -space probe via: -

-

   process("PROCESS").statement("func@file") {stat <<< @perf("NAME")} 
-

-

-

-  -

EXAMPLES

- -

- -Here are some example probe points, defining the associated events. -

-
begin, end, end
-refers to the startup and normal shutdown of the session. In this -case, the handler would run once during startup and twice during -shutdown. -
timer.jiffies(1000).randomize(200)
-refers to a periodic interrupt, every 1000 +/- 200 jiffies. -
kernel.function("*init*"), kernel.function("*exit*")
-refers to all kernel functions with "init" or "exit" in the name. -
kernel.function("*@kernel/time.c:240")
-refers to any functions within the "kernel/time.c" file that span -line 240. - -Note -that this is -not - -a probe at the statement at that line number. Use the - -kernel.statement -probe instead. -
kernel.mark("getuid")
-refers to an STAP_MARK(getuid, ...) macro call in the kernel. -
module("usb*").function("*sync*").return
-refers to the moment of return from all functions with "sync" in the -name in any of the USB drivers. -
kernel.statement(0xc0044852)
-refers to the first byte of the statement whose compiled instructions -include the given address in the kernel. -
kernel.statement("*@kernel/time.c:296")
-refers to the statement of line 296 within "kernel/time.c". -
kernel.statement("bio_init@fs/bio.c+3")
-refers to the statement at line bio_init+3 within "fs/bio.c". -
kernel.data("pid_max").write
-refers to a hardware breakpoint of type "write" set on pid_max -
syscall.*.return
-refers to the group of probe aliases with any name in the third position -

-

-  -

SEE ALSO

- - -
-stap(1),
-probe::*(3stap),
-tapset::*(3stap)
-
-
-
-
- 

Index

-
-
NAME
-
DESCRIPTION
-
SYNTAX
-
DWARF DEBUGINFO
-
PROBE POINT FAMILIES
-
-
BEGIN/END/ERROR
-
NEVER
-
SYSCALL and ND_SYSCALL
-
TIMERS
-
DWARF
-
CONTEXT VARIABLES
-
MORE ON RETURN PROBES
-
DWARFLESS
-
USER-SPACE
-
JAVA
-
PROCFS
-
NETFILTER HOOKS
-
MARKERS
-
TRACEPOINTS
-
HARDWARE BREAKPOINTS
-
PERF
-
-
EXAMPLES
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/staprun.8.html b/man/staprun.8.html deleted file mode 100644 index 1e5f6f58..00000000 --- a/man/staprun.8.html +++ /dev/null @@ -1,448 +0,0 @@ - -Manpage of STAPRUN - -

STAPRUN

-Section: Maintenance Commands (8)
Index -Return to Main Contents
- -  -

NAME

- -staprun - systemtap runtime -

-  -

SYNOPSIS

- -

-
- -staprun - -[ -OPTIONS - -] -MODULE - -[ -MODULE-OPTIONS - -] -

-  -

DESCRIPTION

- -

-The -staprun - -program is the back-end of the Systemtap tool. It expects a kernel -module produced by the front-end -stap - -tool. -

- -Splitting the systemtap tool into a front-end and a back-end allows a -user to compile a systemtap script on a development machine that has -the kernel development tools (needed to compile the script) and then -transfer the resulting kernel module to a production machine that -doesn't have any development tools installed. -

- -Please refer to stappaths (7) for the version number, or run -rpm -q systemtap (fedora/red hat) -apt-get -v systemtap (ubuntu) -

-  -

OPTIONS

- -The -staprun - -program supports the following options. Any other option -prints a list of supported options. -
-
-v - -
-Verbose mode. -
-V - -
-Print version number and exit. -
-w - -
-Suppress warnings from the script. -
-u - -
-Load the uprobes.ko module. -
-c CMD - -
-Command CMD will be run and the -staprun - -program will exit when CMD -does. The '_stp_target' variable will contain the pid for CMD. -
-x PID - -
-The '_stp_target' variable will be set to PID. -
-o FILE - -
-Send output to FILE. If the module uses bulk mode, the output will -be in percpu files FILE_x(FILE_cpux in background and bulk mode) -where 'x' is the cpu number. This supports strftime(3) formats -for FILE. -
-b BUFFER_SIZE - -
-The systemtap module will specify a buffer size. -Setting one here will override that value. The value should be -an integer between 1 and 4095 which be assumed to be the -buffer size in MB. That value will be per-cpu if bulk mode is used. -
-L - -
-Load module and start probes, then detach from the module leaving the -probes running. The module can be attached to later by using the --A - -option. -
-A - -
-Attach to loaded systemtap module. -
-C WHEN - -
-Control coloring of error messages. WHEN must be either - -"never", "always", or "auto" - -(i.e. enable only if at a terminal). If the option is missing, then "auto" -is assumed. Colors can be modified using the SYSTEMTAP_COLORS environment -variable. See the -stap(1) - -manual page for more information on syntax and behaviour. -
-d - -
-Delete a module. Only detached or unused modules -the user has permission to access will be deleted. Use "*" -(quoted) to delete all unused modules. -
-D - -
-Run staprun in background as a daemon and show it's pid. -
-R - -
-Rename the module to a unique name before inserting it. -
-r N:URI - -
-Pass the given number and URI data to the tapset functions -remote_id() and remote_uri(). -
-S size[,N] - -
-Sets the maximum size of output file and the maximum number of output files. -If the size of output file will exceed -size - -, systemtap switches output file to the next file. And if the number of -output files exceed -N - -, systemtap removes the oldest output file. You can omit the second argument. -
-T timeout - -
-Sets maximum time reader thread will wait before dumping trace buffer. Value is -in ms, default is 200ms. Setting this to a high value decreases number of stapio -wake-ups, allowing deeper sleep for embedded platforms. But it impacts interactivity -on terminal as traces are dumped less often in case of low throughput. -There is no interactivity or performance impact for high throughput as trace is -dumped when buffer is full, before this timeout expires. -
var1=val - -
-Sets the value of global variable var1 to val. Global variables contained -within a module are treated as module options and can be set from the -staprun command line. -

-

-  -

ARGUMENTS

- -MODULE - -is either a module path or a module name. If it is a module name, -the module will be looked for in the following directory -(where 'VERSION' is the output of "uname -r"): -
-
-/lib/modules/VERSION/systemtap -
-

- - -Any additional arguments on the command line are passed to the -module. One use of these additional module arguments is to set the value -of global variables declared within the module. -

- -

- $ stap -p4 -m mod1 -e 'global var1="foo"; probe begin{printf("%s\n", var1); exit()}' -
- -

- -Running this with an additional module argument: -

- -

- $ staprun mod1.ko var1="HelloWorld" -
- - HelloWorld -

- -Spaces and exclamation marks currently cannot be passed into global variables -this way. -

-  -

EXAMPLES

- -See the -stapex(3stap) - -manual page for a collection of sample scripts. -

- -Here is a very basic example of how to use -staprun. - -First, use -stap - -to compile a script. The -stap - -program will report the pathname to the resulting module. -

- - $ stap -p4 -e 'probe begin { printf("Hello World!\n"); exit() }' -
- - /home/user/.systemtap/cache/85/stap_8553d83f78c_265.ko -

- -Run -staprun - -with the pathname to the module as an argument. -

- - $ staprun /home/user/.systemtap/cache/85/stap_8553d83f78c_265.ko -
- - Hello World! -  -

MODULE DETACHING AND ATTACHING

- -After the -staprun - -program installs a Systemtap kernel module, users can detach from the -kernel module and reattach to it later. The --L - -option loads the module and automatically detaches. Users can also -detach from the kernel module interactively by sending the SIGQUIT -signal from the keyboard (typically by typing Ctrl-\). -

- -To reattach to a kernel module, the -staprun - --A - -option would be used. -

-  -

FILE SWITCHING BY SIGNAL

- -After -staprun - -launched the -stapio - -program, users can command it to switch output file to next file when it -outputs to file(s) (running staprun with --o - -option) by sending a -SIGUSR2 - -signal to the -stapio - -process. When it receives SIGUSR2, it will switch output file to -new file with suffix -.N - -where N is the sequential number. -For example, -

- - $ staprun -o foo ... -

- -outputs trace logs to -foo - -and if it receives -SIGUSR2 - -signal, it switches output to -foo.1 - -file. And receiving -SIGUSR2 - -again, it switches to -foo.2 - -file. -

-  -

SAFETY AND SECURITY

- -Systemtap, in the default kernel-module runtime mode, is an -administrative tool. It exposes kernel internal data structures and -potentially private user information. See the -stap(1) - -manual page for additional information on safety and security. -

- -To increase system security, users of systemtap must be root, or in the -staprun - -group in order to execute this setuid -staprun - -program. -A user may select a particular privilege level with the stap ---privilege= - -option, which -staprun - -will later enforce. -

-
stapdev
-Members of the -stapdev - -group can write and load script modules with root-equivalent -privileges, without particular security constraints. (Many safety -constraints remain.) -
stapsys
-Members of the -stapsys - -group have almost all the privileges of -stapdev, - -except for guru mode constructs. -
staprun
-Members only of the -stapusr - -group may any-privileged modules placed into the /lib/modules/VERSION/systemtap -by the system administrator. -
staprun
-Members only of the -stapusr - -group may also write and load low-privilege script modules, which are normally -limited to manipulating their own processes (and not the kernel nor other users' -processes). -
-

- -Part of the privilege enforcement mechanism may require using a -stap-server and administrative trust in its cryptographic signer; see the -stap-server(8) - -manual page for a for more information. -  -

FILES

- -
-
/lib/modules/VERSION/systemtap
-If MODULE is a module name, the module will be looked for in this directory. -Users who are only in the -'stapusr' - -group can install modules -located in this directory. This directory must be owned by the root -user and not be world writable. -
-  -

SEE ALSO

- -stap(1), - -stapprobes(3stap), - -stap-server(8), - -stapdyn(8), - -stapex(3stap) - -

-  -

BUGS

- -Use the Bugzilla link of the project web page or our mailing list. - -http://sourceware.org/systemtap/, <systemtap@sourceware.org>. - - -

-

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
DESCRIPTION
-
OPTIONS
-
ARGUMENTS
-
EXAMPLES
-
MODULE DETACHING AND ATTACHING
-
FILE SWITCHING BY SIGNAL
-
SAFETY AND SECURITY
-
FILES
-
SEE ALSO
-
BUGS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/stapsh.8.html b/man/stapsh.8.html deleted file mode 100644 index bf0b2430..00000000 --- a/man/stapsh.8.html +++ /dev/null @@ -1,64 +0,0 @@ - -Manpage of STAPSH - -

STAPSH

-Section: Maintenance Commands (8)
Index -Return to Main Contents
- -  -

NAME

- -stapsh -

-  -

SYNOPSIS

- -

-
- -stapsh - -

-  -

DESCRIPTION

- -

-The stapsh executable is used by the stap ---remote - -functionality, as a wrapper shell on the remote machines. -It is not intended to be run directly by users. -

-  -

SEE ALSO

- - -
-stap(1)
-
-
  -

BUGS

- -Use the Bugzilla link of the project web page or our mailing list. - -http://sourceware.org/systemtap/,<systemtap@sourceware.org>. - - -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
DESCRIPTION
-
SEE ALSO
-
BUGS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/stapvars.3stap.html b/man/stapvars.3stap.html deleted file mode 100644 index ce1c297c..00000000 --- a/man/stapvars.3stap.html +++ /dev/null @@ -1,95 +0,0 @@ - -Manpage of STAPVARS - -

STAPVARS

-Section: Misc. Reference Manual Pages (3stap)
Index -Return to Main Contents
- -  -

NAME

- -stapvars - systemtap variables -

-  -

DESCRIPTION

- -The following sections enumerate the public variables provided by -standard tapsets installed, (the installation path is show in the -stappaths (7) manual page). Each variable is described with a -type, and its behavior/restrictions. -The syntax is the same as printed with the -stap option -p2. - -Examples: -

-

-
example1:long
-Variable "example1" contains an integer. -

-

example2:string [long]
-Variable "example2" is an array of strings, indexed by integers. -

-

-  -

ARGV

- -

-

-
argc:long
-Contains the value of the - -$# -value: the number of command line arguments passed to the systemtap script. -It is initialized with an implicit begin(-1) probe. -

-

argv:string [long]
-Contains each command line argument as a string. argv[1] will equal @1 if -there was at least one command line argument. Arguments beyond #32 are not -transcribed, and produce a warning message within the begin(-1) probe that -initializes this array. -

-

-  -

NULL

- -

-

-
NULL:long
-Simply defined as the number 0. -

-

-  -

FILES

- -
-
More files and their corresponding paths can be found in the stappaths (7) manual page.
-

-

-  -

SEE ALSO

- - -
-stap(1)
-stappaths(7)
-
-
-
- 

Index

-
-
NAME
-
DESCRIPTION
-
-
ARGV
-
NULL
-
-
FILES
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/stapvirt.1.html b/man/stapvirt.1.html deleted file mode 100644 index 3ac278f8..00000000 --- a/man/stapvirt.1.html +++ /dev/null @@ -1,349 +0,0 @@ - -Manpage of STAPVIRT - -

STAPVIRT

-Section: User Commands (1)
Index -Return to Main Contents
- -  -

NAME

- -stapvirt - prepare libvirt domains for systemtap probing -

- - - -

-  -

SYNOPSIS

- -stapvirt -[-c URI] -[-d PATH] -[-v] -COMMAND -ARGUMENTS -

-  -

DESCRIPTION

- -The stapvirt program can be used to add ports to domains managed by -libvirt (see - -<http://libvirt.org/>). - -These ports can then be used by stap to -run scripts inside the domains (see the '--remote' option in stap(1) for -more information). -

- -Ports are added to the definition of the domain using the port-add -command. These ports can later be removed using the port-remove command. -Note that there can only be as many simultaneous stap sessions as there -are ports. -

- -Starting from libvirt v1.1.1 and QEMU v0.10.0, SystemTap ports can be hotplugged -and thus do not need to be added first using the port-add command. -However, you need to ensure that there is a virtio-serial controller in place so -that hotplugged ports can be connected. If creating a domain using virt-install, -you can do this by adding this option: - -

- -
- -

-
-$ virt-install [...] --controller=virtio-serial
-
-
- -
- - -

- -If the domain has already been created, you can simply do port-add -followed immediately by port-remove. The port will be removed, but the -controller will remain. -

-  -

OPTIONS

- -The following options are supported. Any other option prints a short help -message. -

-

-
-c URI
-Specify the libvirt driver URI to which to connect (e.g. 'qemu:///system'). The -default value is NULL, which indicates to libvirt to connect to the default -driver. See the page at <http://libvirt.org/uri.html> for supported values. -

-

-d PATH
-Specify the directory in which UNIX sockets should be created when SystemTap -ports are added. The default directory is '/var/lib/libvirt/qemu'. -

-

-v
-Increase verbosity. This option may be repeated for more verbosity. -

-

-  -

COMMANDS

- -The following commands are recognized by stapvirt. Any other command prints a -short help message. -

-

-
help
-Display the help message. -

-

list
-List available domains. -

-

port-add DOMAIN
-Add a permanent SystemTap port to the domain's definition. If the domain is -currently running, it must be powered off before changes take effect. -

-

port-list DOMAIN
-List the UNIX socket paths of the permanent SystemTap ports in the domain's -definition. -

-

port-remove DOMAIN
-Remove a permanent SystemTap port from the domain's definition. If the domain is -currently running, it must be powered off before changes take effect. -

-

query DOMAIN
-Display the following information about the domain: its name, its UUID, its -state, the number of permanent SystemTap ports installed, and whether -hotplugging is supported. -

-

-  -

TUTORIAL

- -This tutorial will help you get started with stapvirt. Let's start by listing -all the privileged domains on the machine with the list command: -

- -

- -
- -

-
-$ stapvirt -c 'qemu:///system' list
-Available domains on URI 'qemu:///system':
-ID      State     Type        Name
-2       running   persistent  TestVM
-
-
- -
- - -

- -

-Note that we specified the libvirt URI using the -c switch. Otherwise libvirt -might have defaulted to e.g. 'qemu:///session'. -

- -Rather than typing the URI everytime, it might be easier to instead set the - -LIBVIRT_DEFAULT_URI - -environment variable and omit the -c switch. Note that this is a libvirt -functionality (see - -<libvirt.org/uri.html> - -for more details). -

- -The list command indicates that we have a running domain named 'TestVM' -with ID 2. Let's use the query command to retrieve more information: -

- -

- -
- -

-
-$ stapvirt query TestVM # by name
-$ stapvirt query 2      # by ID
-
-              Name:  TestVM
-              UUID:  905951c0-fa4f-409b-079c-c91ddda27028
-             State:  running
-                ID:  2
-              Type:  persistent
-   Permanent Ports:  0
-       Hotplugging:  not supported
-
-
- -
- - -

- -

-The query command gives us some basic information about the domain, such -as its name, UUID, and state. More importantly, it gives us two pieces of -information: the number of permanent ports installed, and whether hotplugging is -supported. Technically, hotplugging support depends on libvirt and qemu, and is -not related to the domain in itself. -

- -If hotplugging were supported, we could stop here and run stap directly -(assuming we have a virtio-serial controller already in place, see -DESCRIPTION). Since in our case hotplugging is not supported, we need to -add SystemTap ports. To do this, we use the port-add command: -

- -

- -
- -

-
-$ stapvirt port-add TestVM
-Added new port org.systemtap.stapsh.0
-The domain must be restarted before changes take effect.
-
-
- -
- - -

- -

-We can confirm that a port was added by running the query command again: -

- -

- -
- -

-
-$ stapvirt query TestVM
-...
-   Permanent Ports:  1
-       Hotplugging:  not supported
-
-
- -
- - -

- -

-It now indicates that there is 1 permanent port. We can also use the -port-list command to know exactly where the port will be created: -

- -

- -
- -

-
-$ stapvirt port-list TestVM
-/var/lib/libvirt/qemu/TestVM.org.systemtap.stapsh.0.sock
-
-
- -
- - -

- -

-After powering off and restarting the domain, we are now ready to use the port -with stap: -

- -

- -
- -

-
-$ stap -e 'probe begin { printf("Hello from TestVM!\n"); exit() }' \
-       --remote=libvirt://TestVM
-Hello from TestVM!
-
-
- -
- - -

- -

-Finally, if we'd like to remove the port, we can use the port-remove -command: -

- -

- -
- -

-
-$ stapvirt port-remove TestVM
-Removed port org.systemtap.stapsh.0
-The domain must be powered off before changes take effect.
-
-
- -
- - -

- -

-And that's all there is to it! -

-  -

SEE ALSO

- - -
-stap(1),
-virt-install(1)
-
-
  -

BUGS

- -Use the Bugzilla link of the project web page or our mailing list. - -http://sourceware.org/systemtap/,<systemtap@sourceware.org>. - - -

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
DESCRIPTION
-
OPTIONS
-
COMMANDS
-
TUTORIAL
-
SEE ALSO
-
BUGS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:26 GMT, March 18, 2014 - - diff --git a/man/systemtap.8.html b/man/systemtap.8.html deleted file mode 100644 index 4599104f..00000000 --- a/man/systemtap.8.html +++ /dev/null @@ -1,778 +0,0 @@ - -Manpage of SYSTEMTAP - -

SYSTEMTAP

-Section: Maintenance Commands (8)
Index -Return to Main Contents
- -  -

NAME

- -systemtap - SystemTap initscript service -

- - - -

-  -

SYNOPSIS

- -service systemtap - -COMMAND [OPTIONS] [SCRIPT...] - -

-  -

DESCRIPTION

- -The SystemTap initscript aims to provide a way to run scripts as a service and -easily control them individually. Scripts can be configured to start upon manual -request, or during system startup. On dracut-based systems, it is also possible -to integrate scripts in the initramfs and have them start during early-boot. -

-There are various parameters and options available to modify global behaviour, -as well as script behaviour. Dependencies between scripts can be established so -that starting one starts others (especially convenient when using the --DRELAY_HOST and -DRELAY_GUEST options of stap(1)). -

-The configuration file of the initscript is located at -${prefix}/etc/systemtap/config. Acceptable parameters are detailed in the -GLOBAL PARAMETERS section. -

-Scripts must be placed in the ${prefix}/etc/systemtap/script.d directory -and must have a .stp extension. When referring to them on the command-line -however, there in no need to include the .stp extension. The scripts -directory may be changed by setting the SCRIPT_PATH parameter in the -configuration file. -

-  -

COMMANDS

- -One of the commands below must be specified: -

-

-
start - -
-Start SCRIPTs. If no scripts are specified, start the scripts specified by -the DEFAULT_START configuration. If DEFAULT_START is not set, start all scripts -in the script directory. For scripts already started, the command is ignored. -The command will fail if the scripts fail to start (see also the PASSALL -configuration). -

-If the AUTOCOMPILE configuration is on, the command will try to compile or -update the specified scripts when one of the below conditions is true: -

-
-
-
-The compiled cache file does not exist. -
-
-The mtime (modified timestamp) of the original script file is newer than the -time of the compiled script cache. -
-
-The specified stap options used to compile the script has been changed (see -also the SCRIPT PARAMETERS section). -
-
-The result of `uname -a` has been changed. -
-
- -

-

stop - -
-Stop SCRIPTs. If no scripts are specified, stop all running scripts. For -scripts already stopped, the command is ignored. The command will fail if the -scripts fail to stop (see also the PASSALL configuration). -

-

restart - -
-Stop and start SCRIPTs. -

-

status - -
-Show the state of SCRIPTs and their dependencies. -

-

compile - -
-Compile SCRIPTs but do not start them. If the scripts have already been -compiled, prompt for confirmation before overwriting cache. Compile for the -current kernel, or the kernel release specified by the -r option. -

-

onboot - -
-Make SCRIPTs part of the initramfs so that they are started earlier during -the boot process. This command is only available on dracut-based systems. If no -scripts are specified, create a normal initramfs devoid of any SystemTap files. -

-The initramfs is created for the current kernel, or the kernel release specified -by the -r option. The path of the created initramfs defaults -to /boot/initramfs-KVER.img, where KVER is the output of `uname -r`. Use -the -o option to specify a different path. -

-If the output file already exists, it is overwritten, unless the -b switch -is given, in which case the file is appended .bak rather than overwritten. -However, if there is already a .bak version of the file, the backup will -not be overwritten. -

-WARNING: do not use the -o option of stap(1) with onboot scripts -because the script is started before the root filesystem is even mounted. -Increase the buffer size if more space is needed. -

-

cleanup - -
-Delete the compiled SCRIPTs from cache. If no scripts are specified, then -all compiled scripts are deleted. Only the cache for the current kernel is -deleted, or the kernel release specified by the -r option. Prompt for -confirmation before deleting. -

-

-  -

OPTIONS

- -Many of the commands can also take options. However, since users can't pass -these options on boot, they are only meant for managing scripts after boot and -for testing. Available options are: -

-

-
-c CONFIG_FILE - -
-Specify a different configuration file in place of the default one. -

-

-R - -
-When using the start and stop commands, also include the scripts' -dependencies (recursively). -

-

-r KERNEL_RELEASE - -
-When using the compile, onboot, and cleanup commands, specify -the target kernel version rather than using the current one. Must be in the same -format as `uname -r`. -

-

-y - -
-Answer yes for all prompts. -

-

-o PATH.IMG - -
-When using the onboot command, specify the output path of the created -initramfs. -

-

-b - -
-When using the onboot command, backup an existing initramfs image by -adding a .bak extension rather than overwriting it. Without this option, -the initramfs is overwritten. -

-

-  -

GLOBAL PARAMETERS

- -These parameters affect the general behaviour of the SystemTap initscript -service. They can be specified in the configuration file. -

-

-
SCRIPT_PATH - -
-Specify the absolute path of the script directory. These are the scripts on -which the initscript can operate. Scripts must have the .stp extension. -The default path is ${prefix}/etc/systemtap/script.d. -

-

CONFIG_PATH - -
-Specify the absolute path of the script configuration directory. These -configuration files contain options for specific scripts. They must have the -.conf extension. The default path is ${prefix}/etc/systemtap/conf.d. -

-

CACHE_PATH - -
-Specify the absolute path of the cache directory. The default path is -${prefix}/var/cache/systemtap. -

-

TEMP_PATH - -
-Specify the absolute path of the temporary directory in which SystemTap -makes temporary directories to compile scripts. The default path is /tmp. -

-

STAT_PATH - -
-Specify the absolute path of the directory containing PID files used to track -the status of SystemTap scripts. The default path is -${prefix}/var/run/systemtap. -

-

LOG_FILE - -
-Specify the absolute path of the log file. All messages are sent to this file, -including compilation and runtime errors. The default path is -${prefix}/var/log/systemtap.log. -

-

PASSALL - -
-If this is set yes, initscript commands that operate on multiple scripts -will report as failed when the action could not be performed on at least one -script. If set to no, only a warning is emitted. The default is yes. -

-

RECURSIVE - -
-If this is set yes, the initscript will always follow script dependencies -recursively. This means that there is no need to specify the -R option. -This flag is effective only if you specify script(s) from the command-line. The -default is no. -

-

AUTOCOMPILE - -
-If this is set yes, the initscript automatically tries to compile -specified scripts when needed if there is no valid cache. Otherwise, the related -command simply fails. The default is yes. -

-

DEFAULT_START - -
-Specify scripts which will be started by default. If omitted (or empty), all -scripts in the script directory will be started. The default is "". -

-

ALLOW_CACHEONLY - -
-If this is set yes, the initscript will also allow operating on scripts -that are located in the cache directory, but not in the script directory. The -default is no. -

-WARNING: the initscript may load unexpected obsolete caches with this option. -The cache directory should be checked before enabling this option. -

-

LOG_BOOT_ERR - -
-Because boot-time scripts are run before the root filesystem is mounted, -staprun's stderr cannot be logged to the LOG_FILE as usual. However, the log -can instead be output to /var/run/systemtap/$script.log by setting LOG_BOOT_ERR -to yes. If STAT_PATH is different from the default, the log files will be -moved there upon executing any of the initscript commands. The default is -no. -

-

-

- -Here is a global configuration file example: - -

- -
- -

-
-SCRIPT_PATH=/var/systemtap/script.d/
-PASSALL=yes
-RECURSIVE=no
-
-
- -
- - -

- -

-  -

SCRIPT PARAMETERS

- -These parameters affect the compilation or runtime behaviour of specific -SystemTap scripts. They must be placed in config files located in the -CONFIG_PATH directory. -

-

-
<SCRIPT>_OPT - -
-Specify options passed to the stap(1) command for the SCRIPT. Here, SCRIPT -is the name of the script file without the .stp extension. Note that the --F option is always added. -

-The following options are ignored when compiling scripts: -p, -m, -r, -c, -x, --e, -s, -o, -h, -V, -k. -

-The following options are ignored when running starting scripts: -h, -V, -v, -t, --p, -I, -e, -R, -r, -m, -k, -g, -P, -D, -b, -u, -q, -w, -l, -d, -L, -F, and all -long options. -

-

<SCRIPT>_REQ - -
-Specify script dependencies (i.e. which script this script requires). For -example, if foo.stp requires (or needs to run after) bar.stp, set - -

- -
- -

-
-foo_REQ="bar"
-
-
- -
- - -

- -Specify multiple scripts by separating their names by spaces. -

-

-

- -Here is a script configuration file example: - -

- -
- -

-
-script1_OPT="-o /var/log/script1.out -DRELAY_HOST=group1"
-script2_OPT="-DRELAY_GUEST=group1"
-script2_REQ="script1"
-
-
- -
- - -

- -

-  -

EXAMPLES

- -

-

-
INSTALLING SCRIPTS - -
-We first copy a SystemTap script (e.g. "script1.stp") into the script directory: - -

- -
- -

-
-# cp script1.stp /etc/systemtap/script.d/
-
-
- -
- - -

- -We can then set any script options, for example: - -

- -
- -

-
-# vi /etc/systemtap/conf.d/group1
-script1_OPT="-o /var/log/group1.out -DRELAY_HOST=group1"
-
-
- -
- - -

- -If we then install a script (e.g. "script2.stp") which shares a buffer with -script1, there is a dependency. In this case, we can do the following: - -

- -
- -

-
-# cp script2.stp /etc/systemtap/script.d/
-# vi /etc/systemtap/conf.d/group1
-script2_OPT="-DRELAY_GUEST=group1"
-script2_REQ="script1"
-
-
- -
- - -

- -This way, if stap(1) fails to run script1, the initscript will not even -try to run script2. -

-

TESTING - -
-After installing scripts, we can test that they work by simply doing: - -

- -
- -

-
-# service systemtap start
-# service systemtap stop
-
-
- -
- - -

- -We could be more specific as well, for example: - -

- -
- -

-
-# service systemtap start script1
-# service systemtap stop script1
-
-
- -
- - -

- -If there were no errors, we are ready to use it. -

-

ENABLING SERVICE - -
-After we're satisfied with the scripts and their tests, we can enable the -SystemTap initscript service: - -

- -
- -

-
-# chkconfig systemtap on
-
-
- -
- - -

- -

-

DELETING SCRIPTS - -
-Scripts are deleted by simply removing them from the script directory and -removing any configuration lines specific to them: - -

- -
- -

-
-# rm /etc/systemtap/script.d/script2.stp
-# vi /etc/systemtap/conf.d/group1
-
-
- -
- - -

- -If the script is still running, we also need to stop it: - -

- -
- -

-
-# service systemtap stop script2
-
-
- -
- - -

- -We can then also remove the cache associated with the script: - -

- -
- -

-
-# service systemtap cleanup script2
-
-
- -
- - -

- -

-

PREPARING FOR KERNEL UPDATES - -
-Usually, there is nothing to do when booting into a new kernel. The initscript -will see that the kernel version is different and will compile the scripts. The -compilation can be done beforehand as well to avoid having to compile during -boot by using the -r option: - -

- -
- -

-
-# service systemtap compile myscript -r <NEW_KERNEL_VERSION>
-
-
- -
- - -

- -

-

IMPORTING COMPILED SCRIPTS - -
-For environments which lack compilation infrastructure (e.g. no compilers or -debuginfo), such as a production system, the scripts can be compiled on another -(development) machine and then transferred over to the production system: - -

- -
- -

-
-# service systemtap compile myscript -r \
-
-> <KERNEL_VERSION_OF_TARGET_MACHINE> -# tar czf stap-scripts-<kernel-version>.tar.gz \ -
-> /var/cache/systemtap/<kernel-version> \ -
-> /etc/systemtap/conf.d/<configfile> - -
- -
- - -

- -And then copy this package to the target machine and extract it. -

-

STARTING SCRIPTS DURING EARLY-BOOT - -
-The initscript also allows us to start scripts earlier during the boot process -by creating an initramfs containing the script's module. The system must be -dracut-based for this to work. Starting a script at this stage gives access to -information otherwise very hard to obtain. -

-We first install the script by copying it into the script directory as usual and -setting whatever options we'd like: - -

- -
- -

-
-# cp myscript.stp /etc/systemtap/script.d
-# vi /etc/systemtap/conf.d/myscript.conf
-
-
- -
- - -

- -To add the script to the initramfs, we use the onboot command: - -

- -
- -

-
-# service systemtap onboot myscript
-
-
- -
- - -

- -If the script is not already compiled and cached, it will be done at this point. -A new initramfs will then be created at the default location. We can use the --b option to ensure that the existing initramfs is backed up. We can then -restart the system. -

-

USING A DIFFERENT INITRAMFS - -
-If we would prefer to only start the script for one boot and not others, it -might be easier to instead use the -o option to specify a different -initramfs output file: - -

- -
- -

-
-# service systemtap onboot myscript \
->   -o /boot/special_initramfs.img
-
-
- -
- - -

- -Once the initramfs is created, it's simply a matter of changing the command-line -options at boot-time so that the new image is used rather than the usual one. -

-

CREATING AN INITRAMFS FOR A DIFFERENT KERNEL - -
-Just like the compile command, we can use the -r option to specify the -kernel for which we want to create the initramfs. This is useful when we are -about to upgrade and would like to prepare in advance. For example: - -

- -
- -

-
-# service systemtap onboot myscript \
->   -r 3.12.6-200.fc19.x86_64
-
-
- -
- - -

- -

-

REMOVING SCRIPTS FROM THE INITRAMFS - -
-Finally, to remove all script from the initramfs, we simple run the onboot -command without specifying any scripts: - -

- -
- -

-
-# service systemtap onboot
-
-
- -
- - -

- -This will simply create a standard initramfs without any SystemTap modules -inserted. -

-

TROUBLESHOOTING EARLY-BOOT ISSUES - -
-There can be many reasons for which the module didn't insert or did not work as -expected. It may be useful to turn on dracut debugging by adding 'rdinitdebug' -to the kernel command-line and checking dmesg/journalctl -ae. Also, the stderr -output of staprun can be captured by setting the LOG_BOOT_ERR option to -yes. -

-

-  -

SEE ALSO

- -stap(1) - -

-  -

BUGS

- -Use the Bugzilla link of the project web page or our mailing list. - -http://sourceware.org/systemtap/, <systemtap@sourceware.org>. - - -

-

- -


- 

Index

-
-
NAME
-
SYNOPSIS
-
DESCRIPTION
-
COMMANDS
-
OPTIONS
-
GLOBAL PARAMETERS
-
SCRIPT PARAMETERS
-
EXAMPLES
-
SEE ALSO
-
BUGS
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::ansi.3stap.html b/man/tapset::ansi.3stap.html deleted file mode 100644 index 47450e4d..00000000 --- a/man/tapset::ansi.3stap.html +++ /dev/null @@ -1,219 +0,0 @@ - -Manpage of tapset::ansi - -

tapset::ansi

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::ansi - systemtap ansi tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
ansi_clear_screen - -
-Move cursor to top left and clear screen. -
-See -function::ansi_clear_screen(3stap) - -
 for details. -
-

- -

-
ansi_set_color - -
-Set the ansi Select Graphic Rendition mode. -
-See -function::ansi_set_color(3stap) - -
 for details. -
-

- -

-
ansi_set_color2 - -
-Set the ansi Select Graphic Rendition mode. -
-See -function::ansi_set_color2(3stap) - -
 for details. -
-

- -

-
ansi_set_color3 - -
-Set the ansi Select Graphic Rendition mode. -
-See -function::ansi_set_color3(3stap) - -
 for details. -
-

- -

-
ansi_reset_color - -
-Resets Select Graphic Rendition mode. -
-See -function::ansi_reset_color(3stap) - -
 for details. -
-

- -

-
ansi_new_line - -
-Move cursor to new line. -
-See -function::ansi_new_line(3stap) - -
 for details. -
-

- -

-
ansi_cursor_move - -
-Move cursor to new coordinates. -
-See -function::ansi_cursor_move(3stap) - -
 for details. -
-

- -

-
ansi_cursor_hide - -
-Hides the cursor. -
-See -function::ansi_cursor_hide(3stap) - -
 for details. -
-

- -

-
ansi_cursor_save - -
-Saves the cursor position. -
-See -function::ansi_cursor_save(3stap) - -
 for details. -
-

- -

-
ansi_cursor_restore - -
-Restores a previously saved cursor position. -
-See -function::ansi_cursor_restore(3stap) - -
 for details. -
-

- -

-
ansi_cursor_show - -
-Shows the cursor. -
-See -function::ansi_cursor_show(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::ansi_clear_screen(3stap), - - -function::ansi_set_color(3stap), - - -function::ansi_set_color2(3stap), - - -function::ansi_set_color3(3stap), - - -function::ansi_reset_color(3stap), - - -function::ansi_new_line(3stap), - - -function::ansi_cursor_move(3stap), - - -function::ansi_cursor_hide(3stap), - - -function::ansi_cursor_save(3stap), - - -function::ansi_cursor_restore(3stap), - - -function::ansi_cursor_show(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/tapset::atomic.3stap.html b/man/tapset::atomic.3stap.html deleted file mode 100644 index ca04394e..00000000 --- a/man/tapset::atomic.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of tapset::atomic - -

tapset::atomic

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::atomic - systemtap atomic tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
atomic_read - -
-Retrieves an atomic variable from kernel memory -
-See -function::atomic_read(3stap) - -
 for details. -
-

- -

-
atomic_long_read - -
-Retrieves an atomic long variable from kernel memory -
-See -function::atomic_long_read(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::atomic_read(3stap), - - -function::atomic_long_read(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/tapset::context-caller.3stap.html b/man/tapset::context-caller.3stap.html deleted file mode 100644 index 6422886a..00000000 --- a/man/tapset::context-caller.3stap.html +++ /dev/null @@ -1,95 +0,0 @@ - -Manpage of tapset::context-caller - -

tapset::context-caller

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::context-caller - systemtap context-caller tapset -
  -  -

DESCRIPTION

- -

-
 Provides caller and caller_addr function for context for kernel and user -
 space. -

-

-
-

- -

-
-
callers - -
-Return first n elements of kernel stack backtrace -
-See -function::callers(3stap) - -
 for details. -
-

- -

-
caller - -
-Return name and address of calling function -
-See -function::caller(3stap) - -
 for details. -
-

- -

-
caller_addr - -
-Return caller address -
-See -function::caller_addr(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::callers(3stap), - - -function::caller(3stap), - - -function::caller_addr(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/tapset::context-envvar.3stap.html b/man/tapset::context-envvar.3stap.html deleted file mode 100644 index f0881886..00000000 --- a/man/tapset::context-envvar.3stap.html +++ /dev/null @@ -1,64 +0,0 @@ - -Manpage of tapset::context-envvar - -

tapset::context-envvar

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::context-envvar - systemtap context-envvar tapset -
  -  -

DESCRIPTION

- -

-
 Context functions provide additional information about where an event occurred. These functions can -provide information such as a backtrace to where the event occurred and the current register values for the -processor. -

-

-
-

- -

-
-
env_var - -
-Fetch environment variable from current process -
-See -function::env_var(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::env_var(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/tapset::context-symbols.3stap.html b/man/tapset::context-symbols.3stap.html deleted file mode 100644 index bab1c2e3..00000000 --- a/man/tapset::context-symbols.3stap.html +++ /dev/null @@ -1,208 +0,0 @@ - -Manpage of tapset::context-symbols - -

tapset::context-symbols

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::context-symbols - systemtap context-symbols tapset -
  -  -

DESCRIPTION

- -

-
 Context functions provide additional information about where an event occurred. These functions can  -provide information such as a backtrace to where the event occurred and the current register values for the -processor. -

-

-
-

- -

-
-
stack - -
-Return address at given depth of kernel stack backtrace -
-See -function::stack(3stap) - -
 for details. -
-

- -

-
print_stack - -
-Print out kernel stack from string -
-See -function::print_stack(3stap) - -
 for details. -
-

- -

-
sprint_stack - -
-Return stack for kernel addresses from string -
-See -function::sprint_stack(3stap) - -
 for details. -
-

- -

-
probefunc - -
-Return the probe point's function name, if known -
-See -function::probefunc(3stap) - -
 for details. -
-

- -

-
probemod - -
-Return the probe point's kernel module name -
-See -function::probemod(3stap) - -
 for details. -
-

- -

-
modname - -
-Return the kernel module name loaded at the address -
-See -function::modname(3stap) - -
 for details. -
-

- -

-
symname - -
-Return the kernel symbol associated with the given address -
-See -function::symname(3stap) - -
 for details. -
-

- -

-
symdata - -
-Return the kernel symbol and module offset for the address -
-See -function::symdata(3stap) - -
 for details. -
-

- -

-
print_syms - -
-Print out kernel stack from string -
-See -function::print_syms(3stap) - -
 for details. -
-

- -

-
sprint_syms - -
-Return stack for kernel addresses from string -
-See -function::sprint_syms(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::stack(3stap), - - -function::print_stack(3stap), - - -function::sprint_stack(3stap), - - -function::probefunc(3stap), - - -function::probemod(3stap), - - -function::modname(3stap), - - -function::symname(3stap), - - -function::symdata(3stap), - - -function::print_syms(3stap), - - -function::sprint_syms(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::context-unwind.3stap.html b/man/tapset::context-unwind.3stap.html deleted file mode 100644 index 079d5262..00000000 --- a/man/tapset::context-unwind.3stap.html +++ /dev/null @@ -1,112 +0,0 @@ - -Manpage of tapset::context-unwind - -

tapset::context-unwind

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::context-unwind - systemtap context-unwind tapset -
  -  -

DESCRIPTION

- -

-
 Context functions provide additional information about where an event occurred. These functions can  -provide information such as a backtrace to where the event occurred and the current register values for the -processor. -

-

-
-

- -

-
-
print_backtrace - -
-Print kernel stack back trace -
-See -function::print_backtrace(3stap) - -
 for details. -
-

- -

-
sprint_backtrace - -
-Return stack back trace as string -
-See -function::sprint_backtrace(3stap) - -
 for details. -
-

- -

-
backtrace - -
-Hex backtrace of current kernel stack -
-See -function::backtrace(3stap) - -
 for details. -
-

- -

-
task_backtrace - -
-Hex backtrace of an arbitrary task -
-See -function::task_backtrace(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::print_backtrace(3stap), - - -function::sprint_backtrace(3stap), - - -function::backtrace(3stap), - - -function::task_backtrace(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::context.3stap.html b/man/tapset::context.3stap.html deleted file mode 100644 index fa553e70..00000000 --- a/man/tapset::context.3stap.html +++ /dev/null @@ -1,592 +0,0 @@ - -Manpage of tapset::context - -

tapset::context

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::context - systemtap context tapset -
  -  -

DESCRIPTION

- -

-
 Context functions provide additional information about where an event occurred. These functions can -provide information such as a backtrace to where the event occurred and the current register values for the -processor. -

-

-
-

- -

-
-
print_regs - -
-Print a register dump -
-See -function::print_regs(3stap) - -
 for details. -
-

- -

-
pp - -
-Returns the active probe point -
-See -function::pp(3stap) - -
 for details. -
-

- -

-
ppfunc - -
-Returns the function name parsed from pp() -
-See -function::ppfunc(3stap) - -
 for details. -
-

- -

-
probe_type - -
-The low level probe handler type of the current probe. -
-See -function::probe_type(3stap) - -
 for details. -
-

- -

-
execname - -
-Returns the execname of a target process (or group of processes) -
-See -function::execname(3stap) - -
 for details. -
-

- -

-
pid - -
-Returns the ID of a target process -
-See -function::pid(3stap) - -
 for details. -
-

- -

-
tid - -
-Returns the thread ID of a target process -
-See -function::tid(3stap) - -
 for details. -
-

- -

-
ppid - -
-Returns the process ID of a target process's parent process -
-See -function::ppid(3stap) - -
 for details. -
-

- -

-
pgrp - -
-Returns the process group ID of the current process -
-See -function::pgrp(3stap) - -
 for details. -
-

- -

-
sid - -
-Returns the session ID of the current process -
-See -function::sid(3stap) - -
 for details. -
-

- -

-
pexecname - -
-Returns the execname of a target process's parent process -
-See -function::pexecname(3stap) - -
 for details. -
-

- -

-
gid - -
-Returns the group ID of a target process -
-See -function::gid(3stap) - -
 for details. -
-

- -

-
egid - -
-Returns the effective gid of a target process -
-See -function::egid(3stap) - -
 for details. -
-

- -

-
uid - -
-Returns the user ID of a target process -
-See -function::uid(3stap) - -
 for details. -
-

- -

-
euid - -
-Return the effective uid of a target process -
-See -function::euid(3stap) - -
 for details. -
-

- -

-
is_myproc - -
-Determines if the current probe point has occurred in the user's own process -
-See -function::is_myproc(3stap) - -
 for details. -
-

- -

-
cpuid - -
-Returns the current cpu number -
-See -function::cpuid(3stap) - -
 for details. -
-

- -

-
cpu - -
-Returns the current cpu number -
-See -function::cpu(3stap) - -
 for details. -
-

- -

-
registers_valid - -
-Determines validity of register() and u_register() in current context -
-See -function::registers_valid(3stap) - -
 for details. -
-

- -

-
user_mode - -
-Determines if probe point occurs in user-mode -
-See -function::user_mode(3stap) - -
 for details. -
-

- -

-
is_return - -
-Whether the current probe context is a return probe -
-See -function::is_return(3stap) - -
 for details. -
-

- -

-
target - -
-Return the process ID of the target process -
-See -function::target(3stap) - -
 for details. -
-

- -

-
module_name - -
-The module name of the current script -
-See -function::module_name(3stap) - -
 for details. -
-

- -

-
stp_pid - -
-The process id of the stapio process -
-See -function::stp_pid(3stap) - -
 for details. -
-

- -

-
remote_id - -
-The index of this instance in a remote execution. -
-See -function::remote_id(3stap) - -
 for details. -
-

- -

-
remote_uri - -
-The name of this instance in a remote execution. -
-See -function::remote_uri(3stap) - -
 for details. -
-

- -

-
stack_size - -
-Return the size of the kernel stack -
-See -function::stack_size(3stap) - -
 for details. -
-

- -

-
stack_used - -
-Returns the amount of kernel stack used -
-See -function::stack_used(3stap) - -
 for details. -
-

- -

-
stack_unused - -
-Returns the amount of kernel stack currently available -
-See -function::stack_unused(3stap) - -
 for details. -
-

- -

-
addr - -
-Address of the current probe point. -
-See -function::addr(3stap) - -
 for details. -
-

- -

-
uaddr - -
-User space address of current running task -
-See -function::uaddr(3stap) - -
 for details. -
-

- -

-
cmdline_args - -
-Fetch command line arguments from current process -
-See -function::cmdline_args(3stap) - -
 for details. -
-

- -

-
cmdline_arg - -
-Fetch a command line argument -
-See -function::cmdline_arg(3stap) - -
 for details. -
-

- -

-
cmdline_str - -
-Fetch all command line arguments from current process -
-See -function::cmdline_str(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::print_regs(3stap), - - -function::pp(3stap), - - -function::ppfunc(3stap), - - -function::probe_type(3stap), - - -function::execname(3stap), - - -function::pid(3stap), - - -function::tid(3stap), - - -function::ppid(3stap), - - -function::pgrp(3stap), - - -function::sid(3stap), - - -function::pexecname(3stap), - - -function::gid(3stap), - - -function::egid(3stap), - - -function::uid(3stap), - - -function::euid(3stap), - - -function::is_myproc(3stap), - - -function::cpuid(3stap), - - -function::cpu(3stap), - - -function::registers_valid(3stap), - - -function::user_mode(3stap), - - -function::is_return(3stap), - - -function::target(3stap), - - -function::module_name(3stap), - - -function::stp_pid(3stap), - - -function::remote_id(3stap), - - -function::remote_uri(3stap), - - -function::stack_size(3stap), - - -function::stack_used(3stap), - - -function::stack_unused(3stap), - - -function::addr(3stap), - - -function::uaddr(3stap), - - -function::cmdline_args(3stap), - - -function::cmdline_arg(3stap), - - -function::cmdline_str(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:29 GMT, March 18, 2014 - - diff --git a/man/tapset::conversions-guru.3stap.html b/man/tapset::conversions-guru.3stap.html deleted file mode 100644 index 34f9c6ed..00000000 --- a/man/tapset::conversions-guru.3stap.html +++ /dev/null @@ -1,155 +0,0 @@ - -Manpage of tapset::conversions-guru - -

tapset::conversions-guru

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::conversions-guru - systemtap conversions-guru tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
set_kernel_string - -
-Writes a string to kernel memory -
-See -function::set_kernel_string(3stap) - -
 for details. -
-

- -

-
set_kernel_string_n - -
-Writes a string of given length to kernel memory -
-See -function::set_kernel_string_n(3stap) - -
 for details. -
-

- -

-
set_kernel_long - -
-Writes a long value to kernel memory -
-See -function::set_kernel_long(3stap) - -
 for details. -
-

- -

-
set_kernel_int - -
-Writes an int value to kernel memory -
-See -function::set_kernel_int(3stap) - -
 for details. -
-

- -

-
set_kernel_short - -
-Writes a short value to kernel memory -
-See -function::set_kernel_short(3stap) - -
 for details. -
-

- -

-
set_kernel_char - -
-Writes a char value to kernel memory -
-See -function::set_kernel_char(3stap) - -
 for details. -
-

- -

-
set_kernel_pointer - -
-Writes a pointer value to kernel memory. -
-See -function::set_kernel_pointer(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::set_kernel_string(3stap), - - -function::set_kernel_string_n(3stap), - - -function::set_kernel_long(3stap), - - -function::set_kernel_int(3stap), - - -function::set_kernel_short(3stap), - - -function::set_kernel_char(3stap), - - -function::set_kernel_pointer(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::conversions.3stap.html b/man/tapset::conversions.3stap.html deleted file mode 100644 index 570bc3f6..00000000 --- a/man/tapset::conversions.3stap.html +++ /dev/null @@ -1,235 +0,0 @@ - -Manpage of tapset::conversions - -

tapset::conversions

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::conversions - systemtap conversions tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
kernel_string - -
-Retrieves string from kernel memory -
-See -function::kernel_string(3stap) - -
 for details. -
-

- -

-
kernel_string2 - -
-Retrieves string from kernel memory with alternative error string -
-See -function::kernel_string2(3stap) - -
 for details. -
-

- -

-
kernel_string_n - -
-Retrieves string of given length from kernel memory -
-See -function::kernel_string_n(3stap) - -
 for details. -
-

- -

-
kernel_string_utf32 - -
-Retrieves UTF-32 string from kernel memory -
-See -function::kernel_string_utf32(3stap) - -
 for details. -
-

- -

-
kernel_string2_utf32 - -
-Retrieves UTF-32 string from kernel memory with alternative error string -
-See -function::kernel_string2_utf32(3stap) - -
 for details. -
-

- -

-
kernel_string_utf16 - -
-Retrieves UTF-16 string from kernel memory -
-See -function::kernel_string_utf16(3stap) - -
 for details. -
-

- -

-
kernel_string2_utf16 - -
-Retrieves UTF-16 string from kernel memory with alternative error string -
-See -function::kernel_string2_utf16(3stap) - -
 for details. -
-

- -

-
kernel_long - -
-Retrieves a long value stored in kernel memory -
-See -function::kernel_long(3stap) - -
 for details. -
-

- -

-
kernel_int - -
-Retrieves an int value stored in kernel memory -
-See -function::kernel_int(3stap) - -
 for details. -
-

- -

-
kernel_short - -
-Retrieves a short value stored in kernel memory -
-See -function::kernel_short(3stap) - -
 for details. -
-

- -

-
kernel_char - -
-Retrieves a char value stored in kernel memory -
-See -function::kernel_char(3stap) - -
 for details. -
-

- -

-
kernel_pointer - -
-Retrieves a pointer value stored in kernel memory -
-See -function::kernel_pointer(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::kernel_string(3stap), - - -function::kernel_string2(3stap), - - -function::kernel_string_n(3stap), - - -function::kernel_string_utf32(3stap), - - -function::kernel_string2_utf32(3stap), - - -function::kernel_string_utf16(3stap), - - -function::kernel_string2_utf16(3stap), - - -function::kernel_long(3stap), - - -function::kernel_int(3stap), - - -function::kernel_short(3stap), - - -function::kernel_char(3stap), - - -function::kernel_pointer(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::ctime.3stap.html b/man/tapset::ctime.3stap.html deleted file mode 100644 index c6cfa29b..00000000 --- a/man/tapset::ctime.3stap.html +++ /dev/null @@ -1,59 +0,0 @@ - -Manpage of tapset::ctime - -

tapset::ctime

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::ctime - systemtap ctime tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
ctime - -
-Convert seconds since epoch into human readable date/time string -
-See -function::ctime(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::ctime(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::dentry.3stap.html b/man/tapset::dentry.3stap.html deleted file mode 100644 index 77b38eaa..00000000 --- a/man/tapset::dentry.3stap.html +++ /dev/null @@ -1,42 +0,0 @@ - -Manpage of tapset::dentry - -

tapset::dentry

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::dentry - systemtap dentry tapset -
  -  -

DESCRIPTION

- -
-
-
-  -

SEE ALSO

- - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::dev.3stap.html b/man/tapset::dev.3stap.html deleted file mode 100644 index a8068fe6..00000000 --- a/man/tapset::dev.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of tapset::dev - -

tapset::dev

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::dev - systemtap dev tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
MAJOR - -
-Extract major device number from a kernel device number (kdev_t) -
-See -function::MAJOR(3stap) - -
 for details. -
-

- -

-
MINOR - -
-Extract minor device number from a kernel device number (kdev_t) -
-See -function::MINOR(3stap) - -
 for details. -
-

- -

-
MKDEF - -
-Creates a value that can be compared to a kernel device number (kdev_t) -
-See -function::MKDEF(3stap) - -
 for details. -
-

- -

-
usrdev2kerndev - -
-Converts a user-space device number into the format used in the kernel -
-See -function::usrdev2kerndev(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::MAJOR(3stap), - - -function::MINOR(3stap), - - -function::MKDEF(3stap), - - -function::usrdev2kerndev(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::errno.3stap.html b/man/tapset::errno.3stap.html deleted file mode 100644 index a41c5f05..00000000 --- a/man/tapset::errno.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of tapset::errno - -

tapset::errno

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::errno - systemtap errno tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
errno_str - -
-Symbolic string associated with error code -
-See -function::errno_str(3stap) - -
 for details. -
-

- -

-
returnval - -
-Possible return value of probed function -
-See -function::returnval(3stap) - -
 for details. -
-

- -

-
returnstr - -
-Formats the return value as a string -
-See -function::returnstr(3stap) - -
 for details. -
-

- -

-
return_str - -
-Formats the return value as a string -
-See -function::return_str(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::errno_str(3stap), - - -function::returnval(3stap), - - -function::returnstr(3stap), - - -function::return_str(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::guru-delay.3stap.html b/man/tapset::guru-delay.3stap.html deleted file mode 100644 index 0a7b0560..00000000 --- a/man/tapset::guru-delay.3stap.html +++ /dev/null @@ -1,81 +0,0 @@ - -Manpage of tapset::guru-delay - -

tapset::guru-delay

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::guru-delay - systemtap guru-delay tapset -
  -  -

DESCRIPTION

- -

-
 Functions in the guru-delay tapset allow a probe handler to insert -
 deliberate delays.  This is sometimes useful as a fault-injection -
 aid.  Due to its likelihood of interference with the kernel, guru -
 mode is required, and overload-prevention is suppressed. -

-

-
-

- -

-
-
mdelay - -
-millisecond delay -
-See -function::mdelay(3stap) - -
 for details. -
-

- -

-
udelay - -
-microsecond delay -
-See -function::udelay(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::mdelay(3stap), - - -function::udelay(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::guru-signal.3stap.html b/man/tapset::guru-signal.3stap.html deleted file mode 100644 index 40be283c..00000000 --- a/man/tapset::guru-signal.3stap.html +++ /dev/null @@ -1,64 +0,0 @@ - -Manpage of tapset::guru-signal - -

tapset::guru-signal

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::guru-signal - systemtap guru-signal tapset -
  -  -

DESCRIPTION

- -

-
 Functions in the guru-signal tapset allow a probe handler to queue -
 a user-space signals.  Such operations may only be safe from some  -
 kinds of probe points, therefore are guru-mode only. -

-

-
-

- -

-
-
raise - -
-raise a signal in the current thread -
-See -function::raise(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::raise(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::indent.3stap.html b/man/tapset::indent.3stap.html deleted file mode 100644 index c705525e..00000000 --- a/man/tapset::indent.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of tapset::indent - -

tapset::indent

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::indent - systemtap indent tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
thread_indent - -
-returns an amount of space with the current task information -
-See -function::thread_indent(3stap) - -
 for details. -
-

- -

-
thread_indent_depth - -
-returns the nested-depth of the current task -
-See -function::thread_indent_depth(3stap) - -
 for details. -
-

- -

-
indent - -
-returns an amount of space to indent -
-See -function::indent(3stap) - -
 for details. -
-

- -

-
indent_depth - -
-returns the global nested-depth -
-See -function::indent_depth(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::thread_indent(3stap), - - -function::thread_indent_depth(3stap), - - -function::indent(3stap), - - -function::indent_depth(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::inet.3stap.html b/man/tapset::inet.3stap.html deleted file mode 100644 index 28746ec2..00000000 --- a/man/tapset::inet.3stap.html +++ /dev/null @@ -1,139 +0,0 @@ - -Manpage of tapset::inet - -

tapset::inet

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::inet - systemtap inet tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
htonll - -
-Convert 64-bit long long from host to network order -
-See -function::htonll(3stap) - -
 for details. -
-

- -

-
htonl - -
-Convert 32-bit long from host to network order -
-See -function::htonl(3stap) - -
 for details. -
-

- -

-
htons - -
-Convert 16-bit short from host to network order -
-See -function::htons(3stap) - -
 for details. -
-

- -

-
ntohll - -
-Convert 64-bit long long from network to host order -
-See -function::ntohll(3stap) - -
 for details. -
-

- -

-
ntohl - -
-Convert 32-bit long from network to host order -
-See -function::ntohl(3stap) - -
 for details. -
-

- -

-
ntohs - -
-Convert 16-bit short from network to host order -
-See -function::ntohs(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::htonll(3stap), - - -function::htonl(3stap), - - -function::htons(3stap), - - -function::ntohll(3stap), - - -function::ntohl(3stap), - - -function::ntohs(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::inet_sock.3stap.html b/man/tapset::inet_sock.3stap.html deleted file mode 100644 index c94af897..00000000 --- a/man/tapset::inet_sock.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of tapset::inet_sock - -

tapset::inet_sock

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::inet_sock - systemtap inet_sock tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
inet_get_local_port - -
-Provide local port number for a kernel socket -
-See -function::inet_get_local_port(3stap) - -
 for details. -
-

- -

-
inet_get_ip_source - -
-Provide IP source address string for a kernel socket -
-See -function::inet_get_ip_source(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::inet_get_local_port(3stap), - - -function::inet_get_ip_source(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::ioblock.3stap.html b/man/tapset::ioblock.3stap.html deleted file mode 100644 index 5b787ef5..00000000 --- a/man/tapset::ioblock.3stap.html +++ /dev/null @@ -1,123 +0,0 @@ - -Manpage of tapset::ioblock - -

tapset::ioblock

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::ioblock - systemtap ioblock tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
ioblock.request - -
-Fires whenever making a generic block I/O request. -
-
 See  -probe::ioblock.request(3stap) - -
 for details. -
-

- -

-
ioblock.end - -
-Fires whenever a block I/O transfer is complete. -
-
 See  -probe::ioblock.end(3stap) - -
 for details. -
-

- -

-
ioblock_trace.bounce - -
-Fires whenever a buffer bounce is needed for at least one page of a block IO request. -
-
 See  -probe::ioblock_trace.bounce(3stap) - -
 for details. -
-

- -

-
ioblock_trace.request - -
-Fires just as a generic block I/O request is created for a bio. -
-
 See  -probe::ioblock_trace.request(3stap) - -
 for details. -
-

- -

-
ioblock_trace.end - -
-Fires whenever a block I/O transfer is complete. -
-
 See  -probe::ioblock_trace.end(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::ioblock.request(3stap), - - -probe::ioblock.end(3stap), - - -probe::ioblock_trace.bounce(3stap), - - -probe::ioblock_trace.request(3stap), - - -probe::ioblock_trace.end(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::ioscheduler.3stap.html b/man/tapset::ioscheduler.3stap.html deleted file mode 100644 index 9f754d8d..00000000 --- a/man/tapset::ioscheduler.3stap.html +++ /dev/null @@ -1,254 +0,0 @@ - -Manpage of tapset::ioscheduler - -

tapset::ioscheduler

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::ioscheduler - systemtap ioscheduler tapset -
  -  -

DESCRIPTION

- -

-
 This family of probe points is used to probe IO scheduler activities.  -

-

-
-

- -

-
-
ioscheduler.elv_next_request - -
-Fires when a request is retrieved from the request queue -
-
 See  -probe::ioscheduler.elv_next_request(3stap) - -
 for details. -
-

- -

-
ioscheduler.elv_next_request.return - -
-Fires when a request retrieval issues a return signal -
-
 See  -probe::ioscheduler.elv_next_request.return(3stap) - -
 for details. -
-

- -

-
ioscheduler.elv_completed_request - -
-Fires when a request is completed -
-
 See  -probe::ioscheduler.elv_completed_request(3stap) - -
 for details. -
-

- -

-
ioscheduler.elv_add_request.kp - -
-kprobe based probe to indicate that a request was added to the request queue -
-
 See  -probe::ioscheduler.elv_add_request.kp(3stap) - -
 for details. -
-

- -

-
ioscheduler.elv_add_request.tp - -
-tracepoint based probe to indicate a request is added to the request queue. -
-
 See  -probe::ioscheduler.elv_add_request.tp(3stap) - -
 for details. -
-

- -

-
ioscheduler.elv_add_request - -
-probe to indicate request is added to the request queue. -
-
 See  -probe::ioscheduler.elv_add_request(3stap) - -
 for details. -
-

- -

-
ioscheduler_trace.elv_completed_request - -
-Fires when a request is -
-
 See  -probe::ioscheduler_trace.elv_completed_request(3stap) - -
 for details. -
-

- -

-
ioscheduler_trace.elv_issue_request - -
-Fires when a request is -
-
 See  -probe::ioscheduler_trace.elv_issue_request(3stap) - -
 for details. -
-

- -

-
ioscheduler_trace.elv_requeue_request - -
-Fires when a request is -
-
 See  -probe::ioscheduler_trace.elv_requeue_request(3stap) - -
 for details. -
-

- -

-
ioscheduler_trace.elv_abort_request - -
-Fires when a request is aborted. -
-
 See  -probe::ioscheduler_trace.elv_abort_request(3stap) - -
 for details. -
-

- -

-
ioscheduler_trace.plug - -
-Fires when a request queue is plugged; -
-
 See  -probe::ioscheduler_trace.plug(3stap) - -
 for details. -
-

- -

-
ioscheduler_trace.unplug_io - -
-Fires when a request queue is unplugged; -
-
 See  -probe::ioscheduler_trace.unplug_io(3stap) - -
 for details. -
-

- -

-
ioscheduler_trace.unplug_timer - -
-Fires when unplug timer associated -
-
 See  -probe::ioscheduler_trace.unplug_timer(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::ioscheduler.elv_next_request(3stap), - - -probe::ioscheduler.elv_next_request.return(3stap), - - -probe::ioscheduler.elv_completed_request(3stap), - - -probe::ioscheduler.elv_add_request.kp(3stap), - - -probe::ioscheduler.elv_add_request.tp(3stap), - - -probe::ioscheduler.elv_add_request(3stap), - - -probe::ioscheduler_trace.elv_completed_request(3stap), - - -probe::ioscheduler_trace.elv_issue_request(3stap), - - -probe::ioscheduler_trace.elv_requeue_request(3stap), - - -probe::ioscheduler_trace.elv_abort_request(3stap), - - -probe::ioscheduler_trace.plug(3stap), - - -probe::ioscheduler_trace.unplug_io(3stap), - - -probe::ioscheduler_trace.unplug_timer(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::ip.3stap.html b/man/tapset::ip.3stap.html deleted file mode 100644 index b5476254..00000000 --- a/man/tapset::ip.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of tapset::ip - -

tapset::ip

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::ip - systemtap ip tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
format_ipaddr - -
-Returns a string representation for an IP address -
-See -function::format_ipaddr(3stap) - -
 for details. -
-

- -

-
ip_ntop - -
-Returns a string representation for an IPv4 address -
-See -function::ip_ntop(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::format_ipaddr(3stap), - - -function::ip_ntop(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::ipmib-filter-default.3stap.html b/man/tapset::ipmib-filter-default.3stap.html deleted file mode 100644 index 74dac6fd..00000000 --- a/man/tapset::ipmib-filter-default.3stap.html +++ /dev/null @@ -1,59 +0,0 @@ - -Manpage of tapset::ipmib-filter-default - -

tapset::ipmib-filter-default

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::ipmib-filter-default - systemtap ipmib-filter-default tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
ipmib_filter_key - -
-Default filter function for ipmib.* probes -
-See -function::ipmib_filter_key(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::ipmib_filter_key(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::ipmib.3stap.html b/man/tapset::ipmib.3stap.html deleted file mode 100644 index e8b3d321..00000000 --- a/man/tapset::ipmib.3stap.html +++ /dev/null @@ -1,299 +0,0 @@ - -Manpage of tapset::ipmib - -

tapset::ipmib

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::ipmib - systemtap ipmib tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
ipmib_remote_addr - -
-Get the remote ip address -
-See -function::ipmib_remote_addr(3stap) - -
 for details. -
-

- -

-
ipmib_local_addr - -
-Get the local ip address -
-See -function::ipmib_local_addr(3stap) - -
 for details. -
-

- -

-
ipmib_tcp_remote_port - -
-Get the remote tcp port -
-See -function::ipmib_tcp_remote_port(3stap) - -
 for details. -
-

- -

-
ipmib_tcp_local_port - -
-Get the local tcp port -
-See -function::ipmib_tcp_local_port(3stap) - -
 for details. -
-

- -

-
ipmib_get_proto - -
-Get the protocol value -
-See -function::ipmib_get_proto(3stap) - -
 for details. -
-

- -

-
ipmib.InReceives - -
-Count an arriving packet -
-
 See  -probe::ipmib.InReceives(3stap) - -
 for details. -
-

- -

-
ipmib.InNoRoutes - -
-Count an arriving packet with no matching socket -
-
 See  -probe::ipmib.InNoRoutes(3stap) - -
 for details. -
-

- -

-
ipmib.InAddrErrors - -
-Count arriving packets with an incorrect address -
-
 See  -probe::ipmib.InAddrErrors(3stap) - -
 for details. -
-

- -

-
ipmib.InUnknownProtos - -
-Count arriving packets with an unbound proto -
-
 See  -probe::ipmib.InUnknownProtos(3stap) - -
 for details. -
-

- -

-
ipmib.InDiscards - -
-Count discarded inbound packets -
-
 See  -probe::ipmib.InDiscards(3stap) - -
 for details. -
-

- -

-
ipmib.ForwDatagrams - -
-Count forwarded packet -
-
 See  -probe::ipmib.ForwDatagrams(3stap) - -
 for details. -
-

- -

-
ipmib.OutRequests - -
-Count a request to send a packet -
-
 See  -probe::ipmib.OutRequests(3stap) - -
 for details. -
-

- -

-
ipmib.ReasmTimeout - -
-Count Reassembly Timeouts -
-
 See  -probe::ipmib.ReasmTimeout(3stap) - -
 for details. -
-

- -

-
ipmib.ReasmReqds - -
-Count number of packet fragments reassembly requests -
-
 See  -probe::ipmib.ReasmReqds(3stap) - -
 for details. -
-

- -

-
ipmib.FragOKs - -
-Count datagram fragmented successfully -
-
 See  -probe::ipmib.FragOKs(3stap) - -
 for details. -
-

- -

-
ipmib.FragFails - -
-Count datagram fragmented unsuccessfully -
-
 See  -probe::ipmib.FragFails(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::ipmib_remote_addr(3stap), - - -function::ipmib_local_addr(3stap), - - -function::ipmib_tcp_remote_port(3stap), - - -function::ipmib_tcp_local_port(3stap), - - -function::ipmib_get_proto(3stap), - - -probe::ipmib.InReceives(3stap), - - -probe::ipmib.InNoRoutes(3stap), - - -probe::ipmib.InAddrErrors(3stap), - - -probe::ipmib.InUnknownProtos(3stap), - - -probe::ipmib.InDiscards(3stap), - - -probe::ipmib.ForwDatagrams(3stap), - - -probe::ipmib.OutRequests(3stap), - - -probe::ipmib.ReasmTimeout(3stap), - - -probe::ipmib.ReasmReqds(3stap), - - -probe::ipmib.FragOKs(3stap), - - -probe::ipmib.FragFails(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::irq.3stap.html b/man/tapset::irq.3stap.html deleted file mode 100644 index 57c69f72..00000000 --- a/man/tapset::irq.3stap.html +++ /dev/null @@ -1,171 +0,0 @@ - -Manpage of tapset::irq - -

tapset::irq

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::irq - systemtap irq tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
workqueue.create - -
-Creating a new workqueue -
-
 See  -probe::workqueue.create(3stap) - -
 for details. -
-

- -

-
workqueue.insert - -
-Queuing work on a workqueue -
-
 See  -probe::workqueue.insert(3stap) - -
 for details. -
-

- -

-
workqueue.execute - -
-Executing deferred work -
-
 See  -probe::workqueue.execute(3stap) - -
 for details. -
-

- -

-
workqueue.destroy - -
-Destroying workqueue -
-
 See  -probe::workqueue.destroy(3stap) - -
 for details. -
-

- -

-
irq_handler.entry - -
-Execution of interrupt handler starting -
-
 See  -probe::irq_handler.entry(3stap) - -
 for details. -
-

- -

-
irq_handler.exit - -
-Execution of interrupt handler completed -
-
 See  -probe::irq_handler.exit(3stap) - -
 for details. -
-

- -

-
softirq.entry - -
-Execution of handler for a pending softirq starting -
-
 See  -probe::softirq.entry(3stap) - -
 for details. -
-

- -

-
softirq.exit - -
-Execution of handler for a pending softirq completed -
-
 See  -probe::softirq.exit(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::workqueue.create(3stap), - - -probe::workqueue.insert(3stap), - - -probe::workqueue.execute(3stap), - - -probe::workqueue.destroy(3stap), - - -probe::irq_handler.entry(3stap), - - -probe::irq_handler.exit(3stap), - - -probe::softirq.entry(3stap), - - -probe::softirq.exit(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::kprocess.3stap.html b/man/tapset::kprocess.3stap.html deleted file mode 100644 index a63379cd..00000000 --- a/man/tapset::kprocess.3stap.html +++ /dev/null @@ -1,142 +0,0 @@ - -Manpage of tapset::kprocess - -

tapset::kprocess

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::kprocess - systemtap kprocess tapset -
  -  -

DESCRIPTION

- -

-
  This family of probe points is used to probe process-related activities. -

-

-
-

- -

-
-
kprocess.create - -
-Fires whenever a new process or thread is successfully created -
-
 See  -probe::kprocess.create(3stap) - -
 for details. -
-

- -

-
kprocess.start - -
-Starting new process -
-
 See  -probe::kprocess.start(3stap) - -
 for details. -
-

- -

-
kprocess.exec - -
-Attempt to exec to a new program -
-
 See  -probe::kprocess.exec(3stap) - -
 for details. -
-

- -

-
kprocess.exec_complete - -
-Return from exec to a new program -
-
 See  -probe::kprocess.exec_complete(3stap) - -
 for details. -
-

- -

-
kprocess.exit - -
-Exit from process -
-
 See  -probe::kprocess.exit(3stap) - -
 for details. -
-

- -

-
kprocess.release - -
-Process released -
-
 See  -probe::kprocess.release(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::kprocess.create(3stap), - - -probe::kprocess.start(3stap), - - -probe::kprocess.exec(3stap), - - -probe::kprocess.exec_complete(3stap), - - -probe::kprocess.exit(3stap), - - -probe::kprocess.release(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::linuxmib-filter-default.3stap.html b/man/tapset::linuxmib-filter-default.3stap.html deleted file mode 100644 index 967b776f..00000000 --- a/man/tapset::linuxmib-filter-default.3stap.html +++ /dev/null @@ -1,59 +0,0 @@ - -Manpage of tapset::linuxmib-filter-default - -

tapset::linuxmib-filter-default

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::linuxmib-filter-default - systemtap linuxmib-filter-default tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
linuxmib_filter_key - -
-Default filter function for linuxmib.* probes -
-See -function::linuxmib_filter_key(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::linuxmib_filter_key(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::linuxmib.3stap.html b/man/tapset::linuxmib.3stap.html deleted file mode 100644 index 554ff20a..00000000 --- a/man/tapset::linuxmib.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of tapset::linuxmib - -

tapset::linuxmib

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::linuxmib - systemtap linuxmib tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
linuxmib.DelayedACKs - -
-Count of delayed acks -
-
 See  -probe::linuxmib.DelayedACKs(3stap) - -
 for details. -
-

- -

-
linuxmib.ListenOverflows - -
-Count of times a listen queue overflowed -
-
 See  -probe::linuxmib.ListenOverflows(3stap) - -
 for details. -
-

- -

-
linuxmib.ListenDrops - -
-Count of times conn request that were dropped -
-
 See  -probe::linuxmib.ListenDrops(3stap) - -
 for details. -
-

- -

-
linuxmib.TCPMemoryPressures - -
-Count of times memory pressure was used -
-
 See  -probe::linuxmib.TCPMemoryPressures(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::linuxmib.DelayedACKs(3stap), - - -probe::linuxmib.ListenOverflows(3stap), - - -probe::linuxmib.ListenDrops(3stap), - - -probe::linuxmib.TCPMemoryPressures(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::loadavg.3stap.html b/man/tapset::loadavg.3stap.html deleted file mode 100644 index b55ee2d9..00000000 --- a/man/tapset::loadavg.3stap.html +++ /dev/null @@ -1,79 +0,0 @@ - -Manpage of tapset::loadavg - -

tapset::loadavg

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::loadavg - systemtap loadavg tapset -
  -  -

DESCRIPTION

- -

-
 Functions in the loadavg tapset allow a probe handler to capture -
 the load average. -

-

-
-

- -

-
-
get_loadavg_index - -
-Get the load average for a specified interval -
-See -function::get_loadavg_index(3stap) - -
 for details. -
-

- -

-
sprint_loadavg - -
-Report a pretty-printed load average -
-See -function::sprint_loadavg(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::get_loadavg_index(3stap), - - -function::sprint_loadavg(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::logging.3stap.html b/man/tapset::logging.3stap.html deleted file mode 100644 index 19c555b9..00000000 --- a/man/tapset::logging.3stap.html +++ /dev/null @@ -1,139 +0,0 @@ - -Manpage of tapset::logging - -

tapset::logging

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::logging - systemtap logging tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
log - -
-Send a line to the common trace buffer -
-See -function::log(3stap) - -
 for details. -
-

- -

-
warn - -
-Send a line to the warning stream -
-See -function::warn(3stap) - -
 for details. -
-

- -

-
exit - -
-Start shutting down probing script. -
-See -function::exit(3stap) - -
 for details. -
-

- -

-
error - -
-Send an error message -
-See -function::error(3stap) - -
 for details. -
-

- -

-
ftrace - -
-Send a message to the ftrace ring-buffer -
-See -function::ftrace(3stap) - -
 for details. -
-

- -

-
printk - -
-Send a message to the kernel trace buffer -
-See -function::printk(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::log(3stap), - - -function::warn(3stap), - - -function::exit(3stap), - - -function::error(3stap), - - -function::ftrace(3stap), - - -function::printk(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::memory.3stap.html b/man/tapset::memory.3stap.html deleted file mode 100644 index dce74484..00000000 --- a/man/tapset::memory.3stap.html +++ /dev/null @@ -1,302 +0,0 @@ - -Manpage of tapset::memory - -

tapset::memory

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::memory - systemtap memory tapset -
  -  -

DESCRIPTION

- -

-
 This family of probe points is used to probe memory-related events.  -

-

-
-

- -

-
-
vm_fault_contains - -
-Test return value for page fault reason -
-See -function::vm_fault_contains(3stap) - -
 for details. -
-

- -

-
vm.pagefault - -
-Records that a page fault occurred -
-
 See  -probe::vm.pagefault(3stap) - -
 for details. -
-

- -

-
vm.pagefault.return - -
-Indicates what type of fault occurred -
-
 See  -probe::vm.pagefault.return(3stap) - -
 for details. -
-

- -

-
addr_to_node - -
-Returns which node a given address belongs to within a NUMA system -
-See -function::addr_to_node(3stap) - -
 for details. -
-

- -

-
vm.write_shared - -
-Attempts at writing to a shared page -
-
 See  -probe::vm.write_shared(3stap) - -
 for details. -
-

- -

-
vm.write_shared_copy - -
-Page copy for shared page write -
-
 See  -probe::vm.write_shared_copy(3stap) - -
 for details. -
-

- -

-
vm.mmap - -
-Fires when an mmap is requested -
-
 See  -probe::vm.mmap(3stap) - -
 for details. -
-

- -

-
vm.munmap - -
-Fires when an munmap is requested -
-
 See  -probe::vm.munmap(3stap) - -
 for details. -
-

- -

-
vm.brk - -
-Fires when a brk is requested (i.e. the heap will be resized) -
-
 See  -probe::vm.brk(3stap) - -
 for details. -
-

- -

-
vm.oom_kill - -
-Fires when a thread is selected for termination by the OOM killer -
-
 See  -probe::vm.oom_kill(3stap) - -
 for details. -
-

- -

-
vm.kmalloc - -
-Fires when kmalloc is requested -
-
 See  -probe::vm.kmalloc(3stap) - -
 for details. -
-

- -

-
vm.kmem_cache_alloc - -
-Fires when kmem_cache_alloc is requested -
-
 See  -probe::vm.kmem_cache_alloc(3stap) - -
 for details. -
-

- -

-
vm.kmalloc_node - -
-Fires when kmalloc_node is requested -
-
 See  -probe::vm.kmalloc_node(3stap) - -
 for details. -
-

- -

-
vm.kmem_cache_alloc_node - -
-Fires when kmem_cache_alloc_node is requested -
-
 See  -probe::vm.kmem_cache_alloc_node(3stap) - -
 for details. -
-

- -

-
vm.kfree - -
-Fires when kfree is requested -
-
 See  -probe::vm.kfree(3stap) - -
 for details. -
-

- -

-
vm.kmem_cache_free - -
-Fires when kmem_cache_free is requested -
-
 See  -probe::vm.kmem_cache_free(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::vm_fault_contains(3stap), - - -function::addr_to_node(3stap), - - -probe::vm.pagefault(3stap), - - -probe::vm.pagefault.return(3stap), - - -probe::vm.write_shared(3stap), - - -probe::vm.write_shared_copy(3stap), - - -probe::vm.mmap(3stap), - - -probe::vm.munmap(3stap), - - -probe::vm.brk(3stap), - - -probe::vm.oom_kill(3stap), - - -probe::vm.kmalloc(3stap), - - -probe::vm.kmem_cache_alloc(3stap), - - -probe::vm.kmalloc_node(3stap), - - -probe::vm.kmem_cache_alloc_node(3stap), - - -probe::vm.kfree(3stap), - - -probe::vm.kmem_cache_free(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::netfilter.3stap.html b/man/tapset::netfilter.3stap.html deleted file mode 100644 index 5ca790dd..00000000 --- a/man/tapset::netfilter.3stap.html +++ /dev/null @@ -1,186 +0,0 @@ - -Manpage of tapset::netfilter - -

tapset::netfilter

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::netfilter - systemtap netfilter tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
netfilter.ip.pre_routing - -
-Called before an IP packet is routed -
-
 See  -probe::netfilter.ip.pre_routing(3stap) - -
 for details. -
-

- -

-
netfilter.ip.local_in - -
-Called on an incoming IP packet addressed to the local computer -
-
 See  -probe::netfilter.ip.local_in(3stap) - -
 for details. -
-

- -

-
netfilter.ip.forward - -
-Called on an incoming IP packet addressed to some other computer -
-
 See  -probe::netfilter.ip.forward(3stap) - -
 for details. -
-

- -

-
netfilter.ip.local_out - -
-Called on an outgoing IP packet -
-
 See  -probe::netfilter.ip.local_out(3stap) - -
 for details. -
-

- -

-
netfilter.ip.post_routing - -
-Called immediately before an outgoing IP packet leaves the computer -
-
 See  -probe::netfilter.ip.post_routing(3stap) - -
 for details. -
-

- -

-
netfilter.bridge.local_in - -
-Called on a bridging packet destined for the local computer -
-
 See  -probe::netfilter.bridge.local_in(3stap) - -
 for details. -
-

- -

-
netfilter.bridge.forward - -
-Called on an incoming bridging packet destined for some other computer -
-
 See  -probe::netfilter.bridge.forward(3stap) - -
 for details. -
-

- -

-
netfilter.bridge.local_out - -
-Called on a bridging packet coming from a local process -
-
 See  -probe::netfilter.bridge.local_out(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::netfilter.ip.pre_routing(3stap), - - -probe::netfilter.ip.local_in(3stap), - - -probe::netfilter.ip.forward(3stap), - - -probe::netfilter.ip.local_out(3stap), - - -probe::netfilter.ip.post_routing(3stap), - - -probe::netfilter.arp.in(3stap), - - -probe::netfilter.arp.out(3stap), - - -probe::netfilter.arp.forward(3stap), - - -probe::netfilter.bridge.pre_routing(3stap), - - -probe::netfilter.bridge.local_in(3stap), - - -probe::netfilter.bridge.forward(3stap), - - -probe::netfilter.bridge.local_out(3stap), - - -probe::netfilter.bridge.post_routing(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::networking.3stap.html b/man/tapset::networking.3stap.html deleted file mode 100644 index eb15d2b9..00000000 --- a/man/tapset::networking.3stap.html +++ /dev/null @@ -1,270 +0,0 @@ - -Manpage of tapset::networking - -

tapset::networking

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::networking - systemtap networking tapset -
  -  -

DESCRIPTION

- -

-
 This family of probe points is used to probe the activities of the network device.  -

-

-
-

- -

-
-
netdev.receive - -
-Data received from network device. -
-
 See  -probe::netdev.receive(3stap) - -
 for details. -
-

- -

-
netdev.transmit - -
-Network device transmitting buffer -
-
 See  -probe::netdev.transmit(3stap) - -
 for details. -
-

- -

-
netdev.change_mtu - -
-Called when the netdev MTU is changed -
-
 See  -probe::netdev.change_mtu(3stap) - -
 for details. -
-

- -

-
netdev.open - -
-Called when the device is opened -
-
 See  -probe::netdev.open(3stap) - -
 for details. -
-

- -

-
netdev.close - -
-Called when the device is closed -
-
 See  -probe::netdev.close(3stap) - -
 for details. -
-

- -

-
netdev.hard_transmit - -
-Called when the devices is going to TX (hard) -
-
 See  -probe::netdev.hard_transmit(3stap) - -
 for details. -
-

- -

-
netdev.rx - -
-Called when the device is going to receive a packet -
-
 See  -probe::netdev.rx(3stap) - -
 for details. -
-

- -

-
netdev.change_rx_flag - -
-Called when the device RX flag will be changed -
-
 See  -probe::netdev.change_rx_flag(3stap) - -
 for details. -
-

- -

-
netdev.set_promiscuity - -
-Called when the device enters/leaves promiscuity -
-
 See  -probe::netdev.set_promiscuity(3stap) - -
 for details. -
-

- -

-
netdev.ioctl - -
-Called when the device suffers an IOCTL -
-
 See  -probe::netdev.ioctl(3stap) - -
 for details. -
-

- -

-
netdev.register - -
-Called when the device is registered -
-
 See  -probe::netdev.register(3stap) - -
 for details. -
-

- -

-
netdev.unregister - -
-Called when the device is being unregistered -
-
 See  -probe::netdev.unregister(3stap) - -
 for details. -
-

- -

-
netdev.get_stats - -
-Called when someone asks the device statistics -
-
 See  -probe::netdev.get_stats(3stap) - -
 for details. -
-

- -

-
netdev.change_mac - -
-Called when the netdev_name has the MAC changed -
-
 See  -probe::netdev.change_mac(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::netdev.receive(3stap), - - -probe::netdev.transmit(3stap), - - -probe::netdev.change_mtu(3stap), - - -probe::netdev.open(3stap), - - -probe::netdev.close(3stap), - - -probe::netdev.hard_transmit(3stap), - - -probe::netdev.rx(3stap), - - -probe::netdev.change_rx_flag(3stap), - - -probe::netdev.set_promiscuity(3stap), - - -probe::netdev.ioctl(3stap), - - -probe::netdev.register(3stap), - - -probe::netdev.unregister(3stap), - - -probe::netdev.get_stats(3stap), - - -probe::netdev.change_mac(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::nfs.3stap.html b/man/tapset::nfs.3stap.html deleted file mode 100644 index 0a26fb32..00000000 --- a/man/tapset::nfs.3stap.html +++ /dev/null @@ -1,379 +0,0 @@ - -Manpage of tapset::nfs - -

tapset::nfs

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::nfs - systemtap nfs tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
nfs.fop.llseek - -
-NFS client llseek operation -
-
 See  -probe::nfs.fop.llseek(3stap) - -
 for details. -
-

- -

-
nfs.fop.read - -
-NFS client read operation -
-
 See  -probe::nfs.fop.read(3stap) - -
 for details. -
-

- -

-
nfs.fop.write - -
-NFS client write operation -
-
 See  -probe::nfs.fop.write(3stap) - -
 for details. -
-

- -

-
nfs.fop.aio_read - -
-NFS client aio_read file operation -
-
 See  -probe::nfs.fop.aio_read(3stap) - -
 for details. -
-

- -

-
nfs.fop.aio_write - -
-NFS client aio_write file operation -
-
 See  -probe::nfs.fop.aio_write(3stap) - -
 for details. -
-

- -

-
nfs.fop.mmap - -
-NFS client mmap operation -
-
 See  -probe::nfs.fop.mmap(3stap) - -
 for details. -
-

- -

-
nfs.fop.open - -
-NFS client file open operation -
-
 See  -probe::nfs.fop.open(3stap) - -
 for details. -
-

- -

-
nfs.fop.flush - -
-NFS client flush file operation -
-
 See  -probe::nfs.fop.flush(3stap) - -
 for details. -
-

- -

-
nfs.fop.release - -
-NFS client release page operation -
-
 See  -probe::nfs.fop.release(3stap) - -
 for details. -
-

- -

-
nfs.fop.fsync - -
-NFS client fsync operation -
-
 See  -probe::nfs.fop.fsync(3stap) - -
 for details. -
-

- -

-
nfs.fop.lock - -
-NFS client file lock operation -
-
 See  -probe::nfs.fop.lock(3stap) - -
 for details. -
-

- -

-
nfs.fop.sendfile - -
-NFS client send file operation -
-
 See  -probe::nfs.fop.sendfile(3stap) - -
 for details. -
-

- -

-
nfs.fop.check_flags - -
-NFS client checking flag operation -
-
 See  -probe::nfs.fop.check_flags(3stap) - -
 for details. -
-

- -

-
nfs.aop.readpage - -
-NFS client synchronously reading a page -
-
 See  -probe::nfs.aop.readpage(3stap) - -
 for details. -
-

- -

-
nfs.aop.readpages - -
-NFS client reading multiple pages -
-
 See  -probe::nfs.aop.readpages(3stap) - -
 for details. -
-

- -

-
nfs.aop.set_page_dirty - -
-NFS client marking page as dirty -
-
 See  -probe::nfs.aop.set_page_dirty(3stap) - -
 for details. -
-

- -

-
nfs.aop.writepage - -
-NFS client writing a mapped page to the NFS server -
-
 See  -probe::nfs.aop.writepage(3stap) - -
 for details. -
-

- -

-
nfs.aop.writepages - -
-NFS client writing several dirty pages to the NFS server -
-
 See  -probe::nfs.aop.writepages(3stap) - -
 for details. -
-

- -

-
nfs.aop.write_begin - -
-NFS client begin to write data -
-
 See  -probe::nfs.aop.write_begin(3stap) - -
 for details. -
-

- -

-
nfs.aop.write_end - -
-NFS client complete writing data -
-
 See  -probe::nfs.aop.write_end(3stap) - -
 for details. -
-

- -

-
nfs.aop.release_page - -
-NFS client releasing page -
-
 See  -probe::nfs.aop.release_page(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::nfs.fop.llseek(3stap), - - -probe::nfs.fop.read(3stap), - - -probe::nfs.fop.write(3stap), - - -probe::nfs.fop.aio_read(3stap), - - -probe::nfs.fop.aio_write(3stap), - - -probe::nfs.fop.mmap(3stap), - - -probe::nfs.fop.open(3stap), - - -probe::nfs.fop.flush(3stap), - - -probe::nfs.fop.release(3stap), - - -probe::nfs.fop.fsync(3stap), - - -probe::nfs.fop.lock(3stap), - - -probe::nfs.fop.sendfile(3stap), - - -probe::nfs.fop.check_flags(3stap), - - -probe::nfs.aop.readpage(3stap), - - -probe::nfs.aop.readpages(3stap), - - -probe::nfs.aop.set_page_dirty(3stap), - - -probe::nfs.aop.writepage(3stap), - - -probe::nfs.aop.writepages(3stap), - - -probe::nfs.aop.write_begin(3stap), - - -probe::nfs.aop.write_end(3stap), - - -probe::nfs.aop.release_page(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::nfs_proc.3stap.html b/man/tapset::nfs_proc.3stap.html deleted file mode 100644 index 3ca4c008..00000000 --- a/man/tapset::nfs_proc.3stap.html +++ /dev/null @@ -1,299 +0,0 @@ - -Manpage of tapset::nfs_proc - -

tapset::nfs_proc

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::nfs_proc - systemtap nfs_proc tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
nfs.proc.lookup - -
-NFS client opens/searches a file on server -
-
 See  -probe::nfs.proc.lookup(3stap) - -
 for details. -
-

- -

-
nfs.proc.read - -
-NFS client synchronously reads file from server -
-
 See  -probe::nfs.proc.read(3stap) - -
 for details. -
-

- -

-
nfs.proc.write - -
-NFS client synchronously writes file to server -
-
 See  -probe::nfs.proc.write(3stap) - -
 for details. -
-

- -

-
nfs.proc.commit - -
-NFS client committing data on server -
-
 See  -probe::nfs.proc.commit(3stap) - -
 for details. -
-

- -

-
nfs.proc.read_setup - -
-NFS client setting up a read RPC task -
-
 See  -probe::nfs.proc.read_setup(3stap) - -
 for details. -
-

- -

-
nfs.proc.read_done - -
-NFS client response to a read RPC task -
-
 See  -probe::nfs.proc.read_done(3stap) - -
 for details. -
-

- -

-
nfs.proc.write_setup - -
-NFS client setting up a write RPC task -
-
 See  -probe::nfs.proc.write_setup(3stap) - -
 for details. -
-

- -

-
nfs.proc.write_done - -
-NFS client response to a write RPC task -
-
 See  -probe::nfs.proc.write_done(3stap) - -
 for details. -
-

- -

-
nfs.proc.commit_setup - -
-NFS client setting up a commit RPC task -
-
 See  -probe::nfs.proc.commit_setup(3stap) - -
 for details. -
-

- -

-
nfs.proc.commit_done - -
-NFS client response to a commit RPC task -
-
 See  -probe::nfs.proc.commit_done(3stap) - -
 for details. -
-

- -

-
nfs.proc.open - -
-NFS client allocates file read/write context information -
-
 See  -probe::nfs.proc.open(3stap) - -
 for details. -
-

- -

-
nfs.proc.release - -
-
 NFS client releases file read/write context information -
-
 See  -probe::nfs.proc.release(3stap) - -
 for details. -
-

- -

-
nfs.proc.handle_exception - -
-NFS client handling an NFSv4 exception -
-
 See  -probe::nfs.proc.handle_exception(3stap) - -
 for details. -
-

- -

-
nfs.proc.create - -
-NFS client creating file on server -
-
 See  -probe::nfs.proc.create(3stap) - -
 for details. -
-

- -

-
nfs.proc.remove - -
-NFS client removes a file on server -
-
 See  -probe::nfs.proc.remove(3stap) - -
 for details. -
-

- -

-
nfs.proc.rename - -
-NFS client renames a file on server -
-
 See  -probe::nfs.proc.rename(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::nfs.proc.lookup(3stap), - - -probe::nfs.proc.read(3stap), - - -probe::nfs.proc.write(3stap), - - -probe::nfs.proc.commit(3stap), - - -probe::nfs.proc.read_setup(3stap), - - -probe::nfs.proc.read_done(3stap), - - -probe::nfs.proc.write_setup(3stap), - - -probe::nfs.proc.write_done(3stap), - - -probe::nfs.proc.commit_setup(3stap), - - -probe::nfs.proc.commit_done(3stap), - - -probe::nfs.proc.open(3stap), - - -probe::nfs.proc.release(3stap), - - -probe::nfs.proc.handle_exception(3stap), - - -probe::nfs.proc.create(3stap), - - -probe::nfs.proc.remove(3stap), - - -probe::nfs.proc.rename(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::nfsd.3stap.html b/man/tapset::nfsd.3stap.html deleted file mode 100644 index 5cf58b2b..00000000 --- a/man/tapset::nfsd.3stap.html +++ /dev/null @@ -1,318 +0,0 @@ - -Manpage of tapset::nfsd - -

tapset::nfsd

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::nfsd - systemtap nfsd tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
nfsd.dispatch - -
-NFS server receives an operation from client -
-
 See  -probe::nfsd.dispatch(3stap) - -
 for details. -
-

- -

-
nfsd.proc.lookup - -
-NFS server opening or searching for a file for client -
-
 See  -probe::nfsd.proc.lookup(3stap) - -
 for details. -
-

- -

-
nfsd.proc.read - -
-NFS server reading file for client -
-
 See  -probe::nfsd.proc.read(3stap) - -
 for details. -
-

- -

-
nfsd.proc.write - -
-NFS server writing data to file for client -
-
 See  -probe::nfsd.proc.write(3stap) - -
 for details. -
-

- -

-
nfsd.proc.commit - -
-NFS server performing a commit operation for client -
-
 See  -probe::nfsd.proc.commit(3stap) - -
 for details. -
-

- -

-
nfsd.proc.create - -
-NFS server creating a file for client -
-
 See  -probe::nfsd.proc.create(3stap) - -
 for details. -
-

- -

-
nfsd.proc.remove - -
-NFS server removing a file for client -
-
 See  -probe::nfsd.proc.remove(3stap) - -
 for details. -
-

- -

-
nfsd.proc.rename - -
-NFS Server renaming a file for client -
-
 See  -probe::nfsd.proc.rename(3stap) - -
 for details. -
-

- -

-
nfsd.open - -
-NFS server opening a file for client -
-
 See  -probe::nfsd.open(3stap) - -
 for details. -
-

- -

-
nfsd.close - -
-NFS server closing a file for client -
-
 See  -probe::nfsd.close(3stap) - -
 for details. -
-

- -

-
nfsd.read - -
-NFS server reading data from a file for client -
-
 See  -probe::nfsd.read(3stap) - -
 for details. -
-

- -

-
nfsd.write - -
-NFS server writing data to a file for client -
-
 See  -probe::nfsd.write(3stap) - -
 for details. -
-

- -

-
nfsd.commit - -
-NFS server committing all pending writes to stable storage -
-
 See  -probe::nfsd.commit(3stap) - -
 for details. -
-

- -

-
nfsd.lookup - -
-NFS server opening or searching file for a file for client -
-
 See  -probe::nfsd.lookup(3stap) - -
 for details. -
-

- -

-
nfsd.create - -
-NFS server creating a file(regular,dir,device,fifo) for client -
-
 See  -probe::nfsd.create(3stap) - -
 for details. -
-

- -

-
nfsd.createv3 - -
-NFS server creating a regular file or set file attributes for client -
-
 See  -probe::nfsd.createv3(3stap) - -
 for details. -
-

- -

-
nfsd.unlink - -
-NFS server removing a file or a directory for client -
-
 See  -probe::nfsd.unlink(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::nfsd.dispatch(3stap), - - -probe::nfsd.proc.lookup(3stap), - - -probe::nfsd.proc.read(3stap), - - -probe::nfsd.proc.write(3stap), - - -probe::nfsd.proc.commit(3stap), - - -probe::nfsd.proc.create(3stap), - - -probe::nfsd.proc.remove(3stap), - - -probe::nfsd.proc.rename(3stap), - - -probe::nfsd.open(3stap), - - -probe::nfsd.close(3stap), - - -probe::nfsd.read(3stap), - - -probe::nfsd.write(3stap), - - -probe::nfsd.commit(3stap), - - -probe::nfsd.lookup(3stap), - - -probe::nfsd.create(3stap), - - -probe::nfsd.createv3(3stap), - - -probe::nfsd.unlink(3stap), - - -probe::nfsd.rename(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::nfsderrno.3stap.html b/man/tapset::nfsderrno.3stap.html deleted file mode 100644 index 6266314f..00000000 --- a/man/tapset::nfsderrno.3stap.html +++ /dev/null @@ -1,59 +0,0 @@ - -Manpage of tapset::nfsderrno - -

tapset::nfsderrno

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::nfsderrno - systemtap nfsderrno tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
nfsderror - -
-Convert nfsd error number into string -
-See -function::nfsderror(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::nfsderror(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::panic.3stap.html b/man/tapset::panic.3stap.html deleted file mode 100644 index 304fd56e..00000000 --- a/man/tapset::panic.3stap.html +++ /dev/null @@ -1,69 +0,0 @@ - -Manpage of tapset::panic - -

tapset::panic

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::panic - systemtap panic tapset -
  -  -

DESCRIPTION

- -

-
 Functions in the panic tapset allow a probe handler to invoke -
 the system panic routine with a user-specified message. -

-
 This may be used with a crash dump collection facility such as  -
 kexec/kdump in order to capture data for post-mortem debugging. -

-
 Due to the fact that this will bring the system to an immediate -
 halt the functions in this tapset require guru mode. -

-

-
-

- -

-
-
panic - -
-trigger a panic -
-See -function::panic(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::panic(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::pn.3stap.html b/man/tapset::pn.3stap.html deleted file mode 100644 index e636a203..00000000 --- a/man/tapset::pn.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of tapset::pn - -

tapset::pn

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::pn - systemtap pn tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
pn - -
-Returns the active probe name -
-See -function::pn(3stap) - -
 for details. -
-

- -

-
pnlabel - -
-Returns the label name parsed from the probe name -
-See -function::pnlabel(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::pn(3stap), - - -function::pnlabel(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::proc_mem.3stap.html b/man/tapset::proc_mem.3stap.html deleted file mode 100644 index 3cc1557f..00000000 --- a/man/tapset::proc_mem.3stap.html +++ /dev/null @@ -1,291 +0,0 @@ - -Manpage of tapset::proc_mem - -

tapset::proc_mem

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::proc_mem - systemtap proc_mem tapset -
  -  -

DESCRIPTION

- -

-
 Process memory query and utility functions provide information about -
 the memory usage of the current application. These functions provide -
 information about the full size, resident, shared, code and data used -
 by the current process. And provide utility functions to query the -
 page size of the current architecture and create human readable string -
 representations of bytes and pages used. -

-

-
-

- -

-
-
proc_mem_size - -
-Total program virtual memory size in pages -
-See -function::proc_mem_size(3stap) - -
 for details. -
-

- -

-
proc_mem_size_pid - -
-Total program virtual memory size in pages -
-See -function::proc_mem_size_pid(3stap) - -
 for details. -
-

- -

-
proc_mem_rss - -
-Program resident set size in pages -
-See -function::proc_mem_rss(3stap) - -
 for details. -
-

- -

-
proc_mem_rss_pid - -
-Program resident set size in pages -
-See -function::proc_mem_rss_pid(3stap) - -
 for details. -
-

- -

-
proc_mem_shr - -
-Program shared pages (from shared mappings) -
-See -function::proc_mem_shr(3stap) - -
 for details. -
-

- -

-
proc_mem_shr_pid - -
-Program shared pages (from shared mappings) -
-See -function::proc_mem_shr_pid(3stap) - -
 for details. -
-

- -

-
proc_mem_txt - -
-Program text (code) size in pages -
-See -function::proc_mem_txt(3stap) - -
 for details. -
-

- -

-
proc_mem_txt_pid - -
-Program text (code) size in pages -
-See -function::proc_mem_txt_pid(3stap) - -
 for details. -
-

- -

-
proc_mem_data - -
-Program data size (data + stack) in pages -
-See -function::proc_mem_data(3stap) - -
 for details. -
-

- -

-
proc_mem_data_pid - -
-Program data size (data + stack) in pages -
-See -function::proc_mem_data_pid(3stap) - -
 for details. -
-

- -

-
mem_page_size - -
-Number of bytes in a page for this architecture -
-See -function::mem_page_size(3stap) - -
 for details. -
-

- -

-
bytes_to_string - -
-Human readable string for given bytes -
-See -function::bytes_to_string(3stap) - -
 for details. -
-

- -

-
pages_to_string - -
-Turns pages into a human readable string -
-See -function::pages_to_string(3stap) - -
 for details. -
-

- -

-
proc_mem_string - -
-Human readable string of current proc memory usage -
-See -function::proc_mem_string(3stap) - -
 for details. -
-

- -

-
proc_mem_string_pid - -
-Human readable string of process memory usage -
-See -function::proc_mem_string_pid(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::proc_mem_size(3stap), - - -function::proc_mem_size_pid(3stap), - - -function::proc_mem_rss(3stap), - - -function::proc_mem_rss_pid(3stap), - - -function::proc_mem_shr(3stap), - - -function::proc_mem_shr_pid(3stap), - - -function::proc_mem_txt(3stap), - - -function::proc_mem_txt_pid(3stap), - - -function::proc_mem_data(3stap), - - -function::proc_mem_data_pid(3stap), - - -function::mem_page_size(3stap), - - -function::bytes_to_string(3stap), - - -function::pages_to_string(3stap), - - -function::proc_mem_string(3stap), - - -function::proc_mem_string_pid(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::pstrace.3stap.html b/man/tapset::pstrace.3stap.html deleted file mode 100644 index 1e679ded..00000000 --- a/man/tapset::pstrace.3stap.html +++ /dev/null @@ -1,59 +0,0 @@ - -Manpage of tapset::pstrace - -

tapset::pstrace

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::pstrace - systemtap pstrace tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
pstrace - -
-Chain of processes and pids back to init(1) -
-See -function::pstrace(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::pstrace(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::queue_stats.3stap.html b/man/tapset::queue_stats.3stap.html deleted file mode 100644 index 91df99f8..00000000 --- a/man/tapset::queue_stats.3stap.html +++ /dev/null @@ -1,219 +0,0 @@ - -Manpage of tapset::queue_stats - -

tapset::queue_stats

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::queue_stats - systemtap queue_stats tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
qs_wait - -
-Function to record enqueue requests -
-See -function::qs_wait(3stap) - -
 for details. -
-

- -

-
qs_run - -
-Function to record being moved from wait queue to being serviced -
-See -function::qs_run(3stap) - -
 for details. -
-

- -

-
qs_done - -
-Function to record finishing request -
-See -function::qs_done(3stap) - -
 for details. -
-

- -

-
qsq_start - -
-Function to reset the stats for a queue -
-See -function::qsq_start(3stap) - -
 for details. -
-

- -

-
qsq_utilization - -
-Fraction of time that any request was being serviced -
-See -function::qsq_utilization(3stap) - -
 for details. -
-

- -

-
qsq_blocked - -
-Returns the time reqest was on the wait queue -
-See -function::qsq_blocked(3stap) - -
 for details. -
-

- -

-
qsq_wait_queue_length - -
-length of wait queue -
-See -function::qsq_wait_queue_length(3stap) - -
 for details. -
-

- -

-
qsq_service_time - -
-Amount of time per request service -
-See -function::qsq_service_time(3stap) - -
 for details. -
-

- -

-
qsq_wait_time - -
-Amount of time in queue + service per request -
-See -function::qsq_wait_time(3stap) - -
 for details. -
-

- -

-
qsq_throughput - -
-Number of requests served per unit time -
-See -function::qsq_throughput(3stap) - -
 for details. -
-

- -

-
qsq_print - -
-Prints a line of statistics for the given queue -
-See -function::qsq_print(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::qs_wait(3stap), - - -function::qs_run(3stap), - - -function::qs_done(3stap), - - -function::qsq_start(3stap), - - -function::qsq_utilization(3stap), - - -function::qsq_blocked(3stap), - - -function::qsq_wait_queue_length(3stap), - - -function::qsq_service_time(3stap), - - -function::qsq_wait_time(3stap), - - -function::qsq_throughput(3stap), - - -function::qsq_print(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::random.3stap.html b/man/tapset::random.3stap.html deleted file mode 100644 index f2a20141..00000000 --- a/man/tapset::random.3stap.html +++ /dev/null @@ -1,59 +0,0 @@ - -Manpage of tapset::random - -

tapset::random

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::random - systemtap random tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
randint - -
-Return a random number between [0,n) -
-See -function::randint(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::randint(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::registers.3stap.html b/man/tapset::registers.3stap.html deleted file mode 100644 index 1bbe4eda..00000000 --- a/man/tapset::registers.3stap.html +++ /dev/null @@ -1,299 +0,0 @@ - -Manpage of tapset::registers - -

tapset::registers

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::registers - systemtap registers tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
register - -
-Return the signed value of the named CPU register -
-See -function::register(3stap) - -
 for details. -
-

- -

-
u_register - -
-Return the unsigned value of the named CPU register -
-See -function::u_register(3stap) - -
 for details. -
-

- -

-
int_arg - -
-Return function argument as signed int -
-See -function::int_arg(3stap) - -
 for details. -
-

- -

-
uint_arg - -
-Return function argument as unsigned int -
-See -function::uint_arg(3stap) - -
 for details. -
-

- -

-
long_arg - -
-Return function argument as signed long -
-See -function::long_arg(3stap) - -
 for details. -
-

- -

-
ulong_arg - -
-Return function argument as unsigned long -
-See -function::ulong_arg(3stap) - -
 for details. -
-

- -

-
longlong_arg - -
-Return function argument as 64-bit value -
-See -function::longlong_arg(3stap) - -
 for details. -
-

- -

-
ulonglong_arg - -
-Return function argument as 64-bit value -
-See -function::ulonglong_arg(3stap) - -
 for details. -
-

- -

-
pointer_arg - -
-Return function argument as pointer value -
-See -function::pointer_arg(3stap) - -
 for details. -
-

- -

-
s32_arg - -
-Return function argument as signed 32-bit value -
-See -function::s32_arg(3stap) - -
 for details. -
-

- -

-
u32_arg - -
-Return function argument as unsigned 32-bit value -
-See -function::u32_arg(3stap) - -
 for details. -
-

- -

-
s64_arg - -
-Return function argument as signed 64-bit value -
-See -function::s64_arg(3stap) - -
 for details. -
-

- -

-
u64_arg - -
-Return function argument as unsigned 64-bit value -
-See -function::u64_arg(3stap) - -
 for details. -
-

- -

-
asmlinkage - -
-Mark function as declared asmlinkage -
-See -function::asmlinkage(3stap) - -
 for details. -
-

- -

-
fastcall - -
-Mark function as declared fastcall -
-See -function::fastcall(3stap) - -
 for details. -
-

- -

-
regparm - -
-Specify regparm value used to compile function -
-See -function::regparm(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::register(3stap), - - -function::u_register(3stap), - - -function::int_arg(3stap), - - -function::uint_arg(3stap), - - -function::long_arg(3stap), - - -function::ulong_arg(3stap), - - -function::longlong_arg(3stap), - - -function::ulonglong_arg(3stap), - - -function::pointer_arg(3stap), - - -function::s32_arg(3stap), - - -function::u32_arg(3stap), - - -function::s64_arg(3stap), - - -function::u64_arg(3stap), - - -function::asmlinkage(3stap), - - -function::fastcall(3stap), - - -function::regparm(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::rpc.3stap.html b/man/tapset::rpc.3stap.html deleted file mode 100644 index 3a0fde37..00000000 --- a/man/tapset::rpc.3stap.html +++ /dev/null @@ -1,347 +0,0 @@ - -Manpage of tapset::rpc - -

tapset::rpc

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::rpc - systemtap rpc tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
sunrpc.clnt.create_client - -
-Create an RPC client -
-
 See  -probe::sunrpc.clnt.create_client(3stap) - -
 for details. -
-

- -

-
sunrpc.clnt.clone_client - -
-Clone an RPC client structure -
-
 See  -probe::sunrpc.clnt.clone_client(3stap) - -
 for details. -
-

- -

-
sunrpc.clnt.shutdown_client - -
-Shutdown an RPC client -
-
 See  -probe::sunrpc.clnt.shutdown_client(3stap) - -
 for details. -
-

- -

-
sunrpc.clnt.bind_new_program - -
-Bind a new RPC program to an existing client -
-
 See  -probe::sunrpc.clnt.bind_new_program(3stap) - -
 for details. -
-

- -

-
sunrpc.clnt.call_sync - -
-Make a synchronous RPC call -
-
 See  -probe::sunrpc.clnt.call_sync(3stap) - -
 for details. -
-

- -

-
sunrpc.clnt.call_async - -
-Make an asynchronous RPC call -
-
 See  -probe::sunrpc.clnt.call_async(3stap) - -
 for details. -
-

- -

-
sunrpc.clnt.restart_call - -
-Restart an asynchronous RPC call -
-
 See  -probe::sunrpc.clnt.restart_call(3stap) - -
 for details. -
-

- -

-
sunrpc.svc.register - -
-Register an RPC service with the local portmapper -
-
 See  -probe::sunrpc.svc.register(3stap) - -
 for details. -
-

- -

-
sunrpc.svc.create - -
-Create an RPC service -
-
 See  -probe::sunrpc.svc.create(3stap) - -
 for details. -
-

- -

-
sunrpc.svc.destroy - -
-Destroy an RPC service -
-
 See  -probe::sunrpc.svc.destroy(3stap) - -
 for details. -
-

- -

-
sunrpc.svc.process - -
-Process an RPC request -
-
 See  -probe::sunrpc.svc.process(3stap) - -
 for details. -
-

- -

-
sunrpc.svc.authorise - -
-An RPC request is to be authorised -
-
 See  -probe::sunrpc.svc.authorise(3stap) - -
 for details. -
-

- -

-
sunrpc.svc.recv - -
-Listen for the next RPC request on any socket -
-
 See  -probe::sunrpc.svc.recv(3stap) - -
 for details. -
-

- -

-
sunrpc.svc.send - -
-Return reply to RPC client -
-
 See  -probe::sunrpc.svc.send(3stap) - -
 for details. -
-

- -

-
sunrpc.svc.drop - -
-Drop RPC request -
-
 See  -probe::sunrpc.svc.drop(3stap) - -
 for details. -
-

- -

-
sunrpc.sched.new_task - -
-Create new task for the specified client -
-
 See  -probe::sunrpc.sched.new_task(3stap) - -
 for details. -
-

- -

-
sunrpc.sched.release_task - -
-Release all resources associated with a task -
-
 See  -probe::sunrpc.sched.release_task(3stap) - -
 for details. -
-

- -

-
sunrpc.sched.execute - -
-Execute the RPC `scheduler' -
-
 See  -probe::sunrpc.sched.execute(3stap) - -
 for details. -
-

- -

-
sunrpc.sched.delay - -
-Delay an RPC task -
-
 See  -probe::sunrpc.sched.delay(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::sunrpc.clnt.create_client(3stap), - - -probe::sunrpc.clnt.clone_client(3stap), - - -probe::sunrpc.clnt.shutdown_client(3stap), - - -probe::sunrpc.clnt.bind_new_program(3stap), - - -probe::sunrpc.clnt.call_sync(3stap), - - -probe::sunrpc.clnt.call_async(3stap), - - -probe::sunrpc.clnt.restart_call(3stap), - - -probe::sunrpc.svc.register(3stap), - - -probe::sunrpc.svc.create(3stap), - - -probe::sunrpc.svc.destroy(3stap), - - -probe::sunrpc.svc.process(3stap), - - -probe::sunrpc.svc.authorise(3stap), - - -probe::sunrpc.svc.recv(3stap), - - -probe::sunrpc.svc.send(3stap), - - -probe::sunrpc.svc.drop(3stap), - - -probe::sunrpc.sched.new_task(3stap), - - -probe::sunrpc.sched.release_task(3stap), - - -probe::sunrpc.sched.execute(3stap), - - -probe::sunrpc.sched.delay(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::scheduler.3stap.html b/man/tapset::scheduler.3stap.html deleted file mode 100644 index 8457c407..00000000 --- a/man/tapset::scheduler.3stap.html +++ /dev/null @@ -1,299 +0,0 @@ - -Manpage of tapset::scheduler - -

tapset::scheduler

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::scheduler - systemtap scheduler tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
scheduler.cpu_off - -
-Process is about to stop running on a cpu -
-
 See  -probe::scheduler.cpu_off(3stap) - -
 for details. -
-

- -

-
scheduler.cpu_on - -
-Process is beginning execution on a cpu -
-
 See  -probe::scheduler.cpu_on(3stap) - -
 for details. -
-

- -

-
scheduler.tick - -
-Schedulers internal tick, a processes timeslice accounting is updated -
-
 See  -probe::scheduler.tick(3stap) - -
 for details. -
-

- -

-
scheduler.balance - -
-A cpu attempting to find more work. -
-
 See  -probe::scheduler.balance(3stap) - -
 for details. -
-

- -

-
scheduler.ctxswitch - -
-A context switch is occuring. -
-
 See  -probe::scheduler.ctxswitch(3stap) - -
 for details. -
-

- -

-
scheduler.kthread_stop - -
-A thread created by kthread_create is being stopped -
-
 See  -probe::scheduler.kthread_stop(3stap) - -
 for details. -
-

- -

-
scheduler.kthread_stop.return - -
-A kthread is stopped and gets the return value -
-
 See  -probe::scheduler.kthread_stop.return(3stap) - -
 for details. -
-

- -

-
scheduler.wait_task - -
-Waiting on a task to unschedule (become inactive) -
-
 See  -probe::scheduler.wait_task(3stap) - -
 for details. -
-

- -

-
scheduler.wakeup - -
-Task is woken up -
-
 See  -probe::scheduler.wakeup(3stap) - -
 for details. -
-

- -

-
scheduler.wakeup_new - -
-Newly created task is woken up for the first time -
-
 See  -probe::scheduler.wakeup_new(3stap) - -
 for details. -
-

- -

-
scheduler.migrate - -
-Task migrating across cpus -
-
 See  -probe::scheduler.migrate(3stap) - -
 for details. -
-

- -

-
scheduler.process_free - -
-Scheduler freeing a data structure for a process -
-
 See  -probe::scheduler.process_free(3stap) - -
 for details. -
-

- -

-
scheduler.process_exit - -
-Process exiting -
-
 See  -probe::scheduler.process_exit(3stap) - -
 for details. -
-

- -

-
scheduler.process_wait - -
-Scheduler starting to wait on a process -
-
 See  -probe::scheduler.process_wait(3stap) - -
 for details. -
-

- -

-
scheduler.process_fork - -
-Process forked -
-
 See  -probe::scheduler.process_fork(3stap) - -
 for details. -
-

- -

-
scheduler.signal_send - -
-Sending a signal -
-
 See  -probe::scheduler.signal_send(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::scheduler.cpu_off(3stap), - - -probe::scheduler.cpu_on(3stap), - - -probe::scheduler.tick(3stap), - - -probe::scheduler.balance(3stap), - - -probe::scheduler.ctxswitch(3stap), - - -probe::scheduler.kthread_stop(3stap), - - -probe::scheduler.kthread_stop.return(3stap), - - -probe::scheduler.wait_task(3stap), - - -probe::scheduler.wakeup(3stap), - - -probe::scheduler.wakeup_new(3stap), - - -probe::scheduler.migrate(3stap), - - -probe::scheduler.process_free(3stap), - - -probe::scheduler.process_exit(3stap), - - -probe::scheduler.process_wait(3stap), - - -probe::scheduler.process_fork(3stap), - - -probe::scheduler.signal_send(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::scsi.3stap.html b/man/tapset::scsi.3stap.html deleted file mode 100644 index f7b121e9..00000000 --- a/man/tapset::scsi.3stap.html +++ /dev/null @@ -1,142 +0,0 @@ - -Manpage of tapset::scsi - -

tapset::scsi

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::scsi - systemtap scsi tapset -
  -  -

DESCRIPTION

- -

-
 This family of probe points is used to probe SCSI activities. -

-

-
-

- -

-
-
scsi.ioentry - -
-Prepares a SCSI mid-layer request -
-
 See  -probe::scsi.ioentry(3stap) - -
 for details. -
-

- -

-
scsi.iodispatching - -
-SCSI mid-layer dispatched low-level SCSI command -
-
 See  -probe::scsi.iodispatching(3stap) - -
 for details. -
-

- -

-
scsi.iodone - -
-SCSI command completed by low level driver and enqueued into the done queue. -
-
 See  -probe::scsi.iodone(3stap) - -
 for details. -
-

- -

-
scsi.iocompleted - -
-SCSI mid-layer running the completion processing for block device I/O requests -
-
 See  -probe::scsi.iocompleted(3stap) - -
 for details. -
-

- -

-
scsi.ioexecute - -
-Create mid-layer SCSI request and wait for the result -
-
 See  -probe::scsi.ioexecute(3stap) - -
 for details. -
-

- -

-
scsi.set_state - -
-Order SCSI device state change -
-
 See  -probe::scsi.set_state(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::scsi.ioentry(3stap), - - -probe::scsi.iodispatching(3stap), - - -probe::scsi.iodone(3stap), - - -probe::scsi.iocompleted(3stap), - - -probe::scsi.ioexecute(3stap), - - -probe::scsi.set_state(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::signal.3stap.html b/man/tapset::signal.3stap.html deleted file mode 100644 index cee0af8b..00000000 --- a/man/tapset::signal.3stap.html +++ /dev/null @@ -1,578 +0,0 @@ - -Manpage of tapset::signal - -

tapset::signal

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::signal - systemtap signal tapset -
  -  -

DESCRIPTION

- -

-
  This family of probe points is used to probe signal activities. -
  Since there are so many signals sent to processes at any given -
  point, it is advisable to filter the information according to the -
  requirements.  For example, filter only for a particular signal -
  (if sig==2) or for a particular process (if pid_name==stap). -

-

-
-

- -

-
-
signal.send - -
-Signal being sent to a process -
-
 See  -probe::signal.send(3stap) - -
 for details. -
-

- -

-
signal.send.return - -
-Signal being sent to a process completed (deprecated in SystemTap 2.1) -
-
 See  -probe::signal.send.return(3stap) - -
 for details. -
-

- -

-
signal.checkperm - -
-Check being performed on a sent signal -
-
 See  -probe::signal.checkperm(3stap) - -
 for details. -
-

- -

-
signal.checkperm.return - -
-Check performed on a sent signal completed -
-
 See  -probe::signal.checkperm.return(3stap) - -
 for details. -
-

- -

-
signal.wakeup - -
-Sleeping process being wakened for signal -
-
 See  -probe::signal.wakeup(3stap) - -
 for details. -
-

- -

-
signal.check_ignored - -
-Checking to see signal is ignored -
-
 See  -probe::signal.check_ignored(3stap) - -
 for details. -
-

- -

-
signal.check_ignored.return - -
-Check to see signal is ignored completed -
-
 See  -probe::signal.check_ignored.return(3stap) - -
 for details. -
-

- -

-
signal.force_segv - -
-Forcing send of SIGSEGV -
-
 See  -probe::signal.force_segv(3stap) - -
 for details. -
-

- -

-
signal.force_segv.return - -
-Forcing send of SIGSEGV complete -
-
 See  -probe::signal.force_segv.return(3stap) - -
 for details. -
-

- -

-
signal.syskill - -
-Sending kill signal to a process -
-
 See  -probe::signal.syskill(3stap) - -
 for details. -
-

- -

-
signal.syskill.return - -
-Sending kill signal completed -
-
 See  -probe::signal.syskill.return(3stap) - -
 for details. -
-

- -

-
signal.sys_tkill - -
-Sending a kill signal to a thread -
-
 See  -probe::signal.sys_tkill(3stap) - -
 for details. -
-

- -

-
signal.systkill.return - -
-Sending kill signal to a thread completed -
-
 See  -probe::signal.systkill.return(3stap) - -
 for details. -
-

- -

-
signal.sys_tgkill - -
-Sending kill signal to a thread group -
-
 See  -probe::signal.sys_tgkill(3stap) - -
 for details. -
-

- -

-
signal.sys_tgkill.return - -
-Sending kill signal to a thread group completed -
-
 See  -probe::signal.sys_tgkill.return(3stap) - -
 for details. -
-

- -

-
signal.send_sig_queue - -
-Queuing a signal to a process -
-
 See  -probe::signal.send_sig_queue(3stap) - -
 for details. -
-

- -

-
signal.send_sig_queue.return - -
-Queuing a signal to a process completed -
-
 See  -probe::signal.send_sig_queue.return(3stap) - -
 for details. -
-

- -

-
signal.pending - -
-Examining pending signal -
-
 See  -probe::signal.pending(3stap) - -
 for details. -
-

- -

-
signal.pending.return - -
-Examination of pending signal completed -
-
 See  -probe::signal.pending.return(3stap) - -
 for details. -
-

- -

-
signal.handle - -
-Signal handler being invoked -
-
 See  -probe::signal.handle(3stap) - -
 for details. -
-

- -

-
signal.handle.return - -
-Signal handler invocation completed -
-
 See  -probe::signal.handle.return(3stap) - -
 for details. -
-

- -

-
signal.do_action - -
-Examining or changing a signal action -
-
 See  -probe::signal.do_action(3stap) - -
 for details. -
-

- -

-
signal.do_action.return - -
-Examining or changing a signal action completed -
-
 See  -probe::signal.do_action.return(3stap) - -
 for details. -
-

- -

-
signal.procmask - -
-Examining or changing blocked signals -
-
 See  -probe::signal.procmask(3stap) - -
 for details. -
-

- -

-
signal.procmask.return - -
-Examining or changing blocked signals completed -
-
 See  -probe::signal.procmask.return(3stap) - -
 for details. -
-

- -

-
signal.flush - -
-Flushing all pending signals for a task -
-
 See  -probe::signal.flush(3stap) - -
 for details. -
-

- -

-
get_sa_flags - -
-Returns the numeric value of sa_flags -
-See -function::get_sa_flags(3stap) - -
 for details. -
-

- -

-
get_sa_flags - -
-Returns the numeric value of sa_handler -
-See -function::get_sa_flags(3stap) - -
 for details. -
-

- -

-
get_sa_flags - -
-Returns the string representation of a sigset -
-See -function::get_sa_flags(3stap) - -
 for details. -
-

- -

-
is_sig_blocked - -
-Returns 1 if the signal is currently blocked, or 0 if it is not -
-See -function::is_sig_blocked(3stap) - -
 for details. -
-

- -

-
sa_flags_str - -
-Returns the string representation of sa_flags -
-See -function::sa_flags_str(3stap) - -
 for details. -
-

- -

-
sa_handler - -
-Returns the string representation of an sa_handler -
-See -function::sa_handler(3stap) - -
 for details. -
-

- -

-
signal_str - -
-Returns the string representation of a signal number -
-See -function::signal_str(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::get_sa_flags(3stap), - - -function::get_sa_flags(3stap), - - -function::get_sa_flags(3stap), - - -function::is_sig_blocked(3stap), - - -function::sa_flags_str(3stap), - - -function::sa_handler(3stap), - - -function::signal_str(3stap), - - -probe::signal.send(3stap), - - -probe::signal.send.return(3stap), - - -probe::signal.checkperm(3stap), - - -probe::signal.checkperm.return(3stap), - - -probe::signal.wakeup(3stap), - - -probe::signal.check_ignored(3stap), - - -probe::signal.check_ignored.return(3stap), - - -probe::signal.force_segv(3stap), - - -probe::signal.force_segv.return(3stap), - - -probe::signal.syskill(3stap), - - -probe::signal.syskill.return(3stap), - - -probe::signal.sys_tkill(3stap), - - -probe::signal.systkill.return(3stap), - - -probe::signal.sys_tgkill(3stap), - - -probe::signal.sys_tgkill.return(3stap), - - -probe::signal.send_sig_queue(3stap), - - -probe::signal.send_sig_queue.return(3stap), - - -probe::signal.pending(3stap), - - -probe::signal.pending.return(3stap), - - -probe::signal.handle(3stap), - - -probe::signal.handle.return(3stap), - - -probe::signal.do_action(3stap), - - -probe::signal.do_action.return(3stap), - - -probe::signal.procmask(3stap), - - -probe::signal.procmask.return(3stap), - - -probe::signal.flush(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::socket.3stap.html b/man/tapset::socket.3stap.html deleted file mode 100644 index b4358562..00000000 --- a/man/tapset::socket.3stap.html +++ /dev/null @@ -1,430 +0,0 @@ - -Manpage of tapset::socket - -

tapset::socket

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::socket - systemtap socket tapset -
  -  -

DESCRIPTION

- -

-
 This family of probe points is used to probe socket activities. -

-

-
-

- -

-
-
socket.send - -
-Message sent on a socket. -
-
 See  -probe::socket.send(3stap) - -
 for details. -
-

- -

-
socket.receive - -
-Message received on a socket. -
-
 See  -probe::socket.receive(3stap) - -
 for details. -
-

- -

-
socket.sendmsg - -
-Message is currently being sent on a socket. -
-
 See  -probe::socket.sendmsg(3stap) - -
 for details. -
-

- -

-
socket.sendmsg.return - -
-Return from socket.sendmsg. -
-
 See  -probe::socket.sendmsg.return(3stap) - -
 for details. -
-

- -

-
socket.recvmsg - -
-Message being received on socket -
-
 See  -probe::socket.recvmsg(3stap) - -
 for details. -
-

- -

-
socket.recvmsg.return - -
-Return from Message being received on socket -
-
 See  -probe::socket.recvmsg.return(3stap) - -
 for details. -
-

- -

-
socket.aio_write - -
-Message send via sock_aio_write() -
-
 See  -probe::socket.aio_write(3stap) - -
 for details. -
-

- -

-
socket.aio_write.return - -
-Conclusion of message send via sock_aio_write() -
-
 See  -probe::socket.aio_write.return(3stap) - -
 for details. -
-

- -

-
socket.aio_read - -
-Receiving message via sock_aio_read() -
-
 See  -probe::socket.aio_read(3stap) - -
 for details. -
-

- -

-
socket.aio_read.return - -
-Conclusion of message received via sock_aio_read() -
-
 See  -probe::socket.aio_read.return(3stap) - -
 for details. -
-

- -

-
socket.writev - -
-Message sent via socket_writev() -
-
 See  -probe::socket.writev(3stap) - -
 for details. -
-

- -

-
socket.writev.return - -
-Conclusion of message sent via socket_writev() -
-
 See  -probe::socket.writev.return(3stap) - -
 for details. -
-

- -

-
socket.readv - -
-Receiving a message via sock_readv() -
-
 See  -probe::socket.readv(3stap) - -
 for details. -
-

- -

-
socket.readv.return - -
-Conclusion of receiving a message via sock_readv() -
-
 See  -probe::socket.readv.return(3stap) - -
 for details. -
-

- -

-
socket.create - -
-Creation of a socket -
-
 See  -probe::socket.create(3stap) - -
 for details. -
-

- -

-
socket.create.return - -
-Return from Creation of a socket -
-
 See  -probe::socket.create.return(3stap) - -
 for details. -
-

- -

-
socket.close - -
-Close a socket -
-
 See  -probe::socket.close(3stap) - -
 for details. -
-

- -

-
socket.close.return - -
-Return from closing a socket -
-
 See  -probe::socket.close.return(3stap) - -
 for details. -
-

- -

-
sock_prot_num2str - -
-Given a protocol number, return a string representation -
-See -function::sock_prot_num2str(3stap) - -
 for details. -
-

- -

-
sock_prot_str2num - -
-Given a protocol name (string), return the corresponding protocol number -
-See -function::sock_prot_str2num(3stap) - -
 for details. -
-

- -

-
sock_fam_num2str - -
-Given a protocol family number, return a string representation -
-See -function::sock_fam_num2str(3stap) - -
 for details. -
-

- -

-
sock_fam_str2num - -
-Given a protocol family name (string), return the corresponding protocol family number -
-See -function::sock_fam_str2num(3stap) - -
 for details. -
-

- -

-
sock_state_num2str - -
-Given a socket state number, return a string representation -
-See -function::sock_state_num2str(3stap) - -
 for details. -
-

- -

-
sock_state_str2num - -
-Given a socket state string, return the corresponding state number -
-See -function::sock_state_str2num(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::sock_prot_num2str(3stap), - - -function::sock_prot_str2num(3stap), - - -function::sock_fam_num2str(3stap), - - -function::sock_fam_str2num(3stap), - - -function::sock_state_num2str(3stap), - - -function::sock_state_str2num(3stap), - - -probe::socket.send(3stap), - - -probe::socket.receive(3stap), - - -probe::socket.sendmsg(3stap), - - -probe::socket.sendmsg.return(3stap), - - -probe::socket.recvmsg(3stap), - - -probe::socket.recvmsg.return(3stap), - - -probe::socket.aio_write(3stap), - - -probe::socket.aio_write.return(3stap), - - -probe::socket.aio_read(3stap), - - -probe::socket.aio_read.return(3stap), - - -probe::socket.writev(3stap), - - -probe::socket.writev.return(3stap), - - -probe::socket.readv(3stap), - - -probe::socket.readv.return(3stap), - - -probe::socket.create(3stap), - - -probe::socket.create.return(3stap), - - -probe::socket.close(3stap), - - -probe::socket.close.return(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::speculative.3stap.html b/man/tapset::speculative.3stap.html deleted file mode 100644 index c94f4b4f..00000000 --- a/man/tapset::speculative.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of tapset::speculative - -

tapset::speculative

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::speculative - systemtap speculative tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
speculation - -
-Allocate a new id for speculative output -
-See -function::speculation(3stap) - -
 for details. -
-

- -

-
speculate - -
-Store a string for possible output later -
-See -function::speculate(3stap) - -
 for details. -
-

- -

-
discard - -
-Discard all output related to a speculation buffer -
-See -function::discard(3stap) - -
 for details. -
-

- -

-
commit - -
-Write out all output related to a speculation buffer -
-See -function::commit(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::speculation(3stap), - - -function::speculate(3stap), - - -function::discard(3stap), - - -function::commit(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::stap_staticmarkers.3stap.html b/man/tapset::stap_staticmarkers.3stap.html deleted file mode 100644 index e8cda587..00000000 --- a/man/tapset::stap_staticmarkers.3stap.html +++ /dev/null @@ -1,475 +0,0 @@ - -Manpage of tapset::stap_staticmarkers - -

tapset::stap_staticmarkers

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::stap_staticmarkers - systemtap stap_staticmarkers tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
stap.pass0 - -
-Starting stap pass0 (parsing command line arguments) -
-
 See  -probe::stap.pass0(3stap) - -
 for details. -
-

- -

-
stap.pass0.end - -
-Finished stap pass0 (parsing command line arguments) -
-
 See  -probe::stap.pass0.end(3stap) - -
 for details. -
-

- -

-
stap.pass1a - -
-Starting stap pass1 (parsing user script) -
-
 See  -probe::stap.pass1a(3stap) - -
 for details. -
-

- -

-
stap.pass1b - -
-Starting stap pass1 (parsing library scripts) -
-
 See  -probe::stap.pass1b(3stap) - -
 for details. -
-

- -

-
stap.pass1.end - -
-Finished stap pass1 (parsing scripts) -
-
 See  -probe::stap.pass1.end(3stap) - -
 for details. -
-

- -

-
stap.pass2 - -
-Starting stap pass2 (elaboration) -
-
 See  -probe::stap.pass2(3stap) - -
 for details. -
-

- -

-
stap.pass2.end - -
-Finished stap pass2 (elaboration) -
-
 See  -probe::stap.pass2.end(3stap) - -
 for details. -
-

- -

-
stap.pass3 - -
-Starting stap pass3 (translation to C) -
-
 See  -probe::stap.pass3(3stap) - -
 for details. -
-

- -

-
stap.pass3.end - -
-Finished stap pass3 (translation to C) -
-
 See  -probe::stap.pass3.end(3stap) - -
 for details. -
-

- -

-
stap.pass4 - -
-Starting stap pass4 (compile C code into kernel module) -
-
 See  -probe::stap.pass4(3stap) - -
 for details. -
-

- -

-
stap.pass4.end - -
-Finished stap pass4 (compile C code into kernel module) -
-
 See  -probe::stap.pass4.end(3stap) - -
 for details. -
-

- -

-
stap.pass5 - -
-Starting stap pass5 (running the instrumentation) -
-
 See  -probe::stap.pass5(3stap) - -
 for details. -
-

- -

-
stap.pass5.end - -
-Finished stap pass5 (running the instrumentation) -
-
 See  -probe::stap.pass5.end(3stap) - -
 for details. -
-

- -

-
stap.pass6 - -
-Starting stap pass6 (cleanup) -
-
 See  -probe::stap.pass6(3stap) - -
 for details. -
-

- -

-
stap.pass6.end - -
-Finished stap pass6 (cleanup) -
-
 See  -probe::stap.pass6.end(3stap) - -
 for details. -
-

- -

-
stap.cache_clean - -
-Removing file from stap cache -
-
 See  -probe::stap.cache_clean(3stap) - -
 for details. -
-

- -

-
stap.cache_add_mod - -
-Adding kernel instrumentation module to cache -
-
 See  -probe::stap.cache_add_mod(3stap) - -
 for details. -
-

- -

-
stap.cache_add_src - -
-Adding C code translation to cache -
-
 See  -probe::stap.cache_add_src(3stap) - -
 for details. -
-

- -

-
stap.cache_add_nss - -
-Add NSS (Network Security Services) information to cache -
-
 See  -probe::stap.cache_add_nss(3stap) - -
 for details. -
-

- -

-
stap.cache_get - -
-Found item in stap cache -
-
 See  -probe::stap.cache_get(3stap) - -
 for details. -
-

- -

-
stap.system - -
-Starting a command from stap -
-
 See  -probe::stap.system(3stap) - -
 for details. -
-

- -

-
stap.system.spawn - -
-stap spawned new process -
-
 See  -probe::stap.system.spawn(3stap) - -
 for details. -
-

- -

-
stap.system.return - -
-Finished a command from stap -
-
 See  -probe::stap.system.return(3stap) - -
 for details. -
-

- -

-
staprun.insert_module - -
-Inserting SystemTap instrumentation module -
-
 See  -probe::staprun.insert_module(3stap) - -
 for details. -
-

- -

-
staprun.remove_module - -
-Removing SystemTap instrumentation module -
-
 See  -probe::staprun.remove_module(3stap) - -
 for details. -
-

- -

-
staprun.send_control_message - -
-Sending a control message -
-
 See  -probe::staprun.send_control_message(3stap) - -
 for details. -
-

- -

-
stapio.receive_control_message - -
-Received a control message -
-
 See  -probe::stapio.receive_control_message(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::stap.pass0(3stap), - - -probe::stap.pass0.end(3stap), - - -probe::stap.pass1a(3stap), - - -probe::stap.pass1b(3stap), - - -probe::stap.pass1.end(3stap), - - -probe::stap.pass2(3stap), - - -probe::stap.pass2.end(3stap), - - -probe::stap.pass3(3stap), - - -probe::stap.pass3.end(3stap), - - -probe::stap.pass4(3stap), - - -probe::stap.pass4.end(3stap), - - -probe::stap.pass5(3stap), - - -probe::stap.pass5.end(3stap), - - -probe::stap.pass6(3stap), - - -probe::stap.pass6.end(3stap), - - -probe::stap.cache_clean(3stap), - - -probe::stap.cache_add_mod(3stap), - - -probe::stap.cache_add_src(3stap), - - -probe::stap.cache_add_nss(3stap), - - -probe::stap.cache_get(3stap), - - -probe::stap.system(3stap), - - -probe::stap.system.spawn(3stap), - - -probe::stap.system.return(3stap), - - -probe::staprun.insert_module(3stap), - - -probe::staprun.remove_module(3stap), - - -probe::staprun.send_control_message(3stap), - - -probe::stapio.receive_control_message(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::stopwatch.3stap.html b/man/tapset::stopwatch.3stap.html deleted file mode 100644 index a8b09f82..00000000 --- a/man/tapset::stopwatch.3stap.html +++ /dev/null @@ -1,155 +0,0 @@ - -Manpage of tapset::stopwatch - -

tapset::stopwatch

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::stopwatch - systemtap stopwatch tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
delete_stopwatch - -
-Remove an existing stopwatch -
-See -function::delete_stopwatch(3stap) - -
 for details. -
-

- -

-
start_stopwatch - -
-Start a stopwatch -
-See -function::start_stopwatch(3stap) - -
 for details. -
-

- -

-
stop_stopwatch - -
-Stop a stopwatch -
-See -function::stop_stopwatch(3stap) - -
 for details. -
-

- -

-
read_stopwatch_ns - -
-Reads the time in nanoseconds for a stopwatch -
-See -function::read_stopwatch_ns(3stap) - -
 for details. -
-

- -

-
read_stopwatch_us - -
-Reads the time in microseconds for a stopwatch -
-See -function::read_stopwatch_us(3stap) - -
 for details. -
-

- -

-
read_stopwatch_ms - -
-Reads the time in milliseconds for a stopwatch -
-See -function::read_stopwatch_ms(3stap) - -
 for details. -
-

- -

-
read_stopwatch_ms - -
-Reads the time in seconds for a stopwatch -
-See -function::read_stopwatch_ms(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::delete_stopwatch(3stap), - - -function::start_stopwatch(3stap), - - -function::stop_stopwatch(3stap), - - -function::read_stopwatch_ns(3stap), - - -function::read_stopwatch_us(3stap), - - -function::read_stopwatch_ms(3stap), - - -function::read_stopwatch_ms(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::string.3stap.html b/man/tapset::string.3stap.html deleted file mode 100644 index 773ee010..00000000 --- a/man/tapset::string.3stap.html +++ /dev/null @@ -1,174 +0,0 @@ - -Manpage of tapset::string - -

tapset::string

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::string - systemtap string tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
strlen - -
-Returns the length of a string -
-See -function::strlen(3stap) - -
 for details. -
-

- -

-
substr - -
-Returns a substring -
-See -function::substr(3stap) - -
 for details. -
-

- -

-
stringat - -
-Returns the char at a given position in the string -
-See -function::stringat(3stap) - -
 for details. -
-

- -

-
isinstr - -
-Returns whether a string is a substring of another string -
-See -function::isinstr(3stap) - -
 for details. -
-

- -

-
text_str - -
-Escape any non-printable chars in a string -
-See -function::text_str(3stap) - -
 for details. -
-

- -

-
text_strn - -
-Escape any non-printable chars in a string -
-See -function::text_strn(3stap) - -
 for details. -
-

- -

-
- strtol - -
-Convert a string to a long -
-See -function::-strtol(3stap) - -
 for details. -
-

- -

-
isdigit - -
-Checks for a digit -
-See -function::isdigit(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::strlen(3stap), - - -function::substr(3stap), - - -function::stringat(3stap), - - -function::isinstr(3stap), - - -function::text_str(3stap), - - -function::text_strn(3stap), - - -function::-(3stap), - - -function::strtol(3stap), - - -function::isdigit(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::system.3stap.html b/man/tapset::system.3stap.html deleted file mode 100644 index b1331ee1..00000000 --- a/man/tapset::system.3stap.html +++ /dev/null @@ -1,59 +0,0 @@ - -Manpage of tapset::system - -

tapset::system

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::system - systemtap system tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
system - -
-Issue a command to the system -
-See -function::system(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::system(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::target_set.3stap.html b/man/tapset::target_set.3stap.html deleted file mode 100644 index 6db41a3e..00000000 --- a/man/tapset::target_set.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of tapset::target_set - -

tapset::target_set

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::target_set - systemtap target_set tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
target_set_pid - -
-Does pid descend from target process? -
-See -function::target_set_pid(3stap) - -
 for details. -
-

- -

-
target_set_report - -
-Print a report about the target set -
-See -function::target_set_report(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::target_set_pid(3stap), - - -function::target_set_report(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::task.3stap.html b/man/tapset::task.3stap.html deleted file mode 100644 index c8978201..00000000 --- a/man/tapset::task.3stap.html +++ /dev/null @@ -1,315 +0,0 @@ - -Manpage of tapset::task - -

tapset::task

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::task - systemtap task tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
task_current - -
-The current task_struct of the current task -
-See -function::task_current(3stap) - -
 for details. -
-

- -

-
task_parent - -
-The task_struct of the parent task -
-See -function::task_parent(3stap) - -
 for details. -
-

- -

-
task_state - -
-The state of the task -
-See -function::task_state(3stap) - -
 for details. -
-

- -

-
task_execname - -
-The name of the task -
-See -function::task_execname(3stap) - -
 for details. -
-

- -

-
task_pid - -
-The process identifier of the task -
-See -function::task_pid(3stap) - -
 for details. -
-

- -

-
pid2task - -
-The task_struct of the given process identifier -
-See -function::pid2task(3stap) - -
 for details. -
-

- -

-
pid2execname - -
-The name of the given process identifier -
-See -function::pid2execname(3stap) - -
 for details. -
-

- -

-
task_tid - -
-The thread identifier of the task -
-See -function::task_tid(3stap) - -
 for details. -
-

- -

-
task_gid - -
-The group identifier of the task -
-See -function::task_gid(3stap) - -
 for details. -
-

- -

-
task_egid - -
-The effective group identifier of the task -
-See -function::task_egid(3stap) - -
 for details. -
-

- -

-
task_uid - -
-The user identifier of the task -
-See -function::task_uid(3stap) - -
 for details. -
-

- -

-
task_euid - -
-The effective user identifier of the task -
-See -function::task_euid(3stap) - -
 for details. -
-

- -

-
task_prio - -
-The priority value of the task -
-See -function::task_prio(3stap) - -
 for details. -
-

- -

-
task_nice - -
-The nice value of the task -
-See -function::task_nice(3stap) - -
 for details. -
-

- -

-
task_cpu - -
-The scheduled cpu of the task -
-See -function::task_cpu(3stap) - -
 for details. -
-

- -

-
task_open_file_handles - -
-The number of open files of the task -
-See -function::task_open_file_handles(3stap) - -
 for details. -
-

- -

-
task_max_file_handles - -
-The max number of open files for the task -
-See -function::task_max_file_handles(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::task_current(3stap), - - -function::task_parent(3stap), - - -function::task_state(3stap), - - -function::task_execname(3stap), - - -function::task_pid(3stap), - - -function::pid2task(3stap), - - -function::pid2execname(3stap), - - -function::task_tid(3stap), - - -function::task_gid(3stap), - - -function::task_egid(3stap), - - -function::task_uid(3stap), - - -function::task_euid(3stap), - - -function::task_prio(3stap), - - -function::task_nice(3stap), - - -function::task_cpu(3stap), - - -function::task_open_file_handles(3stap), - - -function::task_max_file_handles(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::task_ancestry.3stap.html b/man/tapset::task_ancestry.3stap.html deleted file mode 100644 index 1e750613..00000000 --- a/man/tapset::task_ancestry.3stap.html +++ /dev/null @@ -1,59 +0,0 @@ - -Manpage of tapset::task_ancestry - -

tapset::task_ancestry

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::task_ancestry - systemtap task_ancestry tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
task_ancestry - -
-The ancestry of the given task -
-See -function::task_ancestry(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::task_ancestry(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::task_time.3stap.html b/man/tapset::task_time.3stap.html deleted file mode 100644 index 30e9c359..00000000 --- a/man/tapset::task_time.3stap.html +++ /dev/null @@ -1,262 +0,0 @@ - -Manpage of tapset::task_time - -

tapset::task_time

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::task_time - systemtap task_time tapset -
  -  -

DESCRIPTION

- -

-
 Task time query and utility functions provide information about -
 the time resource usage of the current task. These functions provide -
 information about the user time and system time of the current -
 task. And provide utility functions to turn the reported times -
 into miliseconds and create human readable string representations -
 of task time used. The reported times are approximates and should -
 be used for "coarse grained" measurements only. The reported user -
 and system time are only for the current task, not for the process -
 as a whole nor of any time spend by children of the current task. -

-

-
-

- -

-
-
task_utime - -
-User time of the current task -
-See -function::task_utime(3stap) - -
 for details. -
-

- -

-
task_utime_tid - -
-User time of the given task -
-See -function::task_utime_tid(3stap) - -
 for details. -
-

- -

-
task_stime - -
-System time of the current task -
-See -function::task_stime(3stap) - -
 for details. -
-

- -

-
task_stime_tid - -
-System time of the given task -
-See -function::task_stime_tid(3stap) - -
 for details. -
-

- -

-
task_start_time - -
-Start time of the given task -
-See -function::task_start_time(3stap) - -
 for details. -
-

- -

-
cputime_to_msecs - -
-Translates the given cputime into milliseconds -
-See -function::cputime_to_msecs(3stap) - -
 for details. -
-

- -

-
cputime_to_usecs - -
-Translates the given cputime into microseconds -
-See -function::cputime_to_usecs(3stap) - -
 for details. -
-

- -

-
msecs_to_string - -
-Human readable string for given milliseconds -
-See -function::msecs_to_string(3stap) - -
 for details. -
-

- -

-
usecs_to_string - -
-Human readable string for given microseconds -
-See -function::usecs_to_string(3stap) - -
 for details. -
-

- -

-
nsecs_to_string - -
-Human readable string for given nanoseconds -
-See -function::nsecs_to_string(3stap) - -
 for details. -
-

- -

-
cputime_to_string - -
-Human readable string for given cputime -
-See -function::cputime_to_string(3stap) - -
 for details. -
-

- -

-
task_time_string - -
-Human readable string of task time usage -
-See -function::task_time_string(3stap) - -
 for details. -
-

- -

-
task_time_string_tid - -
-Human readable string of task time usage -
-See -function::task_time_string_tid(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::task_utime(3stap), - - -function::task_utime_tid(3stap), - - -function::task_stime(3stap), - - -function::task_stime_tid(3stap), - - -function::task_start_time(3stap), - - -function::cputime_to_msecs(3stap), - - -function::cputime_to_usecs(3stap), - - -function::msecs_to_string(3stap), - - -function::usecs_to_string(3stap), - - -function::nsecs_to_string(3stap), - - -function::cputime_to_string(3stap), - - -function::task_time_string(3stap), - - -function::task_time_string_tid(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::tcp.3stap.html b/man/tapset::tcp.3stap.html deleted file mode 100644 index 089c22b8..00000000 --- a/man/tapset::tcp.3stap.html +++ /dev/null @@ -1,190 +0,0 @@ - -Manpage of tapset::tcp - -

tapset::tcp

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::tcp - systemtap tcp tapset -
  -  -

DESCRIPTION

- -

-
 This family of probe points is used to probe events that occur in the TCP layer,  -

-

-
-

- -

-
-
tcp.sendmsg - -
-Sending a tcp message -
-
 See  -probe::tcp.sendmsg(3stap) - -
 for details. -
-

- -

-
tcp.sendmsg.return - -
-
 Sending TCP message is done -
-
 See  -probe::tcp.sendmsg.return(3stap) - -
 for details. -
-

- -

-
tcp.recvmsg - -
-Receiving TCP message -
-
 See  -probe::tcp.recvmsg(3stap) - -
 for details. -
-

- -

-
tcp.recvmsg.return - -
-Receiving TCP message complete -
-
 See  -probe::tcp.recvmsg.return(3stap) - -
 for details. -
-

- -

-
tcp.disconnect - -
-TCP socket disconnection -
-
 See  -probe::tcp.disconnect(3stap) - -
 for details. -
-

- -

-
tcp.disconnect.return - -
-TCP socket disconnection complete -
-
 See  -probe::tcp.disconnect.return(3stap) - -
 for details. -
-

- -

-
tcp.setsockopt - -
-Call to setsockopt() -
-
 See  -probe::tcp.setsockopt(3stap) - -
 for details. -
-

- -

-
tcp.setsockopt.return - -
-
 Return from setsockopt() -
-
 See  -probe::tcp.setsockopt.return(3stap) - -
 for details. -
-

- -

-
tcp.receive - -
-Called when a TCP packet is received -
-
 See  -probe::tcp.receive(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::tcp.sendmsg(3stap), - - -probe::tcp.sendmsg.return(3stap), - - -probe::tcp.recvmsg(3stap), - - -probe::tcp.recvmsg.return(3stap), - - -probe::tcp.disconnect(3stap), - - -probe::tcp.disconnect.return(3stap), - - -probe::tcp.setsockopt(3stap), - - -probe::tcp.setsockopt.return(3stap), - - -probe::tcp.receive(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::tcpmib-filter-default.3stap.html b/man/tapset::tcpmib-filter-default.3stap.html deleted file mode 100644 index 4fd39117..00000000 --- a/man/tapset::tcpmib-filter-default.3stap.html +++ /dev/null @@ -1,59 +0,0 @@ - -Manpage of tapset::tcpmib-filter-default - -

tapset::tcpmib-filter-default

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::tcpmib-filter-default - systemtap tcpmib-filter-default tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
tcpmib_filter_key - -
-Default filter function for tcpmib.* probes -
-See -function::tcpmib_filter_key(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::tcpmib_filter_key(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::tcpmib.3stap.html b/man/tapset::tcpmib.3stap.html deleted file mode 100644 index f9f7682f..00000000 --- a/man/tapset::tcpmib.3stap.html +++ /dev/null @@ -1,267 +0,0 @@ - -Manpage of tapset::tcpmib - -

tapset::tcpmib

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::tcpmib - systemtap tcpmib tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
tcpmib_get_state - -
-Get a socket's state -
-See -function::tcpmib_get_state(3stap) - -
 for details. -
-

- -

-
tcpmib_local_addr - -
-Get the source address -
-See -function::tcpmib_local_addr(3stap) - -
 for details. -
-

- -

-
tcpmib_remote_addr - -
-Get the remote address -
-See -function::tcpmib_remote_addr(3stap) - -
 for details. -
-

- -

-
tcpmib_local_port - -
-Get the local port -
-See -function::tcpmib_local_port(3stap) - -
 for details. -
-

- -

-
tcpmib_remote_port - -
-Get the remote port -
-See -function::tcpmib_remote_port(3stap) - -
 for details. -
-

- -

-
tcpmib.ActiveOpens - -
-Count an active opening of a socket -
-
 See  -probe::tcpmib.ActiveOpens(3stap) - -
 for details. -
-

- -

-
tcpmib.AttemptFails - -
-Count a failed attempt to open a socket -
-
 See  -probe::tcpmib.AttemptFails(3stap) - -
 for details. -
-

- -

-
tcpmib.CurrEstab - -
-Update the count of open sockets -
-
 See  -probe::tcpmib.CurrEstab(3stap) - -
 for details. -
-

- -

-
tcpmib.EstabResets - -
-Count the reset of a socket -
-
 See  -probe::tcpmib.EstabResets(3stap) - -
 for details. -
-

- -

-
tcpmib.InSegs - -
-Count an incoming tcp segment -
-
 See  -probe::tcpmib.InSegs(3stap) - -
 for details. -
-

- -

-
tcpmib.OutRsts - -
-Count the sending of a reset packet -
-
 See  -probe::tcpmib.OutRsts(3stap) - -
 for details. -
-

- -

-
tcpmib.OutSegs - -
-Count the sending of a TCP segment -
-
 See  -probe::tcpmib.OutSegs(3stap) - -
 for details. -
-

- -

-
tcpmib.PassiveOpens - -
-Count the passive creation of a socket -
-
 See  -probe::tcpmib.PassiveOpens(3stap) - -
 for details. -
-

- -

-
tcpmib.RetransSegs - -
-Count the retransmission of a TCP segment -
-
 See  -probe::tcpmib.RetransSegs(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::tcpmib_get_state(3stap), - - -function::tcpmib_local_addr(3stap), - - -function::tcpmib_remote_addr(3stap), - - -function::tcpmib_local_port(3stap), - - -function::tcpmib_remote_port(3stap), - - -probe::tcpmib.ActiveOpens(3stap), - - -probe::tcpmib.AttemptFails(3stap), - - -probe::tcpmib.CurrEstab(3stap), - - -probe::tcpmib.EstabResets(3stap), - - -probe::tcpmib.InSegs(3stap), - - -probe::tcpmib.OutRsts(3stap), - - -probe::tcpmib.OutSegs(3stap), - - -probe::tcpmib.PassiveOpens(3stap), - - -probe::tcpmib.RetransSegs(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::timestamp.3stap.html b/man/tapset::timestamp.3stap.html deleted file mode 100644 index a77e5d68..00000000 --- a/man/tapset::timestamp.3stap.html +++ /dev/null @@ -1,96 +0,0 @@ - -Manpage of tapset::timestamp - -

tapset::timestamp

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::timestamp - systemtap timestamp tapset -
  -  -

DESCRIPTION

- -

-
 Each timestamp function returns a value to indicate when a function is executed. These  -returned values can then be used to indicate when an event occurred, provide an ordering for events, -or compute the amount of time elapsed between two time stamps. -

-

-
-

- -

-
-
get_cycles - -
-Processor cycle count -
-See -function::get_cycles(3stap) - -
 for details. -
-

- -

-
jiffies - -
-Kernel jiffies count -
-See -function::jiffies(3stap) - -
 for details. -
-

- -

-
HZ - -
-Kernel HZ -
-See -function::HZ(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::get_cycles(3stap), - - -function::jiffies(3stap), - - -function::HZ(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::timestamp_gtod.3stap.html b/man/tapset::timestamp_gtod.3stap.html deleted file mode 100644 index 2f57590d..00000000 --- a/man/tapset::timestamp_gtod.3stap.html +++ /dev/null @@ -1,107 +0,0 @@ - -Manpage of tapset::timestamp_gtod - -

tapset::timestamp_gtod

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::timestamp_gtod - systemtap timestamp_gtod tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
gettimeofday_ns - -
-Number of nanoseconds since UNIX epoch -
-See -function::gettimeofday_ns(3stap) - -
 for details. -
-

- -

-
gettimeofday_us - -
-Number of microseconds since UNIX epoch -
-See -function::gettimeofday_us(3stap) - -
 for details. -
-

- -

-
gettimeofday_ms - -
-Number of milliseconds since UNIX epoch -
-See -function::gettimeofday_ms(3stap) - -
 for details. -
-

- -

-
gettimeofday_s - -
-Number of seconds since UNIX epoch -
-See -function::gettimeofday_s(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::gettimeofday_ns(3stap), - - -function::gettimeofday_us(3stap), - - -function::gettimeofday_ms(3stap), - - -function::gettimeofday_s(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::timestamp_monotonic.3stap.html b/man/tapset::timestamp_monotonic.3stap.html deleted file mode 100644 index 156b8315..00000000 --- a/man/tapset::timestamp_monotonic.3stap.html +++ /dev/null @@ -1,171 +0,0 @@ - -Manpage of tapset::timestamp_monotonic - -

tapset::timestamp_monotonic

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::timestamp_monotonic - systemtap timestamp_monotonic tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
cpu_clock_ns - -
-Number of nanoseconds on the given cpu's clock -
-See -function::cpu_clock_ns(3stap) - -
 for details. -
-

- -

-
cpu_clock_us - -
-Number of microseconds on the given cpu's clock -
-See -function::cpu_clock_us(3stap) - -
 for details. -
-

- -

-
cpu_clock_ms - -
-Number of milliseconds on the given cpu's clock -
-See -function::cpu_clock_ms(3stap) - -
 for details. -
-

- -

-
cpu_clock_s - -
-Number of seconds on the given cpu's clock -
-See -function::cpu_clock_s(3stap) - -
 for details. -
-

- -

-
local_clock_ns - -
-Number of nanoseconds on the local cpu's clock -
-See -function::local_clock_ns(3stap) - -
 for details. -
-

- -

-
local_clock_us - -
-Number of microseconds on the local cpu's clock -
-See -function::local_clock_us(3stap) - -
 for details. -
-

- -

-
local_clock_ms - -
-Number of milliseconds on the local cpu's clock -
-See -function::local_clock_ms(3stap) - -
 for details. -
-

- -

-
local_clock_s - -
-Number of seconds on the local cpu's clock -
-See -function::local_clock_s(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::cpu_clock_ns(3stap), - - -function::cpu_clock_us(3stap), - - -function::cpu_clock_ms(3stap), - - -function::cpu_clock_s(3stap), - - -function::local_clock_ns(3stap), - - -function::local_clock_us(3stap), - - -function::local_clock_ms(3stap), - - -function::local_clock_s(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::tokenize.3stap.html b/man/tapset::tokenize.3stap.html deleted file mode 100644 index 46f15ca7..00000000 --- a/man/tapset::tokenize.3stap.html +++ /dev/null @@ -1,59 +0,0 @@ - -Manpage of tapset::tokenize - -

tapset::tokenize

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::tokenize - systemtap tokenize tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
tokenize - -
-Return the next non-empty token in a string -
-See -function::tokenize(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::tokenize(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::tty.3stap.html b/man/tapset::tty.3stap.html deleted file mode 100644 index 7eb4f96d..00000000 --- a/man/tapset::tty.3stap.html +++ /dev/null @@ -1,219 +0,0 @@ - -Manpage of tapset::tty - -

tapset::tty

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::tty - systemtap tty tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
tty.open - -
-Called when a tty is opened -
-
 See  -probe::tty.open(3stap) - -
 for details. -
-

- -

-
tty.release - -
-Called when the tty is closed -
-
 See  -probe::tty.release(3stap) - -
 for details. -
-

- -

-
tty.resize - -
-Called when a terminal resize happens -
-
 See  -probe::tty.resize(3stap) - -
 for details. -
-

- -

-
tty.ioctl - -
-called when a ioctl is request to the tty -
-
 See  -probe::tty.ioctl(3stap) - -
 for details. -
-

- -

-
tty.init - -
-Called when a tty is being initalized -
-
 See  -probe::tty.init(3stap) - -
 for details. -
-

- -

-
tty.register - -
-Called when a tty device is registred -
-
 See  -probe::tty.register(3stap) - -
 for details. -
-

- -

-
tty.unregister - -
-Called when a tty device is being unregistered -
-
 See  -probe::tty.unregister(3stap) - -
 for details. -
-

- -

-
tty.poll - -
-Called when a tty device is being polled -
-
 See  -probe::tty.poll(3stap) - -
 for details. -
-

- -

-
tty.receive - -
-called when a tty receives a message -
-
 See  -probe::tty.receive(3stap) - -
 for details. -
-

- -

-
tty.write - -
-write to the tty line -
-
 See  -probe::tty.write(3stap) - -
 for details. -
-

- -

-
tty.read - -
-called when a tty line will be read -
-
 See  -probe::tty.read(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::tty.open(3stap), - - -probe::tty.release(3stap), - - -probe::tty.resize(3stap), - - -probe::tty.ioctl(3stap), - - -probe::tty.init(3stap), - - -probe::tty.register(3stap), - - -probe::tty.unregister(3stap), - - -probe::tty.poll(3stap), - - -probe::tty.receive(3stap), - - -probe::tty.write(3stap), - - -probe::tty.read(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::tzinfo.3stap.html b/man/tapset::tzinfo.3stap.html deleted file mode 100644 index cf009a5c..00000000 --- a/man/tapset::tzinfo.3stap.html +++ /dev/null @@ -1,91 +0,0 @@ - -Manpage of tapset::tzinfo - -

tapset::tzinfo

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::tzinfo - systemtap tzinfo tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
tz_gmtoff - -
-Return local time zone offset -
-See -function::tz_gmtoff(3stap) - -
 for details. -
-

- -

-
tz_name - -
-Return local time zone name -
-See -function::tz_name(3stap) - -
 for details. -
-

- -

-
tz_ctime - -
-Convert seconds since epoch into human readable date/time string, with local time zone -
-See -function::tz_ctime(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::tz_gmtoff(3stap), - - -function::tz_name(3stap), - - -function::tz_ctime(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::ucontext-symbols.3stap.html b/man/tapset::ucontext-symbols.3stap.html deleted file mode 100644 index 1369cdac..00000000 --- a/man/tapset::ucontext-symbols.3stap.html +++ /dev/null @@ -1,161 +0,0 @@ - -Manpage of tapset::ucontext-symbols - -

tapset::ucontext-symbols

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::ucontext-symbols - systemtap ucontext-symbols tapset -
  -  -

DESCRIPTION

- -

-
 User context symbol functions provide additional information about -
 addresses from an application. These functions can provide -
 information about the user space map (library) that the event occurred or -
 the function symbol of an address. -

-

-
-

- -

-
-
ustack - -
-Return address at given depth of user stack backtrace -
-See -function::ustack(3stap) - -
 for details. -
-

- -

-
usymname - -
-Return the symbol of an address in the current task. -
-See -function::usymname(3stap) - -
 for details. -
-

- -

-
usymdata - -
-Return the symbol and module offset of an address. -
-See -function::usymdata(3stap) - -
 for details. -
-

- -

-
print_ustack - -
-Print out stack for the current task from string. -
-See -function::print_ustack(3stap) - -
 for details. -
-

- -

-
print_usyms - -
-Print out user stack from string -
-See -function::print_usyms(3stap) - -
 for details. -
-

- -

-
sprint_ustack - -
-Return stack for the current task from string. -
-See -function::sprint_ustack(3stap) - -
 for details. -
-

- -

-
sprint_usyms - -
-Return stack for user addresses from string -
-See -function::sprint_usyms(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::ustack(3stap), - - -function::usymname(3stap), - - -function::usymdata(3stap), - - -function::print_ustack(3stap), - - -function::print_usyms(3stap), - - -function::sprint_ustack(3stap), - - -function::sprint_usyms(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::ucontext-unwind.3stap.html b/man/tapset::ucontext-unwind.3stap.html deleted file mode 100644 index 98f15034..00000000 --- a/man/tapset::ucontext-unwind.3stap.html +++ /dev/null @@ -1,91 +0,0 @@ - -Manpage of tapset::ucontext-unwind - -

tapset::ucontext-unwind

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::ucontext-unwind - systemtap ucontext-unwind tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
print_ubacktrace - -
-Print stack back trace for current user-space task. -
-See -function::print_ubacktrace(3stap) - -
 for details. -
-

- -

-
sprint_ubacktrace - -
-Return stack back trace for current user-space task as string. -
-See -function::sprint_ubacktrace(3stap) - -
 for details. -
-

- -

-
ubacktrace - -
-Hex backtrace of current user-space task stack. -
-See -function::ubacktrace(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::print_ubacktrace(3stap), - - -function::sprint_ubacktrace(3stap), - - -function::ubacktrace(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::ucontext.3stap.html b/man/tapset::ucontext.3stap.html deleted file mode 100644 index 7a512b85..00000000 --- a/man/tapset::ucontext.3stap.html +++ /dev/null @@ -1,75 +0,0 @@ - -Manpage of tapset::ucontext - -

tapset::ucontext

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::ucontext - systemtap ucontext tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
umodname - -
-Returns the (short) name of the user module. -
-See -function::umodname(3stap) - -
 for details. -
-

- -

-
ucallers - -
-Return first n elements of user stack backtrace -
-See -function::ucallers(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::umodname(3stap), - - -function::ucallers(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::uconversions.3stap.html b/man/tapset::uconversions.3stap.html deleted file mode 100644 index c5f1682c..00000000 --- a/man/tapset::uconversions.3stap.html +++ /dev/null @@ -1,571 +0,0 @@ - -Manpage of tapset::uconversions - -

tapset::uconversions

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::uconversions - systemtap uconversions tapset -
  -  -

DESCRIPTION

- -
-
-

- -

-
-
user_string - -
-Retrieves string from user space -
-See -function::user_string(3stap) - -
 for details. -
-

- -

-
user_string2 - -
-Retrieves string from user space with alternative error string -
-See -function::user_string2(3stap) - -
 for details. -
-

- -

-
user_string_warn - -
-Retrieves string from user space -
-See -function::user_string_warn(3stap) - -
 for details. -
-

- -

-
user_string2_warn - -
-Retrieves string from user space with alternative warning string -
-See -function::user_string2_warn(3stap) - -
 for details. -
-

- -

-
user_string_quoted - -
-Retrieves and quotes string from user space -
-See -function::user_string_quoted(3stap) - -
 for details. -
-

- -

-
user_string_n - -
-Retrieves string of given length from user space -
-See -function::user_string_n(3stap) - -
 for details. -
-

- -

-
user_string_n2 - -
-Retrieves string of given length from user space -
-See -function::user_string_n2(3stap) - -
 for details. -
-

- -

-
user_string_n_warn - -
-Retrieves string from user space -
-See -function::user_string_n_warn(3stap) - -
 for details. -
-

- -

-
user_string2_n_warn - -
-Retrieves string from user space with alternative warning string -
-See -function::user_string2_n_warn(3stap) - -
 for details. -
-

- -

-
user_string_n_quoted - -
-Retrieves and quotes string from user space -
-See -function::user_string_n_quoted(3stap) - -
 for details. -
-

- -

-
user_string_n2_quoted - -
-Retrieves and quotes string from user space -
-See -function::user_string_n2_quoted(3stap) - -
 for details. -
-

- -

-
user_string_utf32 - -
-Retrieves UTF-32 string from user memory -
-See -function::user_string_utf32(3stap) - -
 for details. -
-

- -

-
user_string2_utf32 - -
-Retrieves UTF-32 string from user memory with alternative error string -
-See -function::user_string2_utf32(3stap) - -
 for details. -
-

- -

-
user_string_utf16 - -
-Retrieves UTF-16 string from user memory -
-See -function::user_string_utf16(3stap) - -
 for details. -
-

- -

-
user_string2_utf16 - -
-Retrieves UTF-16 string from user memory with alternative error string -
-See -function::user_string2_utf16(3stap) - -
 for details. -
-

- -

-
user_char - -
-Retrieves a char value stored in user space -
-See -function::user_char(3stap) - -
 for details. -
-

- -

-
user_char_warn - -
-Retrieves a char value stored in user space -
-See -function::user_char_warn(3stap) - -
 for details. -
-

- -

-
user_short - -
-Retrieves a short value stored in user space -
-See -function::user_short(3stap) - -
 for details. -
-

- -

-
user_short_warn - -
-Retrieves a short value stored in user space -
-See -function::user_short_warn(3stap) - -
 for details. -
-

- -

-
user_ushort - -
-Retrieves an unsigned short value stored in user space -
-See -function::user_ushort(3stap) - -
 for details. -
-

- -

-
user_ushort_warn - -
-Retrieves an unsigned short value stored in user space -
-See -function::user_ushort_warn(3stap) - -
 for details. -
-

- -

-
user_int - -
-Retrieves an int value stored in user space -
-See -function::user_int(3stap) - -
 for details. -
-

- -

-
user_int_warn - -
-Retrieves an int value stored in user space -
-See -function::user_int_warn(3stap) - -
 for details. -
-

- -

-
user_long - -
-Retrieves a long value stored in user space -
-See -function::user_long(3stap) - -
 for details. -
-

- -

-
user_long_warn - -
-Retrieves a long value stored in user space -
-See -function::user_long_warn(3stap) - -
 for details. -
-

- -

-
user_int8 - -
-Retrieves a 8-bit integer value stored in user space -
-See -function::user_int8(3stap) - -
 for details. -
-

- -

-
user_uint8 - -
-Retrieves an unsigned 8-bit integer value stored in user space -
-See -function::user_uint8(3stap) - -
 for details. -
-

- -

-
user_int16 - -
-Retrieves a 16-bit integer value stored in user space -
-See -function::user_int16(3stap) - -
 for details. -
-

- -

-
user_uint16 - -
-Retrieves an unsigned 16-bit integer value stored in user space -
-See -function::user_uint16(3stap) - -
 for details. -
-

- -

-
user_int32 - -
-Retrieves a 32-bit integer value stored in user space -
-See -function::user_int32(3stap) - -
 for details. -
-

- -

-
user_uint32 - -
-Retrieves an unsigned 32-bit integer value stored in user space -
-See -function::user_uint32(3stap) - -
 for details. -
-

- -

-
user_int64 - -
-Retrieves a 64-bit integer value stored in user space -
-See -function::user_int64(3stap) - -
 for details. -
-

- -

-
user_uint64 - -
-Retrieves an unsigned 64-bit integer value stored in user space -
-See -function::user_uint64(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -function::user_string(3stap), - - -function::user_string2(3stap), - - -function::user_string_warn(3stap), - - -function::user_string2_warn(3stap), - - -function::user_string_quoted(3stap), - - -function::user_string_n(3stap), - - -function::user_string_n2(3stap), - - -function::user_string_n_warn(3stap), - - -function::user_string2_n_warn(3stap), - - -function::user_string_n_quoted(3stap), - - -function::user_string_n2_quoted(3stap), - - -function::user_string_utf32(3stap), - - -function::user_string2_utf32(3stap), - - -function::user_string_utf16(3stap), - - -function::user_string2_utf16(3stap), - - -function::user_char(3stap), - - -function::user_char_warn(3stap), - - -function::user_short(3stap), - - -function::user_short_warn(3stap), - - -function::user_ushort(3stap), - - -function::user_ushort_warn(3stap), - - -function::user_int(3stap), - - -function::user_int_warn(3stap), - - -function::user_long(3stap), - - -function::user_long_warn(3stap), - - -function::user_int8(3stap), - - -function::user_uint8(3stap), - - -function::user_int16(3stap), - - -function::user_uint16(3stap), - - -function::user_int32(3stap), - - -function::user_uint32(3stap), - - -function::user_int64(3stap), - - -function::user_uint64(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/tapset::udp.3stap.html b/man/tapset::udp.3stap.html deleted file mode 100644 index 00bcde54..00000000 --- a/man/tapset::udp.3stap.html +++ /dev/null @@ -1,142 +0,0 @@ - -Manpage of tapset::udp - -

tapset::udp

-Section: Misc. Reference Manual Pages (3stap)
Updated: ---
Index -Return to Main Contents
- -  -

NAME

- -tapset::udp - systemtap udp tapset -
  -  -

DESCRIPTION

- -

-
 This family of probe points is used to probe events that occur in the UDP layer.  -

-

-
-

- -

-
-
udp.sendmsg - -
-Fires whenever a process sends a UDP message -
-
 See  -probe::udp.sendmsg(3stap) - -
 for details. -
-

- -

-
udp.sendmsg.return - -
-Fires whenever an attempt to send a UDP message is completed -
-
 See  -probe::udp.sendmsg.return(3stap) - -
 for details. -
-

- -

-
udp.recvmsg - -
-Fires whenever a UDP message is received -
-
 See  -probe::udp.recvmsg(3stap) - -
 for details. -
-

- -

-
udp.recvmsg.return - -
-Fires whenever an attempt to receive a UDP message received is completed -
-
 See  -probe::udp.recvmsg.return(3stap) - -
 for details. -
-

- -

-
udp.disconnect - -
-Fires when a process requests for a UDP disconnection -
-
 See  -probe::udp.disconnect(3stap) - -
 for details. -
-

- -

-
udp.disconnect.return - -
-UDP has been disconnected successfully -
-
 See  -probe::udp.disconnect.return(3stap) - -
 for details. -

-

-  -

SEE ALSO

- - -probe::udp.sendmsg(3stap), - - -probe::udp.sendmsg.return(3stap), - - -probe::udp.recvmsg(3stap), - - -probe::udp.recvmsg.return(3stap), - - -probe::udp.disconnect(3stap), - - -probe::udp.disconnect.return(3stap), - - -stap(1), - -stapprobes(3stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/warning::debuginfo.7stap.html b/man/warning::debuginfo.7stap.html deleted file mode 100644 index 65f7e779..00000000 --- a/man/warning::debuginfo.7stap.html +++ /dev/null @@ -1,177 +0,0 @@ - -Manpage of WARNING::DEBUGINFO - -

WARNING::DEBUGINFO

-Section: Misc. Reference Manual Pages (7stap)
Index -Return to Main Contents
- -  -

NAME

- -warning::debuginfo - systemtap missing-debuginfo warnings -

- - - -

-  -

DESCRIPTION

- -For many symbolic probing operations, systemtap needs DWARF debuginfo for -the relevant binaries. This often includes resolving function/statement -probes, or $context variables in related handlers. DWARF debuginfo may -be found in the original binaries built during compilation, or may have -been split into separate files. The -SYSTEMTAP_DEBUGINFO_PATH - -environment variable affects where systemtap looks for these files. -

- -If your operating system came from a distributor, check with them if -debuginfo packages or variants are available. If your distributor does -not have debuginfo-equipped binaries at all, you may need to rebuild it. -

- -Systemtap uses the -elfutils - -library to process ELF/DWARF files. The version of elfutils used by systemtap -is the number after the slash in the --V - -output: - -

- -
- -

-
-% stap -V
-Systemtap translator/driver (version 2.3/0.156, rpm 2.3-1.fc19)
-Copyright (C) 2005-2013 Red Hat, Inc. and others
-[...]
-
-
- -
- - -

- -This indicates systemtap version 2.3 with elfutils version 0.156. -

-

-
kernel debuginfo
-For scripts that target the kernel, systemtap may search for the -vmlinux - -file created during its original build. This is distinct from the -boot-loader's compressed/stripped -vmlinuz - -file, and much larger. If you have a hand-built kernel, make sure -it was built with the -CONFIG_DEBUG_INFO=y - -option. -

-

process debuginfo
-For scripts that target user-space, systemtap may search for debuginfo. -If you have hand-built binaries, use -CFLAGS=-g -O2 - -to compile them. -

-

minidebuginfo
-On some systems, binaries may be compiled with a subset of debuginfo -useful for function tracing and backtraces. This 'Minidebuginfo' is -a xz compressed section labeled .gnu_debugdata. Support for -minidebuginfo relies on elfutils version 0.156 or later. -

-

compressed debuginfo
-On some systems, debuginfo may be available, but compressed into -.zdebug_* - -sections. Support for compressed debuginfo relies on elfutils -version 0.153 or later. -

-

unnecessary debuginfo
-In some cases, a script may be altered to avoid requiring debuginfo. -For example, as script that uses -probe syscall.* - -probes could try instead -probe nd_syscall.* - -(for non-DWARF syscall): these work similarly, and use more intricate -(fragile) tapset functions to extract system call arguments. Another -option is use of compiled-in instrumentation such as kernel tracepoints -or user-space -<sys/sdt.h> - -markers in libraries or executables, which do not require debuginfo. -If debuginfo was required for resolving a complicated -$var->foo->bar - -expression, it may be possible to use -@cast(var,foo,foo.h)->foo->bar - -to synthesize debuginfo for that type from a header file. -

-

-  -

AUTOMATION

- -

-On some platforms, systemtap may advise what commands to run, in order -to download needed debuginfo. Another possibility is to invoke systemtap -with the ---download-debuginfo - -flag. -The -stap-prep - -script included with systemtap may be able to download the -appropriate kernel debuginfo. Another possibility is to install and -use a -stap-server - -remote-compilation instance on a machine on your network, where -debuginfo and compilation resources can be centralized. Try the -stap --use-server - -option, in case such a server is already running. -

-  -

SEE ALSO

- - -
-stap(1),
-stappaths(7),
-stap-server(8),
-strip(1),
-error::dwarf(7stap),
-error::reporting(7stap),
-error::contextvars(7stap),
-http://fedorahosted.org/elfutils,
-http://fedoraproject.org/wiki/Features/MiniDebugInfo
-
-
-
- 

Index

-
-
NAME
-
DESCRIPTION
-
AUTOMATION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/man/warning::process-tracking.7stap.html b/man/warning::process-tracking.7stap.html deleted file mode 100644 index ce041df0..00000000 --- a/man/warning::process-tracking.7stap.html +++ /dev/null @@ -1,60 +0,0 @@ - -Manpage of WARNING::PROCESS-TRACKING - -

WARNING::PROCESS-TRACKING

-Section: Misc. Reference Manual Pages (7stap)
Index -Return to Main Contents
- -  -

NAME

- -warning::process-tracking - process-tracking facilities are not available -

-  -

DESCRIPTION

- -This warning, - -WARNING: process-tracking facilities are not available in this kernel - -and the related message, - -WARNING: cannot track target in process '...' - -both occur at runtime when running on a kernel (generally an older -version) that has neither utrace functionality nor an acceptable -substitute. -

- -The script should still load and run. However, probes that rely on -availability of process-tracking facilities will silently fail to -trigger. -

- -If process-tracking functionality is absolutely necessary, either a -kernel version newer than 3.5 is needed, or an older version must be -compiled with appropriate utrace patches. -

-  -

SEE ALSO

- -stap(1), - -error::reporting(7stap) - -

- -


- 

Index

-
-
NAME
-
DESCRIPTION
-
SEE ALSO
-
-
-This document was created by -man2html, -using the manual pages.
-Time: 10:39:30 GMT, March 18, 2014 - - diff --git a/tapsets/API-HZ.html b/tapsets/API-HZ.html deleted file mode 100644 index 52be2671..00000000 --- a/tapsets/API-HZ.html +++ /dev/null @@ -1,10 +0,0 @@ -function::HZ

Name

function::HZ — - Kernel HZ -

Synopsis

-    HZ:long()
-

Arguments

- None -

Description

- This function returns the value of the kernel HZ macro, - which corresponds to the rate of increase of the jiffies value. -

diff --git a/tapsets/API-MAJOR.html b/tapsets/API-MAJOR.html deleted file mode 100644 index 4cd2b3b6..00000000 --- a/tapsets/API-MAJOR.html +++ /dev/null @@ -1,7 +0,0 @@ -function::MAJOR

Name

function::MAJOR — - Extract major device number from a kernel device number (kdev_t) -

Synopsis

-    MAJOR:long(dev:long)
-

Arguments

dev

- Kernel device number to query. -

diff --git a/tapsets/API-MINOR.html b/tapsets/API-MINOR.html deleted file mode 100644 index 4f86737f..00000000 --- a/tapsets/API-MINOR.html +++ /dev/null @@ -1,7 +0,0 @@ -function::MINOR

Name

function::MINOR — - Extract minor device number from a kernel device number (kdev_t) -

Synopsis

-    MINOR:long(dev:long)
-

Arguments

dev

- Kernel device number to query. -

diff --git a/tapsets/API-MKDEV.html b/tapsets/API-MKDEV.html deleted file mode 100644 index a243e129..00000000 --- a/tapsets/API-MKDEV.html +++ /dev/null @@ -1,9 +0,0 @@ -function::MKDEV

Name

function::MKDEV — - Creates a value that can be compared to a kernel device number (kdev_t) -

Synopsis

-    MKDEV:long(major:long,minor:long)
-

Arguments

major

- Intended major device number. -

minor

- Intended minor device number. -

diff --git a/tapsets/API-addr-to-node.html b/tapsets/API-addr-to-node.html deleted file mode 100644 index 53ee400b..00000000 --- a/tapsets/API-addr-to-node.html +++ /dev/null @@ -1,10 +0,0 @@ -function::addr_to_node

Name

function::addr_to_node — - Returns which node a given address belongs to within a NUMA system -

Synopsis

-    addr_to_node:long(addr:long)
-

Arguments

addr

- the address of the faulting memory access -

Description

- This function accepts an address, and returns the - node that the given address belongs to in a NUMA system. -

diff --git a/tapsets/API-addr.html b/tapsets/API-addr.html deleted file mode 100644 index cf54bbf7..00000000 --- a/tapsets/API-addr.html +++ /dev/null @@ -1,12 +0,0 @@ -function::addr

Name

function::addr — - Address of the current probe point. -

Synopsis

-    addr:long()
-

Arguments

- None -

Description

- Returns the instruction pointer from the current probe's - register state. Not all probe types have registers though, in which case - zero is returned. The returned address is suitable for use with functions - like symname and symdata. -

diff --git a/tapsets/API-ansi-clear-screen.html b/tapsets/API-ansi-clear-screen.html deleted file mode 100644 index 3468c833..00000000 --- a/tapsets/API-ansi-clear-screen.html +++ /dev/null @@ -1,10 +0,0 @@ -function::ansi_clear_screen

Name

function::ansi_clear_screen — - Move cursor to top left and clear screen. -

Synopsis

-    ansi_clear_screen()
-

Arguments

- None -

Description

- Sends ansi code for moving cursor to top left and then the - ansi code for clearing the screen from the cursor position to the end. -

diff --git a/tapsets/API-ansi-cursor-hide.html b/tapsets/API-ansi-cursor-hide.html deleted file mode 100644 index 941f7f76..00000000 --- a/tapsets/API-ansi-cursor-hide.html +++ /dev/null @@ -1,9 +0,0 @@ -function::ansi_cursor_hide

Name

function::ansi_cursor_hide — - Hides the cursor. -

Synopsis

-    ansi_cursor_hide()
-

Arguments

- None -

Description

- Sends ansi code for hiding the cursor. -

diff --git a/tapsets/API-ansi-cursor-move.html b/tapsets/API-ansi-cursor-move.html deleted file mode 100644 index 1358d3ac..00000000 --- a/tapsets/API-ansi-cursor-move.html +++ /dev/null @@ -1,12 +0,0 @@ -function::ansi_cursor_move

Name

function::ansi_cursor_move — - Move cursor to new coordinates. -

Synopsis

-    ansi_cursor_move(x:long,y:long)
-

Arguments

x

- Row to move the cursor to. -

y

- Colomn to move the cursor to. -

Description

- Sends ansi code for positioning the cursor at row x - and column y. Coordinates start at one, (1,1) is the top-left corner. -

diff --git a/tapsets/API-ansi-cursor-restore.html b/tapsets/API-ansi-cursor-restore.html deleted file mode 100644 index 441d67a4..00000000 --- a/tapsets/API-ansi-cursor-restore.html +++ /dev/null @@ -1,10 +0,0 @@ -function::ansi_cursor_restore

Name

function::ansi_cursor_restore — - Restores a previously saved cursor position. -

Synopsis

-    ansi_cursor_restore()
-

Arguments

- None -

Description

- Sends ansi code for restoring the current cursor position - previously saved with ansi_cursor_save. -

diff --git a/tapsets/API-ansi-cursor-save.html b/tapsets/API-ansi-cursor-save.html deleted file mode 100644 index 895228e8..00000000 --- a/tapsets/API-ansi-cursor-save.html +++ /dev/null @@ -1,9 +0,0 @@ -function::ansi_cursor_save

Name

function::ansi_cursor_save — - Saves the cursor position. -

Synopsis

-    ansi_cursor_save()
-

Arguments

- None -

Description

- Sends ansi code for saving the current cursor position. -

diff --git a/tapsets/API-ansi-cursor-show.html b/tapsets/API-ansi-cursor-show.html deleted file mode 100644 index 315debc9..00000000 --- a/tapsets/API-ansi-cursor-show.html +++ /dev/null @@ -1,9 +0,0 @@ -function::ansi_cursor_show

Name

function::ansi_cursor_show — - Shows the cursor. -

Synopsis

-    ansi_cursor_show()
-

Arguments

- None -

Description

- Sends ansi code for showing the cursor. -

diff --git a/tapsets/API-ansi-new-line.html b/tapsets/API-ansi-new-line.html deleted file mode 100644 index 7d9cbb4e..00000000 --- a/tapsets/API-ansi-new-line.html +++ /dev/null @@ -1,9 +0,0 @@ -function::ansi_new_line

Name

function::ansi_new_line — - Move cursor to new line. -

Synopsis

-    ansi_new_line()
-

Arguments

- None -

Description

- Sends ansi code new line. -

diff --git a/tapsets/API-ansi-reset-color.html b/tapsets/API-ansi-reset-color.html deleted file mode 100644 index a5931286..00000000 --- a/tapsets/API-ansi-reset-color.html +++ /dev/null @@ -1,10 +0,0 @@ -function::ansi_reset_color

Name

function::ansi_reset_color — - Resets Select Graphic Rendition mode. -

Synopsis

-    ansi_reset_color()
-

Arguments

- None -

Description

- Sends ansi code to reset foreground, background and color - attribute to default values. -

diff --git a/tapsets/API-ansi-set-color.html b/tapsets/API-ansi-set-color.html deleted file mode 100644 index 6129100d..00000000 --- a/tapsets/API-ansi-set-color.html +++ /dev/null @@ -1,11 +0,0 @@ -function::ansi_set_color

Name

function::ansi_set_color — - Set the ansi Select Graphic Rendition mode. -

Synopsis

-    ansi_set_color(fg:long)
-

Arguments

fg

- Foreground color to set. -

Description

- Sends ansi code for Select Graphic Rendition mode for the - given forground color. Black (30), Blue (34), Green (32), Cyan (36), - Red (31), Purple (35), Brown (33), Light Gray (37). -

diff --git a/tapsets/API-ansi-set-color2.html b/tapsets/API-ansi-set-color2.html deleted file mode 100644 index 2eda3b7f..00000000 --- a/tapsets/API-ansi-set-color2.html +++ /dev/null @@ -1,15 +0,0 @@ -function::ansi_set_color2

Name

function::ansi_set_color2 — - Set the ansi Select Graphic Rendition mode. -

Synopsis

-    ansi_set_color2(fg:long,bg:long)
-

Arguments

fg

- Foreground color to set. -

bg

- Background color to set. -

Description

- Sends ansi code for Select Graphic Rendition mode for the - given forground color, Black (30), Blue (34), Green (32), Cyan (36), - Red (31), Purple (35), Brown (33), Light Gray (37) and the given - background color, Black (40), Red (41), Green (42), Yellow (43), - Blue (44), Magenta (45), Cyan (46), White (47). -

diff --git a/tapsets/API-ansi-set-color3.html b/tapsets/API-ansi-set-color3.html deleted file mode 100644 index c5f58535..00000000 --- a/tapsets/API-ansi-set-color3.html +++ /dev/null @@ -1,19 +0,0 @@ -function::ansi_set_color3

Name

function::ansi_set_color3 — - Set the ansi Select Graphic Rendition mode. -

Synopsis

-    ansi_set_color3(fg:long,bg:long,attr:long)
-

Arguments

fg

- Foreground color to set. -

bg

- Background color to set. -

attr

- Color attribute to set. -

Description

- Sends ansi code for Select Graphic Rendition mode for the - given forground color, Black (30), Blue (34), Green (32), Cyan (36), - Red (31), Purple (35), Brown (33), Light Gray (37), the given - background color, Black (40), Red (41), Green (42), Yellow (43), - Blue (44), Magenta (45), Cyan (46), White (47) and the color attribute - All attributes off (0), Intensity Bold (1), Underline Single (4), - Blink Slow (5), Blink Rapid (6), Image Negative (7). -

diff --git a/tapsets/API-asmlinkage.html b/tapsets/API-asmlinkage.html deleted file mode 100644 index 74371b67..00000000 --- a/tapsets/API-asmlinkage.html +++ /dev/null @@ -1,11 +0,0 @@ -function::asmlinkage

Name

function::asmlinkage — - Mark function as declared asmlinkage -

Synopsis

-    asmlinkage()
-

Arguments

- None -

Description

- Call this function before accessing arguments - using the *_arg functions - if the probed kernel function was declared asmlinkage in the source. -

diff --git a/tapsets/API-atomic-long-read.html b/tapsets/API-atomic-long-read.html deleted file mode 100644 index 2ee59d2c..00000000 --- a/tapsets/API-atomic-long-read.html +++ /dev/null @@ -1,10 +0,0 @@ -function::atomic_long_read

Name

function::atomic_long_read — - Retrieves an atomic long variable from kernel memory -

Synopsis

-    atomic_long_read:long(addr:long)
-

Arguments

addr

- pointer to atomic long variable -

Description

- Safely perform the read of an atomic long variable. This will be a - NOP on kernels that do not have ATOMIC_LONG_INIT set on the kernel config. -

diff --git a/tapsets/API-atomic-read.html b/tapsets/API-atomic-read.html deleted file mode 100644 index 9b2a8204..00000000 --- a/tapsets/API-atomic-read.html +++ /dev/null @@ -1,9 +0,0 @@ -function::atomic_read

Name

function::atomic_read — - Retrieves an atomic variable from kernel memory -

Synopsis

-    atomic_read:long(addr:long)
-

Arguments

addr

- pointer to atomic variable -

Description

- Safely perform the read of an atomic variable. -

diff --git a/tapsets/API-backtrace.html b/tapsets/API-backtrace.html deleted file mode 100644 index 25af8e39..00000000 --- a/tapsets/API-backtrace.html +++ /dev/null @@ -1,12 +0,0 @@ -function::backtrace

Name

function::backtrace — - Hex backtrace of current kernel stack -

Synopsis

-    backtrace:string()
-

Arguments

- None -

Description

- This function returns a string of hex addresses - that are a backtrace of the kernel stack. Output may be truncated - as per maximum string length (MAXSTRINGLEN). See - ubacktrace for user-space backtrace. -

diff --git a/tapsets/API-bytes-to-string.html b/tapsets/API-bytes-to-string.html deleted file mode 100644 index 8712c8c7..00000000 --- a/tapsets/API-bytes-to-string.html +++ /dev/null @@ -1,16 +0,0 @@ -function::bytes_to_string

Name

function::bytes_to_string — - Human readable string for given bytes -

Synopsis

-    bytes_to_string:string(bytes:long)
-

Arguments

bytes

- Number of bytes to translate. -

Description

- Returns a string representing the number of bytes (up - to 1024 bytes), the number of kilobytes (when less than 1024K) - postfixed by 'K', the number of megabytes (when less than 1024M) - postfixed by 'M' or the number of gigabytes postfixed by 'G'. If - representing K, M or G, and the number is amount is less than 100, - it includes a '.' plus the remainer. The returned string will be 5 - characters wide (padding with whitespace at the front) unless - negative or representing more than 9999G bytes. -

diff --git a/tapsets/API-caller-addr.html b/tapsets/API-caller-addr.html deleted file mode 100644 index 2a6d1bff..00000000 --- a/tapsets/API-caller-addr.html +++ /dev/null @@ -1,9 +0,0 @@ -function::caller_addr

Name

function::caller_addr — - Return caller address -

Synopsis

-    caller_addr:long()
-

Arguments

- None -

Description

- This function returns the address of the calling function. -

diff --git a/tapsets/API-caller.html b/tapsets/API-caller.html deleted file mode 100644 index 5a88c855..00000000 --- a/tapsets/API-caller.html +++ /dev/null @@ -1,11 +0,0 @@ -function::caller

Name

function::caller — - Return name and address of calling function -

Synopsis

-    caller:string()
-

Arguments

- None -

Description

- This function returns the address and name of the - calling function. This is equivalent to calling: - sprintf(s 0xx, symname(caller_addr), caller_addr) -

diff --git a/tapsets/API-callers.html b/tapsets/API-callers.html deleted file mode 100644 index 479a100f..00000000 --- a/tapsets/API-callers.html +++ /dev/null @@ -1,12 +0,0 @@ -function::callers

Name

function::callers — - Return first n elements of kernel stack backtrace -

Synopsis

-    callers:string(n:long)
-

Arguments

n

- number of levels to descend in the stack (not counting the top - level). If n is -1, print the entire stack. -

Description

- This function returns a string of the first n hex - addresses from the backtrace of the kernel stack. Output may be - truncated as per maximum string length (MAXSTRINGLEN). -

diff --git a/tapsets/API-cmdline-arg.html b/tapsets/API-cmdline-arg.html deleted file mode 100644 index 0576df39..00000000 --- a/tapsets/API-cmdline-arg.html +++ /dev/null @@ -1,12 +0,0 @@ -function::cmdline_arg

Name

function::cmdline_arg — - Fetch a command line argument -

Synopsis

-    cmdline_arg:string(n:long)
-

Arguments

n

- Argument to get (zero is the command itself) -

Description

- Returns argument the requested argument from the - current process or the empty string when there are not that many - arguments or there is a problem retrieving the argument. Argument - zero is traditionally the command itself. -

diff --git a/tapsets/API-cmdline-args.html b/tapsets/API-cmdline-args.html deleted file mode 100644 index b98fcdc9..00000000 --- a/tapsets/API-cmdline-args.html +++ /dev/null @@ -1,18 +0,0 @@ -function::cmdline_args

Name

function::cmdline_args — - Fetch command line arguments from current process -

Synopsis

-    cmdline_args:string(n:long,m:long,delim:string)
-

Arguments

n

- First argument to get (zero is the command itself) -

m

- Last argument to get (or minus one for all arguments after n) -

delim

- String to use to delimit arguments when more than one. -

Description

- Returns arguments from the current process starting - with argument number n, up to argument m. If there are less than n - arguments, or the arguments cannot be retrieved from the current - process, the empty string is returned. If m is smaller than n then - all arguments starting from argument n are returned. Argument zero - is traditionally the command itself. -

diff --git a/tapsets/API-cmdline-str.html b/tapsets/API-cmdline-str.html deleted file mode 100644 index bab19643..00000000 --- a/tapsets/API-cmdline-str.html +++ /dev/null @@ -1,11 +0,0 @@ -function::cmdline_str

Name

function::cmdline_str — - Fetch all command line arguments from current process -

Synopsis

-    cmdline_str:string()
-

Arguments

- None -

Description

- Returns all arguments from the current process - delimited by spaces. Returns the empty string when the arguments - cannot be retrieved. -

diff --git a/tapsets/API-commit.html b/tapsets/API-commit.html deleted file mode 100644 index a77cbf30..00000000 --- a/tapsets/API-commit.html +++ /dev/null @@ -1,10 +0,0 @@ -function::commit

Name

function::commit — - Write out all output related to a speculation buffer -

Synopsis

-    commit(id:long)
-

Arguments

id

- of the buffer to store the information in -

Description

- Output all the output for id in the order that it was entered into - the speculative buffer by speculative. -

diff --git a/tapsets/API-cpu-clock-ms.html b/tapsets/API-cpu-clock-ms.html deleted file mode 100644 index 7212fe60..00000000 --- a/tapsets/API-cpu-clock-ms.html +++ /dev/null @@ -1,11 +0,0 @@ -function::cpu_clock_ms

Name

function::cpu_clock_ms — - Number of milliseconds on the given cpu's clock -

Synopsis

-    cpu_clock_ms:long(cpu:long)
-

Arguments

cpu

- Which processor's clock to read -

Description

- This function returns the number of milliseconds on the given - cpu's clock. This is always monotonic comparing on the same cpu, but may - have some drift between cpus (within about a jiffy). -

diff --git a/tapsets/API-cpu-clock-ns.html b/tapsets/API-cpu-clock-ns.html deleted file mode 100644 index 01fe37a5..00000000 --- a/tapsets/API-cpu-clock-ns.html +++ /dev/null @@ -1,11 +0,0 @@ -function::cpu_clock_ns

Name

function::cpu_clock_ns — - Number of nanoseconds on the given cpu's clock -

Synopsis

-    cpu_clock_ns:long(cpu:long)
-

Arguments

cpu

- Which processor's clock to read -

Description

- This function returns the number of nanoseconds on the given - cpu's clock. This is always monotonic comparing on the same cpu, but may - have some drift between cpus (within about a jiffy). -

diff --git a/tapsets/API-cpu-clock-s.html b/tapsets/API-cpu-clock-s.html deleted file mode 100644 index f474df0e..00000000 --- a/tapsets/API-cpu-clock-s.html +++ /dev/null @@ -1,11 +0,0 @@ -function::cpu_clock_s

Name

function::cpu_clock_s — - Number of seconds on the given cpu's clock -

Synopsis

-    cpu_clock_s:long(cpu:long)
-

Arguments

cpu

- Which processor's clock to read -

Description

- This function returns the number of seconds on the given cpu's - clock. This is always monotonic comparing on the same cpu, but may have - some drift between cpus (within about a jiffy). -

diff --git a/tapsets/API-cpu-clock-us.html b/tapsets/API-cpu-clock-us.html deleted file mode 100644 index fd83cbb8..00000000 --- a/tapsets/API-cpu-clock-us.html +++ /dev/null @@ -1,11 +0,0 @@ -function::cpu_clock_us

Name

function::cpu_clock_us — - Number of microseconds on the given cpu's clock -

Synopsis

-    cpu_clock_us:long(cpu:long)
-

Arguments

cpu

- Which processor's clock to read -

Description

- This function returns the number of microseconds on the given - cpu's clock. This is always monotonic comparing on the same cpu, but may - have some drift between cpus (within about a jiffy). -

diff --git a/tapsets/API-cpu.html b/tapsets/API-cpu.html deleted file mode 100644 index e56dd299..00000000 --- a/tapsets/API-cpu.html +++ /dev/null @@ -1,9 +0,0 @@ -function::cpu

Name

function::cpu — - Returns the current cpu number -

Synopsis

-    cpu:long()
-

Arguments

- None -

Description

- This function returns the current cpu number. -

diff --git a/tapsets/API-cpuid.html b/tapsets/API-cpuid.html deleted file mode 100644 index b88a5da7..00000000 --- a/tapsets/API-cpuid.html +++ /dev/null @@ -1,10 +0,0 @@ -function::cpuid

Name

function::cpuid — - Returns the current cpu number -

Synopsis

-    cpuid:long()
-

Arguments

- None -

Description

- This function returns the current cpu number. - Deprecated in SystemTap 1.4 and removed in SystemTap 1.5. -

diff --git a/tapsets/API-cputime-to-msecs.html b/tapsets/API-cputime-to-msecs.html deleted file mode 100644 index 420c7f4f..00000000 --- a/tapsets/API-cputime-to-msecs.html +++ /dev/null @@ -1,7 +0,0 @@ -function::cputime_to_msecs

Name

function::cputime_to_msecs — - Translates the given cputime into milliseconds -

Synopsis

-    cputime_to_msecs:long(cputime:long)
-

Arguments

cputime

- Time to convert to milliseconds. -

diff --git a/tapsets/API-cputime-to-string.html b/tapsets/API-cputime-to-string.html deleted file mode 100644 index c4d2a187..00000000 --- a/tapsets/API-cputime-to-string.html +++ /dev/null @@ -1,10 +0,0 @@ -function::cputime_to_string

Name

function::cputime_to_string — - Human readable string for given cputime -

Synopsis

-    cputime_to_string:string(cputime:long)
-

Arguments

cputime

- Time to translate. -

Description

- Equivalent to calling: - msec_to_string (cputime_to_msecs (cputime). -

diff --git a/tapsets/API-ctime.html b/tapsets/API-ctime.html deleted file mode 100644 index 075b1995..00000000 --- a/tapsets/API-ctime.html +++ /dev/null @@ -1,44 +0,0 @@ -function::ctime

Name

function::ctime — - Convert seconds since epoch into human readable date/time string -

Synopsis

-    ctime:string(epochsecs:long)
-

Arguments

epochsecs

- Number of seconds since epoch (as returned by gettimeofday_s) -

Description

- Takes an argument of seconds since the epoch as returned by - gettimeofday_s. Returns a string of the form -

- - Wed Jun 30 21:49:08 1993 -

- - The string will always be exactly 24 characters. If the time would - be unreasonable far in the past (before what can be represented - with a 32 bit offset in seconds from the epoch) an error will occur - (which can be avoided with try/catch). If the time would be - unreasonable far in the future, an error will also occur. -

- - Note that the epoch (zero) corresponds to -

- - Thu Jan 1 00:00:00 1970 -

- - The earliest full date given by ctime, corresponding to epochsecs - -2147483648 is Fri Dec 13 20:45:52 1901. The latest full date - given by ctime, corresponding to epochsecs 2147483647 is - Tue Jan 19 03:14:07 2038. -

- - The abbreviations for the days of the week are ‘Sun’, ‘Mon’, ‘Tue’, - ‘Wed’, ‘Thu’, ‘Fri’, and ‘Sat’. The abbreviations for the months - are ‘Jan’, ‘Feb’, ‘Mar’, ‘Apr’, ‘May’, ‘Jun’, ‘Jul’, ‘Aug’, ‘Sep’, - ‘Oct’, ‘Nov’, and ‘Dec’. -

- - Note that the real C library ctime function puts a newline ('\n') - character at the end of the string that this function does not. - Also note that since the kernel has no concept of timezones, the - returned time is always in GMT. -

diff --git a/tapsets/API-d-name.html b/tapsets/API-d-name.html deleted file mode 100644 index 14bb7a96..00000000 --- a/tapsets/API-d-name.html +++ /dev/null @@ -1,11 +0,0 @@ -function::d_name

Name

function::d_name — - get the dirent name -

Synopsis

-    d_name:string(dentry:long)
-

Arguments

dentry

- Pointer to dentry. -

Description

-

- - Returns the dirent name (path basename). -

diff --git a/tapsets/API-d-path.html b/tapsets/API-d-path.html deleted file mode 100644 index 1133424b..00000000 --- a/tapsets/API-d-path.html +++ /dev/null @@ -1,12 +0,0 @@ -function::d_path

Name

function::d_path — - get the full nameidata path -

Synopsis

-    d_path:string(nd:long)
-

Arguments

nd

- Pointer to nameidata. -

Description

-

- - Returns the full dirent name (full path to the root), like - the kernel d_path function. -

diff --git a/tapsets/API-delete-stopwatch.html b/tapsets/API-delete-stopwatch.html deleted file mode 100644 index b9d3c2e1..00000000 --- a/tapsets/API-delete-stopwatch.html +++ /dev/null @@ -1,9 +0,0 @@ -function::delete_stopwatch

Name

function::delete_stopwatch — - Remove an existing stopwatch -

Synopsis

-    delete_stopwatch(name:string)
-

Arguments

name

- the stopwatch name -

Description

- Remove stopwatch name. -

diff --git a/tapsets/API-discard.html b/tapsets/API-discard.html deleted file mode 100644 index 160fa2bb..00000000 --- a/tapsets/API-discard.html +++ /dev/null @@ -1,7 +0,0 @@ -function::discard

Name

function::discard — - Discard all output related to a speculation buffer -

Synopsis

-    discard(id:long)
-

Arguments

id

- of the buffer to store the information in -

diff --git a/tapsets/API-egid.html b/tapsets/API-egid.html deleted file mode 100644 index 179d4838..00000000 --- a/tapsets/API-egid.html +++ /dev/null @@ -1,9 +0,0 @@ -function::egid

Name

function::egid — - Returns the effective gid of a target process -

Synopsis

-    egid:long()
-

Arguments

- None -

Description

- This function returns the effective gid of a target process -

diff --git a/tapsets/API-env-var.html b/tapsets/API-env-var.html deleted file mode 100644 index 8451f0be..00000000 --- a/tapsets/API-env-var.html +++ /dev/null @@ -1,11 +0,0 @@ -function::env_var

Name

function::env_var — - Fetch environment variable from current process -

Synopsis

-    env_var:string(name:string)
-

Arguments

name

- Name of the environment variable to fetch -

Description

- Returns the contents of the specified environment value - for the current process. If the variable isn't set an empty string - is returned. -

diff --git a/tapsets/API-errno-str.html b/tapsets/API-errno-str.html deleted file mode 100644 index 3f2fa460..00000000 --- a/tapsets/API-errno-str.html +++ /dev/null @@ -1,11 +0,0 @@ -function::errno_str

Name

function::errno_str — - Symbolic string associated with error code -

Synopsis

-    errno_str:string(err:long)
-

Arguments

err

- The error number received -

Description

- This function returns the symbolic string associated - with the giver error code, such as ENOENT for the number 2, or - E#3333 for an out-of-range value such as 3333. -

diff --git a/tapsets/API-error.html b/tapsets/API-error.html deleted file mode 100644 index 1fb18987..00000000 --- a/tapsets/API-error.html +++ /dev/null @@ -1,12 +0,0 @@ -function::error

Name

function::error — - Send an error message -

Synopsis

-    error(msg:string)
-

Arguments

msg

- The formatted message string -

Description

- An implicit end-of-line is added. staprun prepends - the string ERROR:. Sending an error message aborts the currently - running probe. Depending on the MAXERRORS parameter, it may - trigger an exit. -

diff --git a/tapsets/API-euid.html b/tapsets/API-euid.html deleted file mode 100644 index 09679fad..00000000 --- a/tapsets/API-euid.html +++ /dev/null @@ -1,9 +0,0 @@ -function::euid

Name

function::euid — - Return the effective uid of a target process -

Synopsis

-    euid:long()
-

Arguments

- None -

Description

- Returns the effective user ID of the target process. -

diff --git a/tapsets/API-execname.html b/tapsets/API-execname.html deleted file mode 100644 index 4e98af03..00000000 --- a/tapsets/API-execname.html +++ /dev/null @@ -1,9 +0,0 @@ -function::execname

Name

function::execname — - Returns the execname of a target process (or group of processes) -

Synopsis

-    execname:string()
-

Arguments

- None -

Description

- Returns the execname of a target process (or group of processes). -

diff --git a/tapsets/API-exit.html b/tapsets/API-exit.html deleted file mode 100644 index 139a708d..00000000 --- a/tapsets/API-exit.html +++ /dev/null @@ -1,12 +0,0 @@ -function::exit

Name

function::exit — - Start shutting down probing script. -

Synopsis

-    exit()
-

Arguments

- None -

Description

- This only enqueues a request to start - shutting down the script. New probes will not fire - (except end probes), but all currently - running ones may complete their work. -

diff --git a/tapsets/API-fastcall.html b/tapsets/API-fastcall.html deleted file mode 100644 index 54092c2f..00000000 --- a/tapsets/API-fastcall.html +++ /dev/null @@ -1,11 +0,0 @@ -function::fastcall

Name

function::fastcall — - Mark function as declared fastcall -

Synopsis

-    fastcall()
-

Arguments

- None -

Description

- Call this function before accessing arguments - using the *_arg functions - if the probed kernel function was declared fastcall in the source. -

diff --git a/tapsets/API-format-ipaddr.html b/tapsets/API-format-ipaddr.html deleted file mode 100644 index 4a863682..00000000 --- a/tapsets/API-format-ipaddr.html +++ /dev/null @@ -1,9 +0,0 @@ -function::format_ipaddr

Name

function::format_ipaddr — - Returns a string representation for an IP address -

Synopsis

-    format_ipaddr:string(addr:long,family:long)
-

Arguments

addr

- the IP address -

family

- the IP address family (either AF_INET or AF_INET6) -

diff --git a/tapsets/API-ftrace.html b/tapsets/API-ftrace.html deleted file mode 100644 index 7b333b7e..00000000 --- a/tapsets/API-ftrace.html +++ /dev/null @@ -1,11 +0,0 @@ -function::ftrace

Name

function::ftrace — - Send a message to the ftrace ring-buffer -

Synopsis

-    ftrace(msg:string)
-

Arguments

msg

- The formatted message string -

Description

- If the ftrace ring-buffer is configured & available, - see /debugfs/tracing/trace for the message. Otherwise, the - message may be quietly dropped. An implicit end-of-line is added. -

diff --git a/tapsets/API-get-cycles.html b/tapsets/API-get-cycles.html deleted file mode 100644 index cecd2670..00000000 --- a/tapsets/API-get-cycles.html +++ /dev/null @@ -1,13 +0,0 @@ -function::get_cycles

Name

function::get_cycles — - Processor cycle count -

Synopsis

-    get_cycles:long()
-

Arguments

- None -

Description

- This function returns the processor cycle counter value - if available, else it returns zero. The cycle counter is free running - and unsynchronized on each processor. Thus, the order of events cannot - determined by comparing the results of the get_cycles function on - different processors. -

diff --git a/tapsets/API-get-sa-flags.html b/tapsets/API-get-sa-flags.html deleted file mode 100644 index 1b5b0076..00000000 --- a/tapsets/API-get-sa-flags.html +++ /dev/null @@ -1,7 +0,0 @@ -function::get_sa_flags

Name

function::get_sa_flags — - Returns the numeric value of sa_flags -

Synopsis

-    get_sa_flags:long(act:long)
-

Arguments

act

- address of the sigaction to query. -

diff --git a/tapsets/API-get-sa-handler.html b/tapsets/API-get-sa-handler.html deleted file mode 100644 index cb9a0ced..00000000 --- a/tapsets/API-get-sa-handler.html +++ /dev/null @@ -1,7 +0,0 @@ -function::get_sa_handler

Name

function::get_sa_handler — - Returns the numeric value of sa_handler -

Synopsis

-    get_sa_handler:long(act:long)
-

Arguments

act

- address of the sigaction to query. -

diff --git a/tapsets/API-gettimeofday-ms.html b/tapsets/API-gettimeofday-ms.html deleted file mode 100644 index 69b7ed45..00000000 --- a/tapsets/API-gettimeofday-ms.html +++ /dev/null @@ -1,10 +0,0 @@ -function::gettimeofday_ms

Name

function::gettimeofday_ms — - Number of milliseconds since UNIX epoch -

Synopsis

-    gettimeofday_ms:long()
-

Arguments

- None -

Description

- This function returns the number of milliseconds - since the UNIX epoch. -

diff --git a/tapsets/API-gettimeofday-ns.html b/tapsets/API-gettimeofday-ns.html deleted file mode 100644 index bc9297fb..00000000 --- a/tapsets/API-gettimeofday-ns.html +++ /dev/null @@ -1,10 +0,0 @@ -function::gettimeofday_ns

Name

function::gettimeofday_ns — - Number of nanoseconds since UNIX epoch -

Synopsis

-    gettimeofday_ns:long()
-

Arguments

- None -

Description

- This function returns the number of nanoseconds - since the UNIX epoch. -

diff --git a/tapsets/API-gettimeofday-s.html b/tapsets/API-gettimeofday-s.html deleted file mode 100644 index b82145b9..00000000 --- a/tapsets/API-gettimeofday-s.html +++ /dev/null @@ -1,10 +0,0 @@ -function::gettimeofday_s

Name

function::gettimeofday_s — - Number of seconds since UNIX epoch -

Synopsis

-    gettimeofday_s:long()
-

Arguments

- None -

Description

- This function returns the number of seconds since - the UNIX epoch. -

diff --git a/tapsets/API-gettimeofday-us.html b/tapsets/API-gettimeofday-us.html deleted file mode 100644 index bd2276ab..00000000 --- a/tapsets/API-gettimeofday-us.html +++ /dev/null @@ -1,10 +0,0 @@ -function::gettimeofday_us

Name

function::gettimeofday_us — - Number of microseconds since UNIX epoch -

Synopsis

-    gettimeofday_us:long()
-

Arguments

- None -

Description

- This function returns the number of microseconds - since the UNIX epoch. -

diff --git a/tapsets/API-gid.html b/tapsets/API-gid.html deleted file mode 100644 index 981559c0..00000000 --- a/tapsets/API-gid.html +++ /dev/null @@ -1,9 +0,0 @@ -function::gid

Name

function::gid — - Returns the group ID of a target process -

Synopsis

-    gid:long()
-

Arguments

- None -

Description

- This function returns the group ID of a target process. -

diff --git a/tapsets/API-htonl.html b/tapsets/API-htonl.html deleted file mode 100644 index 841b2795..00000000 --- a/tapsets/API-htonl.html +++ /dev/null @@ -1,7 +0,0 @@ -function::htonl

Name

function::htonl — - Convert 32-bit long from host to network order -

Synopsis

-    htonl:long(x:long)
-

Arguments

x

- Value to convert -

diff --git a/tapsets/API-htonll.html b/tapsets/API-htonll.html deleted file mode 100644 index dce8053e..00000000 --- a/tapsets/API-htonll.html +++ /dev/null @@ -1,7 +0,0 @@ -function::htonll

Name

function::htonll — - Convert 64-bit long long from host to network order -

Synopsis

-    htonll:long(x:long)
-

Arguments

x

- Value to convert -

diff --git a/tapsets/API-htons.html b/tapsets/API-htons.html deleted file mode 100644 index 6006854f..00000000 --- a/tapsets/API-htons.html +++ /dev/null @@ -1,7 +0,0 @@ -function::htons

Name

function::htons — - Convert 16-bit short from host to network order -

Synopsis

-    htons:long(x:long)
-

Arguments

x

- Value to convert -

diff --git a/tapsets/API-indent.html b/tapsets/API-indent.html deleted file mode 100644 index 2a092eb1..00000000 --- a/tapsets/API-indent.html +++ /dev/null @@ -1,12 +0,0 @@ -function::indent

Name

function::indent — - returns an amount of space to indent -

Synopsis

-    indent:string(delta:long)
-

Arguments

delta

- the amount of space added/removed for each call -

Description

- This function returns a string with appropriate - indentation. Call it with a small positive or matching negative - delta. Unlike the thread_indent function, the indent does not - track individual indent values on a per thread basis. -

diff --git a/tapsets/API-inet-get-ip-source.html b/tapsets/API-inet-get-ip-source.html deleted file mode 100644 index 40e6fa7b..00000000 --- a/tapsets/API-inet-get-ip-source.html +++ /dev/null @@ -1,7 +0,0 @@ -function::inet_get_ip_source

Name

function::inet_get_ip_source — - Provide IP source address string for a kernel socket -

Synopsis

-    inet_get_ip_source:string(sock:long)
-

Arguments

sock

- pointer to the kernel socket -

diff --git a/tapsets/API-inet-get-local-port.html b/tapsets/API-inet-get-local-port.html deleted file mode 100644 index 2e675f7e..00000000 --- a/tapsets/API-inet-get-local-port.html +++ /dev/null @@ -1,7 +0,0 @@ -function::inet_get_local_port

Name

function::inet_get_local_port — - Provide local port number for a kernel socket -

Synopsis

-    inet_get_local_port:long(sock:long)
-

Arguments

sock

- pointer to the kernel socket -

diff --git a/tapsets/API-inode-name.html b/tapsets/API-inode-name.html deleted file mode 100644 index d663cd57..00000000 --- a/tapsets/API-inode-name.html +++ /dev/null @@ -1,11 +0,0 @@ -function::inode_name

Name

function::inode_name — - get the inode name -

Synopsis

-    inode_name:string(inode:long)
-

Arguments

inode

- Pointer to inode. -

Description

-

- - Returns the first path basename associated with the given inode. -

diff --git a/tapsets/API-int-arg.html b/tapsets/API-int-arg.html deleted file mode 100644 index f93b0eb7..00000000 --- a/tapsets/API-int-arg.html +++ /dev/null @@ -1,10 +0,0 @@ -function::int_arg

Name

function::int_arg — - Return function argument as signed int -

Synopsis

-    int_arg:long(n:long)
-

Arguments

n

- index of argument to return -

Description

- Return the value of argument n as a signed int - (i.e., a 32-bit integer sign-extended to 64 bits). -

diff --git a/tapsets/API-ioblock-end.html b/tapsets/API-ioblock-end.html deleted file mode 100644 index f92652b8..00000000 --- a/tapsets/API-ioblock-end.html +++ /dev/null @@ -1,31 +0,0 @@ -probe::ioblock.end

Name

probe::ioblock.end — - Fires whenever a block I/O transfer is complete. -

Synopsis

ioblock.end 

Values

- None -

Description

-

- - name - name of the probe point - devname - block device name - ino - i-node number of the mapped file - bytes_done - number of bytes transferred - sector - beginning sector for the entire bio - flags - see below - BIO_UPTODATE 0 ok after I/O completion - BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block - BIO_EOF 2 out-out-bounds error - BIO_SEG_VALID 3 nr_hw_seg valid - BIO_CLONED 4 doesn't own data - BIO_BOUNCED 5 bio is a bounce bio - BIO_USER_MAPPED 6 contains user pages - BIO_EOPNOTSUPP 7 not supported - error - 0 on success - rw - binary trace for read/write request - vcnt - bio vector count which represents number of array element (page, offset, length) which makes up this I/O request - idx - offset into the bio vector array - phys_segments - number of segments in this bio after physical address coalescing is performed. - hw_segments - number of segments after physical and DMA remapping hardware coalescing is performed - size - total size in bytes -

Context

- The process signals the transfer is done. -

diff --git a/tapsets/API-ioblock-request.html b/tapsets/API-ioblock-request.html deleted file mode 100644 index 7ac68258..00000000 --- a/tapsets/API-ioblock-request.html +++ /dev/null @@ -1,34 +0,0 @@ -probe::ioblock.request

Name

probe::ioblock.request — - Fires whenever making a generic block I/O request. -

Synopsis

ioblock.request 

Values

- None -

Description

-

- - name - name of the probe point - devname - block device name - ino - i-node number of the mapped file - sector - beginning sector for the entire bio - flags - see below - BIO_UPTODATE 0 ok after I/O completion - BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block - BIO_EOF 2 out-out-bounds error - BIO_SEG_VALID 3 nr_hw_seg valid - BIO_CLONED 4 doesn't own data - BIO_BOUNCED 5 bio is a bounce bio - BIO_USER_MAPPED 6 contains user pages - BIO_EOPNOTSUPP 7 not supported -

- - rw - binary trace for read/write request - vcnt - bio vector count which represents number of array element (page, offset, length) which make up this I/O request - idx - offset into the bio vector array - phys_segments - number of segments in this bio after physical address coalescing is performed - hw_segments - number of segments after physical and DMA remapping hardware coalescing is performed - size - total size in bytes - bdev - target block device - bdev_contains - points to the device object which contains the partition (when bio structure represents a partition) - p_start_sect - points to the start sector of the partition structure of the device -

Context

- The process makes block I/O request -

diff --git a/tapsets/API-ioblock-trace-bounce.html b/tapsets/API-ioblock-trace-bounce.html deleted file mode 100644 index 4da8767c..00000000 --- a/tapsets/API-ioblock-trace-bounce.html +++ /dev/null @@ -1,33 +0,0 @@ -probe::ioblock_trace.bounce

Name

probe::ioblock_trace.bounce — - Fires whenever a buffer bounce is needed for at least one page of a block IO request. -

Synopsis

ioblock_trace.bounce 

Values

- None -

Description

-

- - name - name of the probe point - q - request queue on which this bio was queued. - devname - device for which a buffer bounce was needed. - ino - i-node number of the mapped file - bytes_done - number of bytes transferred - sector - beginning sector for the entire bio - flags - see below - BIO_UPTODATE 0 ok after I/O completion - BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block - BIO_EOF 2 out-out-bounds error - BIO_SEG_VALID 3 nr_hw_seg valid - BIO_CLONED 4 doesn't own data - BIO_BOUNCED 5 bio is a bounce bio - BIO_USER_MAPPED 6 contains user pages - BIO_EOPNOTSUPP 7 not supported - rw - binary trace for read/write request - vcnt - bio vector count which represents number of array element (page, offset, length) which makes up this I/O request - idx - offset into the bio vector array - phys_segments - number of segments in this bio after physical address coalescing is performed. - size - total size in bytes - bdev - target block device - bdev_contains - points to the device object which contains the partition (when bio structure represents a partition) - p_start_sect - points to the start sector of the partition structure of the device -

Context

- The process creating a block IO request. -

diff --git a/tapsets/API-ioblock-trace-end.html b/tapsets/API-ioblock-trace-end.html deleted file mode 100644 index 435500e4..00000000 --- a/tapsets/API-ioblock-trace-end.html +++ /dev/null @@ -1,35 +0,0 @@ -probe::ioblock_trace.end

Name

probe::ioblock_trace.end — - Fires whenever a block I/O transfer is complete. -

Synopsis

ioblock_trace.end 

Values

- None -

Description

-

- - name - name of the probe point - q - request queue on which this bio was queued. - devname - block device name - ino - i-node number of the mapped file - bytes_done - number of bytes transferred - sector - beginning sector for the entire bio - flags - see below - BIO_UPTODATE 0 ok after I/O completion - BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block - BIO_EOF 2 out-out-bounds error - BIO_SEG_VALID 3 nr_hw_seg valid - BIO_CLONED 4 doesn't own data - BIO_BOUNCED 5 bio is a bounce bio - BIO_USER_MAPPED 6 contains user pages - BIO_EOPNOTSUPP 7 not supported -

- - rw - binary trace for read/write request - vcnt - bio vector count which represents number of array element (page, offset, length) which makes up this I/O request - idx - offset into the bio vector array - phys_segments - number of segments in this bio after physical address coalescing is performed. - size - total size in bytes - bdev - target block device - bdev_contains - points to the device object which contains the partition (when bio structure represents a partition) - p_start_sect - points to the start sector of the partition structure of the device -

Context

- The process signals the transfer is done. -

diff --git a/tapsets/API-ioblock-trace-request.html b/tapsets/API-ioblock-trace-request.html deleted file mode 100644 index ba4097f9..00000000 --- a/tapsets/API-ioblock-trace-request.html +++ /dev/null @@ -1,35 +0,0 @@ -probe::ioblock_trace.request

Name

probe::ioblock_trace.request — - Fires just as a generic block I/O request is created for a bio. -

Synopsis

ioblock_trace.request 

Values

- None -

Description

-

- - name - name of the probe point - q - request queue on which this bio was queued. - devname - block device name - ino - i-node number of the mapped file - bytes_done - number of bytes transferred - sector - beginning sector for the entire bio - flags - see below - BIO_UPTODATE 0 ok after I/O completion - BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block - BIO_EOF 2 out-out-bounds error - BIO_SEG_VALID 3 nr_hw_seg valid - BIO_CLONED 4 doesn't own data - BIO_BOUNCED 5 bio is a bounce bio - BIO_USER_MAPPED 6 contains user pages - BIO_EOPNOTSUPP 7 not supported -

- - rw - binary trace for read/write request - vcnt - bio vector count which represents number of array element (page, offset, length) which make up this I/O request - idx - offset into the bio vector array - phys_segments - number of segments in this bio after physical address coalescing is performed. - size - total size in bytes - bdev - target block device - bdev_contains - points to the device object which contains the partition (when bio structure represents a partition) - p_start_sect - points to the start sector of the partition structure of the device -

Context

- The process makes block I/O request -

diff --git a/tapsets/API-ioscheduler-elv-add-request-kp.html b/tapsets/API-ioscheduler-elv-add-request-kp.html deleted file mode 100644 index a48004ff..00000000 --- a/tapsets/API-ioscheduler-elv-add-request-kp.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::ioscheduler.elv_add_request.kp

Name

probe::ioscheduler.elv_add_request.kp — - kprobe based probe to indicate that a request was added to the request queue -

Synopsis

ioscheduler.elv_add_request.kp 

Values

disk_major

- Disk major number of the request -

rq

- Address of the request -

q

- pointer to request queue -

name

- Name of the probe point -

elevator_name

- The type of I/O elevator currently enabled -

disk_minor

- Disk minor number of the request -

rq_flags

- Request flags -

diff --git a/tapsets/API-ioscheduler-elv-add-request-tp.html b/tapsets/API-ioscheduler-elv-add-request-tp.html deleted file mode 100644 index 013c49f8..00000000 --- a/tapsets/API-ioscheduler-elv-add-request-tp.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::ioscheduler.elv_add_request.tp

Name

probe::ioscheduler.elv_add_request.tp — - tracepoint based probe to indicate a request is added to the request queue. -

Synopsis

ioscheduler.elv_add_request.tp 

Values

disk_major

- Disk major no of request. -

rq

- Address of request. -

q

- Pointer to request queue. -

name

- Name of the probe point -

elevator_name

- The type of I/O elevator currently enabled. -

disk_minor

- Disk minor number of request. -

rq_flags

- Request flags. -

diff --git a/tapsets/API-ioscheduler-elv-add-request.html b/tapsets/API-ioscheduler-elv-add-request.html deleted file mode 100644 index 2eaa3800..00000000 --- a/tapsets/API-ioscheduler-elv-add-request.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::ioscheduler.elv_add_request

Name

probe::ioscheduler.elv_add_request — - probe to indicate request is added to the request queue. -

Synopsis

ioscheduler.elv_add_request 

Values

disk_major

- Disk major no of request. -

rq

- Address of request. -

q

- Pointer to request queue. -

elevator_name

- The type of I/O elevator currently enabled. -

disk_minor

- Disk minor number of request. -

rq_flags

- Request flags. -

diff --git a/tapsets/API-ioscheduler-elv-completed-request.html b/tapsets/API-ioscheduler-elv-completed-request.html deleted file mode 100644 index 1e4b007f..00000000 --- a/tapsets/API-ioscheduler-elv-completed-request.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::ioscheduler.elv_completed_request

Name

probe::ioscheduler.elv_completed_request — - Fires when a request is completed -

Synopsis

ioscheduler.elv_completed_request 

Values

disk_major

- Disk major number of the request -

rq

- Address of the request -

name

- Name of the probe point -

elevator_name

- The type of I/O elevator currently enabled -

disk_minor

- Disk minor number of the request -

rq_flags

- Request flags -

diff --git a/tapsets/API-ioscheduler-elv-next-request-return.html b/tapsets/API-ioscheduler-elv-next-request-return.html deleted file mode 100644 index 0649b59f..00000000 --- a/tapsets/API-ioscheduler-elv-next-request-return.html +++ /dev/null @@ -1,13 +0,0 @@ -probe::ioscheduler.elv_next_request.return

Name

probe::ioscheduler.elv_next_request.return — - Fires when a request retrieval issues a return signal -

Synopsis

ioscheduler.elv_next_request.return 

Values

disk_major

- Disk major number of the request -

rq

- Address of the request -

name

- Name of the probe point -

disk_minor

- Disk minor number of the request -

rq_flags

- Request flags -

diff --git a/tapsets/API-ioscheduler-elv-next-request.html b/tapsets/API-ioscheduler-elv-next-request.html deleted file mode 100644 index 0c75a9f7..00000000 --- a/tapsets/API-ioscheduler-elv-next-request.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::ioscheduler.elv_next_request

Name

probe::ioscheduler.elv_next_request — - Fires when a request is retrieved from the request queue -

Synopsis

ioscheduler.elv_next_request 

Values

name

- Name of the probe point -

elevator_name

- The type of I/O elevator currently enabled -

diff --git a/tapsets/API-ioscheduler-trace-elv-abort-request.html b/tapsets/API-ioscheduler-trace-elv-abort-request.html deleted file mode 100644 index d6934367..00000000 --- a/tapsets/API-ioscheduler-trace-elv-abort-request.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::ioscheduler_trace.elv_abort_request

Name

probe::ioscheduler_trace.elv_abort_request — - Fires when a request is aborted. -

Synopsis

ioscheduler_trace.elv_abort_request 

Values

disk_major

- Disk major no of request. -

rq

- Address of request. -

name

- Name of the probe point -

elevator_name

- The type of I/O elevator currently enabled. -

disk_minor

- Disk minor number of request. -

rq_flags

- Request flags. -

diff --git a/tapsets/API-ioscheduler-trace-elv-completed-request.html b/tapsets/API-ioscheduler-trace-elv-completed-request.html deleted file mode 100644 index 967e10d4..00000000 --- a/tapsets/API-ioscheduler-trace-elv-completed-request.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::ioscheduler_trace.elv_completed_request

Name

probe::ioscheduler_trace.elv_completed_request — - Fires when a request is -

Synopsis

ioscheduler_trace.elv_completed_request 

Values

disk_major

- Disk major no of request. -

rq

- Address of request. -

name

- Name of the probe point -

elevator_name

- The type of I/O elevator currently enabled. -

disk_minor

- Disk minor number of request. -

rq_flags

- Request flags. -

Description

- completed. -

diff --git a/tapsets/API-ioscheduler-trace-elv-issue-request.html b/tapsets/API-ioscheduler-trace-elv-issue-request.html deleted file mode 100644 index 692e4a51..00000000 --- a/tapsets/API-ioscheduler-trace-elv-issue-request.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::ioscheduler_trace.elv_issue_request

Name

probe::ioscheduler_trace.elv_issue_request — - Fires when a request is -

Synopsis

ioscheduler_trace.elv_issue_request 

Values

disk_major

- Disk major no of request. -

rq

- Address of request. -

name

- Name of the probe point -

elevator_name

- The type of I/O elevator currently enabled. -

disk_minor

- Disk minor number of request. -

rq_flags

- Request flags. -

Description

- scheduled. -

diff --git a/tapsets/API-ioscheduler-trace-elv-requeue-request.html b/tapsets/API-ioscheduler-trace-elv-requeue-request.html deleted file mode 100644 index c54e9a89..00000000 --- a/tapsets/API-ioscheduler-trace-elv-requeue-request.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::ioscheduler_trace.elv_requeue_request

Name

probe::ioscheduler_trace.elv_requeue_request — - Fires when a request is -

Synopsis

ioscheduler_trace.elv_requeue_request 

Values

disk_major

- Disk major no of request. -

rq

- Address of request. -

name

- Name of the probe point -

elevator_name

- The type of I/O elevator currently enabled. -

disk_minor

- Disk minor number of request. -

rq_flags

- Request flags. -

Description

- put back on the queue, when the hadware cannot accept more requests. -

diff --git a/tapsets/API-ioscheduler-trace-plug.html b/tapsets/API-ioscheduler-trace-plug.html deleted file mode 100644 index a34efaf5..00000000 --- a/tapsets/API-ioscheduler-trace-plug.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::ioscheduler_trace.plug

Name

probe::ioscheduler_trace.plug — - Fires when a request queue is plugged; -

Synopsis

ioscheduler_trace.plug 

Values

name

- Name of the probe point -

rq_queue

- request queue -

Description

- ie, requests in the queue cannot be serviced by block driver. -

diff --git a/tapsets/API-ioscheduler-trace-unplug-io.html b/tapsets/API-ioscheduler-trace-unplug-io.html deleted file mode 100644 index 33794db9..00000000 --- a/tapsets/API-ioscheduler-trace-unplug-io.html +++ /dev/null @@ -1,10 +0,0 @@ -probe::ioscheduler_trace.unplug_io

Name

probe::ioscheduler_trace.unplug_io — - Fires when a request queue is unplugged; -

Synopsis

ioscheduler_trace.unplug_io 

Values

name

- Name of the probe point -

rq_queue

- request queue -

Description

- Either, when number of pending requests in the queue exceeds threshold - or, upon expiration of timer that was activated when queue was plugged. -

diff --git a/tapsets/API-ioscheduler-trace-unplug-timer.html b/tapsets/API-ioscheduler-trace-unplug-timer.html deleted file mode 100644 index 1052a57e..00000000 --- a/tapsets/API-ioscheduler-trace-unplug-timer.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::ioscheduler_trace.unplug_timer

Name

probe::ioscheduler_trace.unplug_timer — - Fires when unplug timer associated -

Synopsis

ioscheduler_trace.unplug_timer 

Values

name

- Name of the probe point -

rq_queue

- request queue -

Description

- with a request queue expires. -

diff --git a/tapsets/API-ip-ntop.html b/tapsets/API-ip-ntop.html deleted file mode 100644 index d22d827a..00000000 --- a/tapsets/API-ip-ntop.html +++ /dev/null @@ -1,7 +0,0 @@ -function::ip_ntop

Name

function::ip_ntop — - Returns a string representation for an IPv4 address -

Synopsis

-    ip_ntop:string(addr:long)
-

Arguments

addr

- the IPv4 address represented as an integer -

diff --git a/tapsets/API-ipmib-ForwDatagrams.html b/tapsets/API-ipmib-ForwDatagrams.html deleted file mode 100644 index 7dbffdf6..00000000 --- a/tapsets/API-ipmib-ForwDatagrams.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::ipmib.ForwDatagrams

Name

probe::ipmib.ForwDatagrams — - Count forwarded packet -

Synopsis

ipmib.ForwDatagrams 

Values

skb

- pointer to the struct sk_buff being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - ipmib_filter_key. If the packet passes the filter is is - counted in the global ForwDatagrams (equivalent to SNMP's MIB - IPSTATS_MIB_OUTFORWDATAGRAMS) -

diff --git a/tapsets/API-ipmib-FragFails.html b/tapsets/API-ipmib-FragFails.html deleted file mode 100644 index 5a85d7e0..00000000 --- a/tapsets/API-ipmib-FragFails.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::ipmib.FragFails

Name

probe::ipmib.FragFails — - Count datagram fragmented unsuccessfully -

Synopsis

ipmib.FragFails 

Values

skb

- pointer to the struct sk_buff being acted on -

op

- Value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - ipmib_filter_key. If the packet passes the filter is is - counted in the global FragFails (equivalent to SNMP's MIB - IPSTATS_MIB_FRAGFAILS) -

diff --git a/tapsets/API-ipmib-FragOKs.html b/tapsets/API-ipmib-FragOKs.html deleted file mode 100644 index 7cb4847e..00000000 --- a/tapsets/API-ipmib-FragOKs.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::ipmib.FragOKs

Name

probe::ipmib.FragOKs — - Count datagram fragmented successfully -

Synopsis

ipmib.FragOKs 

Values

skb

- pointer to the struct sk_buff being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - ipmib_filter_key. If the packet passes the filter is is - counted in the global FragOKs (equivalent to SNMP's MIB - IPSTATS_MIB_FRAGOKS) -

diff --git a/tapsets/API-ipmib-InAddrErrors.html b/tapsets/API-ipmib-InAddrErrors.html deleted file mode 100644 index 94d019d8..00000000 --- a/tapsets/API-ipmib-InAddrErrors.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::ipmib.InAddrErrors

Name

probe::ipmib.InAddrErrors — - Count arriving packets with an incorrect address -

Synopsis

ipmib.InAddrErrors 

Values

skb

- pointer to the struct sk_buff being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - ipmib_filter_key. If the packet passes the filter is is - counted in the global InAddrErrors (equivalent to SNMP's MIB - IPSTATS_MIB_INADDRERRORS) -

diff --git a/tapsets/API-ipmib-InDiscards.html b/tapsets/API-ipmib-InDiscards.html deleted file mode 100644 index a79306c0..00000000 --- a/tapsets/API-ipmib-InDiscards.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::ipmib.InDiscards

Name

probe::ipmib.InDiscards — - Count discarded inbound packets -

Synopsis

ipmib.InDiscards 

Values

skb

- pointer to the struct sk_buff being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - ipmib_filter_key. If the packet passes the filter is is - counted in the global InDiscards (equivalent to SNMP's MIB - STATS_MIB_INDISCARDS) -

diff --git a/tapsets/API-ipmib-InNoRoutes.html b/tapsets/API-ipmib-InNoRoutes.html deleted file mode 100644 index 987468b7..00000000 --- a/tapsets/API-ipmib-InNoRoutes.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::ipmib.InNoRoutes

Name

probe::ipmib.InNoRoutes — - Count an arriving packet with no matching socket -

Synopsis

ipmib.InNoRoutes 

Values

skb

- pointer to the struct sk_buff being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - ipmib_filter_key. If the packet passes the filter is is - counted in the global InNoRoutes (equivalent to SNMP's MIB - IPSTATS_MIB_INNOROUTES) -

diff --git a/tapsets/API-ipmib-InReceives.html b/tapsets/API-ipmib-InReceives.html deleted file mode 100644 index 0520caf5..00000000 --- a/tapsets/API-ipmib-InReceives.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::ipmib.InReceives

Name

probe::ipmib.InReceives — - Count an arriving packet -

Synopsis

ipmib.InReceives 

Values

skb

- pointer to the struct sk_buff being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - ipmib_filter_key. If the packet passes the filter is is - counted in the global InReceives (equivalent to SNMP's MIB - IPSTATS_MIB_INRECEIVES) -

diff --git a/tapsets/API-ipmib-InUnknownProtos.html b/tapsets/API-ipmib-InUnknownProtos.html deleted file mode 100644 index f1d1147a..00000000 --- a/tapsets/API-ipmib-InUnknownProtos.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::ipmib.InUnknownProtos

Name

probe::ipmib.InUnknownProtos — - Count arriving packets with an unbound proto -

Synopsis

ipmib.InUnknownProtos 

Values

skb

- pointer to the struct sk_buff being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - ipmib_filter_key. If the packet passes the filter is is - counted in the global InUnknownProtos (equivalent to SNMP's MIB - IPSTATS_MIB_INUNKNOWNPROTOS) -

diff --git a/tapsets/API-ipmib-OutRequests.html b/tapsets/API-ipmib-OutRequests.html deleted file mode 100644 index 21ae0f64..00000000 --- a/tapsets/API-ipmib-OutRequests.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::ipmib.OutRequests

Name

probe::ipmib.OutRequests — - Count a request to send a packet -

Synopsis

ipmib.OutRequests 

Values

skb

- pointer to the struct sk_buff being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - ipmib_filter_key. If the packet passes the filter is is - counted in the global OutRequests (equivalent to SNMP's MIB - IPSTATS_MIB_OUTREQUESTS) -

diff --git a/tapsets/API-ipmib-ReasmReqds.html b/tapsets/API-ipmib-ReasmReqds.html deleted file mode 100644 index aa5a5211..00000000 --- a/tapsets/API-ipmib-ReasmReqds.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::ipmib.ReasmReqds

Name

probe::ipmib.ReasmReqds — - Count number of packet fragments reassembly requests -

Synopsis

ipmib.ReasmReqds 

Values

skb

- pointer to the struct sk_buff being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - ipmib_filter_key. If the packet passes the filter is is - counted in the global ReasmReqds (equivalent to SNMP's MIB - IPSTATS_MIB_REASMREQDS) -

diff --git a/tapsets/API-ipmib-ReasmTimeout.html b/tapsets/API-ipmib-ReasmTimeout.html deleted file mode 100644 index ee7e44e6..00000000 --- a/tapsets/API-ipmib-ReasmTimeout.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::ipmib.ReasmTimeout

Name

probe::ipmib.ReasmTimeout — - Count Reassembly Timeouts -

Synopsis

ipmib.ReasmTimeout 

Values

skb

- pointer to the struct sk_buff being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - ipmib_filter_key. If the packet passes the filter is is - counted in the global ReasmTimeout (equivalent to SNMP's MIB - IPSTATS_MIB_REASMTIMEOUT) -

diff --git a/tapsets/API-ipmib-filter-key.html b/tapsets/API-ipmib-filter-key.html deleted file mode 100644 index 8e36a29d..00000000 --- a/tapsets/API-ipmib-filter-key.html +++ /dev/null @@ -1,17 +0,0 @@ -function::ipmib_filter_key

Name

function::ipmib_filter_key — - Default filter function for ipmib.* probes -

Synopsis

-    ipmib_filter_key:long(skb:long,op:long,SourceIsLocal:long)
-

Arguments

skb

- pointer to the struct sk_buff -

op

- value to be counted if skb passes the filter -

SourceIsLocal

- 1 is local operation and 0 is non-local operation -

Description

- This function is a default filter function. - The user can replace this function with their own. - The user-supplied filter function returns an index key based on the values - in skb. - A return value of 0 means this particular skb should be not be counted. -

diff --git a/tapsets/API-ipmib-get-proto.html b/tapsets/API-ipmib-get-proto.html deleted file mode 100644 index 7c94ca50..00000000 --- a/tapsets/API-ipmib-get-proto.html +++ /dev/null @@ -1,9 +0,0 @@ -function::ipmib_get_proto

Name

function::ipmib_get_proto — - Get the protocol value -

Synopsis

-    ipmib_get_proto:long(skb:long)
-

Arguments

skb

- pointer to a struct sk_buff -

Description

- Returns the protocol value from skb. -

diff --git a/tapsets/API-ipmib-local-addr.html b/tapsets/API-ipmib-local-addr.html deleted file mode 100644 index c0a93093..00000000 --- a/tapsets/API-ipmib-local-addr.html +++ /dev/null @@ -1,11 +0,0 @@ -function::ipmib_local_addr

Name

function::ipmib_local_addr — - Get the local ip address -

Synopsis

-    ipmib_local_addr:long(skb:long,SourceIsLocal:long)
-

Arguments

skb

- pointer to a struct sk_buff -

SourceIsLocal

- flag to indicate whether local operation -

Description

- Returns the local ip address skb. -

diff --git a/tapsets/API-ipmib-remote-addr.html b/tapsets/API-ipmib-remote-addr.html deleted file mode 100644 index a4f5b461..00000000 --- a/tapsets/API-ipmib-remote-addr.html +++ /dev/null @@ -1,11 +0,0 @@ -function::ipmib_remote_addr

Name

function::ipmib_remote_addr — - Get the remote ip address -

Synopsis

-    ipmib_remote_addr:long(skb:long,SourceIsLocal:long)
-

Arguments

skb

- pointer to a struct sk_buff -

SourceIsLocal

- flag to indicate whether local operation -

Description

- Returns the remote ip address from skb. -

diff --git a/tapsets/API-ipmib-tcp-local-port.html b/tapsets/API-ipmib-tcp-local-port.html deleted file mode 100644 index cae70bef..00000000 --- a/tapsets/API-ipmib-tcp-local-port.html +++ /dev/null @@ -1,11 +0,0 @@ -function::ipmib_tcp_local_port

Name

function::ipmib_tcp_local_port — - Get the local tcp port -

Synopsis

-    ipmib_tcp_local_port:long(skb:long,SourceIsLocal:long)
-

Arguments

skb

- pointer to a struct sk_buff -

SourceIsLocal

- flag to indicate whether local operation -

Description

- Returns the local tcp port from skb. -

diff --git a/tapsets/API-ipmib-tcp-remote-port.html b/tapsets/API-ipmib-tcp-remote-port.html deleted file mode 100644 index 4e88c5c0..00000000 --- a/tapsets/API-ipmib-tcp-remote-port.html +++ /dev/null @@ -1,11 +0,0 @@ -function::ipmib_tcp_remote_port

Name

function::ipmib_tcp_remote_port — - Get the remote tcp port -

Synopsis

-    ipmib_tcp_remote_port:long(skb:long,SourceIsLocal:long)
-

Arguments

skb

- pointer to a struct sk_buff -

SourceIsLocal

- flag to indicate whether local operation -

Description

- Returns the remote tcp port from skb. -

diff --git a/tapsets/API-irq-handler-entry.html b/tapsets/API-irq-handler-entry.html deleted file mode 100644 index 3afb338f..00000000 --- a/tapsets/API-irq-handler-entry.html +++ /dev/null @@ -1,27 +0,0 @@ -probe::irq_handler.entry

Name

probe::irq_handler.entry — - Execution of interrupt handler starting -

Synopsis

irq_handler.entry 

Values

dev_name

- name of device -

flags

- Flags for IRQ handler -

dev_id

- Cookie to identify device -

dir

- pointer to the proc/irq/NN/name entry -

irq

- irq number -

next_irqaction

- pointer to next irqaction for shared interrupts -

thread_flags

- Flags related to thread -

thread

- thread pointer for threaded interrupts -

thread_fn

- interrupt handler function for threaded interrupts -

handler

- interrupt handler function -

flags_str

- symbolic string representation of IRQ flags -

action

- struct irqaction* for this interrupt num -

diff --git a/tapsets/API-irq-handler-exit.html b/tapsets/API-irq-handler-exit.html deleted file mode 100644 index c0968be6..00000000 --- a/tapsets/API-irq-handler-exit.html +++ /dev/null @@ -1,29 +0,0 @@ -probe::irq_handler.exit

Name

probe::irq_handler.exit — - Execution of interrupt handler completed -

Synopsis

irq_handler.exit 

Values

dev_name

- name of device -

ret

- return value of the handler -

flags

- flags for IRQ handler -

dev_id

- Cookie to identify device -

dir

- pointer to the proc/irq/NN/name entry -

next_irqaction

- pointer to next irqaction for shared interrupts -

irq

- interrupt number -

thread_flags

- Flags related to thread -

thread

- thread pointer for threaded interrupts -

thread_fn

- interrupt handler function for threaded interrupts -

flags_str

- symbolic string representation of IRQ flags -

handler

- interrupt handler function that was executed -

action

- struct irqaction* -

diff --git a/tapsets/API-is-myproc.html b/tapsets/API-is-myproc.html deleted file mode 100644 index ca166eb0..00000000 --- a/tapsets/API-is-myproc.html +++ /dev/null @@ -1,10 +0,0 @@ -function::is_myproc

Name

function::is_myproc — - Determines if the current probe point has occurred in the user's own process -

Synopsis

-    is_myproc:long()
-

Arguments

- None -

Description

- This function returns 1 if the current probe - point has occurred in the user's own process. -

diff --git a/tapsets/API-is-return.html b/tapsets/API-is-return.html deleted file mode 100644 index 3555c891..00000000 --- a/tapsets/API-is-return.html +++ /dev/null @@ -1,10 +0,0 @@ -function::is_return

Name

function::is_return — - Whether the current probe context is a return probe -

Synopsis

-    is_return:long()
-

Arguments

- None -

Description

- Returns 1 if the current probe context is a return probe, - returns 0 otherwise. -

diff --git a/tapsets/API-is-sig-blocked.html b/tapsets/API-is-sig-blocked.html deleted file mode 100644 index bf266b91..00000000 --- a/tapsets/API-is-sig-blocked.html +++ /dev/null @@ -1,9 +0,0 @@ -function::is_sig_blocked

Name

function::is_sig_blocked — - Returns 1 if the signal is currently blocked, or 0 if it is not -

Synopsis

-    is_sig_blocked:long(task:long,sig:long)
-

Arguments

task

- address of the task_struct to query. -

sig

- the signal number to test. -

diff --git a/tapsets/API-isdigit.html b/tapsets/API-isdigit.html deleted file mode 100644 index 2245f130..00000000 --- a/tapsets/API-isdigit.html +++ /dev/null @@ -1,11 +0,0 @@ -function::isdigit

Name

function::isdigit — - Checks for a digit -

Synopsis

-    isdigit:long(str:string)
-

Arguments

str

- string to check -

Description

- Checks for a digit (0 through 9) as the first - character of a string. Returns non-zero if true, and a zero if - false. -

diff --git a/tapsets/API-isinstr.html b/tapsets/API-isinstr.html deleted file mode 100644 index 05ec3cb0..00000000 --- a/tapsets/API-isinstr.html +++ /dev/null @@ -1,12 +0,0 @@ -function::isinstr

Name

function::isinstr — - Returns whether a string is a substring of another string -

Synopsis

-    isinstr:long(s1:string,s2:string)
-

Arguments

s1

- string to search in -

s2

- substring to find -

Description

- This function returns 1 if string s1 contains s2, - otherwise zero. -

diff --git a/tapsets/API-jiffies.html b/tapsets/API-jiffies.html deleted file mode 100644 index 0f028866..00000000 --- a/tapsets/API-jiffies.html +++ /dev/null @@ -1,11 +0,0 @@ -function::jiffies

Name

function::jiffies — - Kernel jiffies count -

Synopsis

-    jiffies:long()
-

Arguments

- None -

Description

- This function returns the value of the kernel jiffies - variable. This value is incremented periodically by timer interrupts, - and may wrap around a 32-bit or 64-bit boundary. See HZ. -

diff --git a/tapsets/API-kernel-char.html b/tapsets/API-kernel-char.html deleted file mode 100644 index 11826390..00000000 --- a/tapsets/API-kernel-char.html +++ /dev/null @@ -1,10 +0,0 @@ -function::kernel_char

Name

function::kernel_char — - Retrieves a char value stored in kernel memory -

Synopsis

-    kernel_char:long(addr:long)
-

Arguments

addr

- The kernel address to retrieve the char from -

Description

- Returns the char value from a given kernel memory address. - Reports an error when reading from the given address fails. -

diff --git a/tapsets/API-kernel-int.html b/tapsets/API-kernel-int.html deleted file mode 100644 index 56f9a414..00000000 --- a/tapsets/API-kernel-int.html +++ /dev/null @@ -1,10 +0,0 @@ -function::kernel_int

Name

function::kernel_int — - Retrieves an int value stored in kernel memory -

Synopsis

-    kernel_int:long(addr:long)
-

Arguments

addr

- The kernel address to retrieve the int from -

Description

- Returns the int value from a given kernel memory address. - Reports an error when reading from the given address fails. -

diff --git a/tapsets/API-kernel-long.html b/tapsets/API-kernel-long.html deleted file mode 100644 index 5f8b0be1..00000000 --- a/tapsets/API-kernel-long.html +++ /dev/null @@ -1,10 +0,0 @@ -function::kernel_long

Name

function::kernel_long — - Retrieves a long value stored in kernel memory -

Synopsis

-    kernel_long:long(addr:long)
-

Arguments

addr

- The kernel address to retrieve the long from -

Description

- Returns the long value from a given kernel memory address. - Reports an error when reading from the given address fails. -

diff --git a/tapsets/API-kernel-pointer.html b/tapsets/API-kernel-pointer.html deleted file mode 100644 index 422cb1b5..00000000 --- a/tapsets/API-kernel-pointer.html +++ /dev/null @@ -1,11 +0,0 @@ -function::kernel_pointer

Name

function::kernel_pointer — - Retrieves a pointer value stored in kernel memory -

Synopsis

-    kernel_pointer:long(addr:long)
-

Arguments

addr

- The kernel address to retrieve the pointer from -

Description

- Returns the pointer value from a given kernel memory - address. Reports an error when reading from the given address - fails. -

diff --git a/tapsets/API-kernel-short.html b/tapsets/API-kernel-short.html deleted file mode 100644 index 86227bde..00000000 --- a/tapsets/API-kernel-short.html +++ /dev/null @@ -1,10 +0,0 @@ -function::kernel_short

Name

function::kernel_short — - Retrieves a short value stored in kernel memory -

Synopsis

-    kernel_short:long(addr:long)
-

Arguments

addr

- The kernel address to retrieve the short from -

Description

- Returns the short value from a given kernel memory address. - Reports an error when reading from the given address fails. -

diff --git a/tapsets/API-kernel-string-n.html b/tapsets/API-kernel-string-n.html deleted file mode 100644 index 68558be2..00000000 --- a/tapsets/API-kernel-string-n.html +++ /dev/null @@ -1,12 +0,0 @@ -function::kernel_string_n

Name

function::kernel_string_n — - Retrieves string of given length from kernel memory -

Synopsis

-    kernel_string_n:string(addr:long,n:long)
-

Arguments

addr

- The kernel address to retrieve the string from -

n

- The maximum length of the string (if not null terminated) -

Description

- Returns the C string of a maximum given length from a - given kernel memory address. Reports an error on string copy fault. -

diff --git a/tapsets/API-kernel-string-utf16.html b/tapsets/API-kernel-string-utf16.html deleted file mode 100644 index e5dc5cbe..00000000 --- a/tapsets/API-kernel-string-utf16.html +++ /dev/null @@ -1,11 +0,0 @@ -function::kernel_string_utf16

Name

function::kernel_string_utf16 — - Retrieves UTF-16 string from kernel memory -

Synopsis

-    kernel_string_utf16:string(addr:long)
-

Arguments

addr

- The kernel address to retrieve the string from -

Description

- This function returns a null terminated UTF-8 string converted - from the UTF-16 string at a given kernel memory address. Reports an error on - string copy fault or conversion error. -

diff --git a/tapsets/API-kernel-string-utf32.html b/tapsets/API-kernel-string-utf32.html deleted file mode 100644 index 1feffe72..00000000 --- a/tapsets/API-kernel-string-utf32.html +++ /dev/null @@ -1,11 +0,0 @@ -function::kernel_string_utf32

Name

function::kernel_string_utf32 — - Retrieves UTF-32 string from kernel memory -

Synopsis

-    kernel_string_utf32:string(addr:long)
-

Arguments

addr

- The kernel address to retrieve the string from -

Description

- This function returns a null terminated UTF-8 string converted - from the UTF-32 string at a given kernel memory address. Reports an error on - string copy fault or conversion error. -

diff --git a/tapsets/API-kernel-string.html b/tapsets/API-kernel-string.html deleted file mode 100644 index 987c1d00..00000000 --- a/tapsets/API-kernel-string.html +++ /dev/null @@ -1,11 +0,0 @@ -function::kernel_string

Name

function::kernel_string — - Retrieves string from kernel memory -

Synopsis

-    kernel_string:string(addr:long)
-

Arguments

addr

- The kernel address to retrieve the string from -

Description

- This function returns the null terminated C string - from a given kernel memory address. Reports an error on string - copy fault. -

diff --git a/tapsets/API-kernel-string2-utf16.html b/tapsets/API-kernel-string2-utf16.html deleted file mode 100644 index ccf357f6..00000000 --- a/tapsets/API-kernel-string2-utf16.html +++ /dev/null @@ -1,13 +0,0 @@ -function::kernel_string2_utf16

Name

function::kernel_string2_utf16 — - Retrieves UTF-16 string from kernel memory with alternative error string -

Synopsis

-    kernel_string2_utf16:string(addr:long,err_msg:string)
-

Arguments

addr

- The kernel address to retrieve the string from -

err_msg

- The error message to return when data isn't available -

Description

- This function returns a null terminated UTF-8 string converted - from the UTF-16 string at a given kernel memory address. Reports the given - error message on string copy fault or conversion error. -

diff --git a/tapsets/API-kernel-string2-utf32.html b/tapsets/API-kernel-string2-utf32.html deleted file mode 100644 index 9df21ca3..00000000 --- a/tapsets/API-kernel-string2-utf32.html +++ /dev/null @@ -1,13 +0,0 @@ -function::kernel_string2_utf32

Name

function::kernel_string2_utf32 — - Retrieves UTF-32 string from kernel memory with alternative error string -

Synopsis

-    kernel_string2_utf32:string(addr:long,err_msg:string)
-

Arguments

addr

- The kernel address to retrieve the string from -

err_msg

- The error message to return when data isn't available -

Description

- This function returns a null terminated UTF-8 string converted - from the UTF-32 string at a given kernel memory address. Reports the given - error message on string copy fault or conversion error. -

diff --git a/tapsets/API-kernel-string2.html b/tapsets/API-kernel-string2.html deleted file mode 100644 index 6817b079..00000000 --- a/tapsets/API-kernel-string2.html +++ /dev/null @@ -1,13 +0,0 @@ -function::kernel_string2

Name

function::kernel_string2 — - Retrieves string from kernel memory with alternative error string -

Synopsis

-    kernel_string2:string(addr:long,err_msg:string)
-

Arguments

addr

- The kernel address to retrieve the string from -

err_msg

- The error message to return when data isn't available -

Description

- This function returns the null terminated C string - from a given kernel memory address. Reports the given error message - on string copy fault. -

diff --git a/tapsets/API-kprocess-create.html b/tapsets/API-kprocess-create.html deleted file mode 100644 index e3e4e12f..00000000 --- a/tapsets/API-kprocess-create.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::kprocess.create

Name

probe::kprocess.create — - Fires whenever a new process or thread is successfully created -

Synopsis

kprocess.create 

Values

new_tid

- The TID of the newly created task -

new_pid

- The PID of the newly created process -

Context

- Parent of the created process. -

Description

- Fires whenever a new process is successfully created, either as a result of - fork (or one of its syscall variants), or a new kernel thread. -

diff --git a/tapsets/API-kprocess-exec-complete.html b/tapsets/API-kprocess-exec-complete.html deleted file mode 100644 index 76aadba2..00000000 --- a/tapsets/API-kprocess-exec-complete.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::kprocess.exec_complete

Name

probe::kprocess.exec_complete — - Return from exec to a new program -

Synopsis

kprocess.exec_complete 

Values

success

- A boolean indicating whether the exec was successful -

errno

- The error number resulting from the exec -

Context

- On success, the context of the new executable. - On failure, remains in the context of the caller. -

Description

- Fires at the completion of an exec call. -

diff --git a/tapsets/API-kprocess-exec.html b/tapsets/API-kprocess-exec.html deleted file mode 100644 index 4b6d7e96..00000000 --- a/tapsets/API-kprocess-exec.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::kprocess.exec

Name

probe::kprocess.exec — - Attempt to exec to a new program -

Synopsis

kprocess.exec 

Values

filename

- The path to the new executable -

Context

- The caller of exec. -

Description

- Fires whenever a process attempts to exec to a new program. -

diff --git a/tapsets/API-kprocess-exit.html b/tapsets/API-kprocess-exit.html deleted file mode 100644 index 5f96be33..00000000 --- a/tapsets/API-kprocess-exit.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::kprocess.exit

Name

probe::kprocess.exit — - Exit from process -

Synopsis

kprocess.exit 

Values

code

- The exit code of the process -

Context

- The process which is terminating. -

Description

- Fires when a process terminates. This will always be followed by a - kprocess.release, though the latter may be delayed if the process waits in a - zombie state. -

diff --git a/tapsets/API-kprocess-release.html b/tapsets/API-kprocess-release.html deleted file mode 100644 index f066d18a..00000000 --- a/tapsets/API-kprocess-release.html +++ /dev/null @@ -1,18 +0,0 @@ -probe::kprocess.release

Name

probe::kprocess.release — - Process released -

Synopsis

kprocess.release 

Values

pid

- Same as released_pid for compatibility (deprecated) -

released_pid

- PID of the process being released -

released_tid

- TID of the task being released -

task

- A task handle to the process being released -

Context

- The context of the parent, if it wanted notification of this process' - termination, else the context of the process itself. -

Description

- Fires when a process is released from the kernel. This always follows a - kprocess.exit, though it may be delayed somewhat if the process waits in a - zombie state. -

diff --git a/tapsets/API-kprocess-start.html b/tapsets/API-kprocess-start.html deleted file mode 100644 index cdd4649b..00000000 --- a/tapsets/API-kprocess-start.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::kprocess.start

Name

probe::kprocess.start — - Starting new process -

Synopsis

kprocess.start 

Values

- None -

Context

- Newly created process. -

Description

- Fires immediately before a new process begins execution. -

diff --git a/tapsets/API-linuxmib-DelayedACKs.html b/tapsets/API-linuxmib-DelayedACKs.html deleted file mode 100644 index 8be11927..00000000 --- a/tapsets/API-linuxmib-DelayedACKs.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::linuxmib.DelayedACKs

Name

probe::linuxmib.DelayedACKs — - Count of delayed acks -

Synopsis

linuxmib.DelayedACKs 

Values

sk

- Pointer to the struct sock being acted on -

op

- Value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - linuxmib_filter_key. If the packet passes the filter is is - counted in the global DelayedACKs (equivalent to SNMP's MIB - LINUX_MIB_DELAYEDACKS) -

diff --git a/tapsets/API-linuxmib-ListenDrops.html b/tapsets/API-linuxmib-ListenDrops.html deleted file mode 100644 index eabb6887..00000000 --- a/tapsets/API-linuxmib-ListenDrops.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::linuxmib.ListenDrops

Name

probe::linuxmib.ListenDrops — - Count of times conn request that were dropped -

Synopsis

linuxmib.ListenDrops 

Values

sk

- Pointer to the struct sock being acted on -

op

- Value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - linuxmib_filter_key. If the packet passes the filter is is - counted in the global ListenDrops (equivalent to SNMP's MIB - LINUX_MIB_LISTENDROPS) -

diff --git a/tapsets/API-linuxmib-ListenOverflows.html b/tapsets/API-linuxmib-ListenOverflows.html deleted file mode 100644 index 45343fb4..00000000 --- a/tapsets/API-linuxmib-ListenOverflows.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::linuxmib.ListenOverflows

Name

probe::linuxmib.ListenOverflows — - Count of times a listen queue overflowed -

Synopsis

linuxmib.ListenOverflows 

Values

sk

- Pointer to the struct sock being acted on -

op

- Value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - linuxmib_filter_key. If the packet passes the filter is is - counted in the global ListenOverflows (equivalent to SNMP's MIB - LINUX_MIB_LISTENOVERFLOWS) -

diff --git a/tapsets/API-linuxmib-TCPMemoryPressures.html b/tapsets/API-linuxmib-TCPMemoryPressures.html deleted file mode 100644 index c29d401d..00000000 --- a/tapsets/API-linuxmib-TCPMemoryPressures.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::linuxmib.TCPMemoryPressures

Name

probe::linuxmib.TCPMemoryPressures — - Count of times memory pressure was used -

Synopsis

linuxmib.TCPMemoryPressures 

Values

sk

- Pointer to the struct sock being acted on -

op

- Value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - linuxmib_filter_key. If the packet passes the filter is is - counted in the global TCPMemoryPressures (equivalent to SNMP's MIB - LINUX_MIB_TCPMEMORYPRESSURES) -

diff --git a/tapsets/API-linuxmib-filter-key.html b/tapsets/API-linuxmib-filter-key.html deleted file mode 100644 index 3309a558..00000000 --- a/tapsets/API-linuxmib-filter-key.html +++ /dev/null @@ -1,15 +0,0 @@ -function::linuxmib_filter_key

Name

function::linuxmib_filter_key — - Default filter function for linuxmib.* probes -

Synopsis

-    linuxmib_filter_key:long(sk:long,op:long)
-

Arguments

sk

- pointer to the struct sock -

op

- value to be counted if sk passes the filter -

Description

- This function is a default filter function. - The user can replace this function with their own. - The user-supplied filter function returns an index key based on the values - in sk. - A return value of 0 means this particular sk should be not be counted. -

diff --git a/tapsets/API-local-clock-ms.html b/tapsets/API-local-clock-ms.html deleted file mode 100644 index 9fe84c8e..00000000 --- a/tapsets/API-local-clock-ms.html +++ /dev/null @@ -1,11 +0,0 @@ -function::local_clock_ms

Name

function::local_clock_ms — - Number of milliseconds on the local cpu's clock -

Synopsis

-    local_clock_ms:long()
-

Arguments

- None -

Description

- This function returns the number of milliseconds on the local - cpu's clock. This is always monotonic comparing on the same cpu, but may - have some drift between cpus (within about a jiffy). -

diff --git a/tapsets/API-local-clock-ns.html b/tapsets/API-local-clock-ns.html deleted file mode 100644 index b9dec799..00000000 --- a/tapsets/API-local-clock-ns.html +++ /dev/null @@ -1,11 +0,0 @@ -function::local_clock_ns

Name

function::local_clock_ns — - Number of nanoseconds on the local cpu's clock -

Synopsis

-    local_clock_ns:long()
-

Arguments

- None -

Description

- This function returns the number of nanoseconds on the local - cpu's clock. This is always monotonic comparing on the same cpu, but may - have some drift between cpus (within about a jiffy). -

diff --git a/tapsets/API-local-clock-s.html b/tapsets/API-local-clock-s.html deleted file mode 100644 index 700bd4c2..00000000 --- a/tapsets/API-local-clock-s.html +++ /dev/null @@ -1,11 +0,0 @@ -function::local_clock_s

Name

function::local_clock_s — - Number of seconds on the local cpu's clock -

Synopsis

-    local_clock_s:long()
-

Arguments

- None -

Description

- This function returns the number of seconds on the local cpu's - clock. This is always monotonic comparing on the same cpu, but may have - some drift between cpus (within about a jiffy). -

diff --git a/tapsets/API-local-clock-us.html b/tapsets/API-local-clock-us.html deleted file mode 100644 index b8b50fdb..00000000 --- a/tapsets/API-local-clock-us.html +++ /dev/null @@ -1,11 +0,0 @@ -function::local_clock_us

Name

function::local_clock_us — - Number of microseconds on the local cpu's clock -

Synopsis

-    local_clock_us:long()
-

Arguments

- None -

Description

- This function returns the number of microseconds on the local - cpu's clock. This is always monotonic comparing on the same cpu, but may - have some drift between cpus (within about a jiffy). -

diff --git a/tapsets/API-log.html b/tapsets/API-log.html deleted file mode 100644 index cc930a89..00000000 --- a/tapsets/API-log.html +++ /dev/null @@ -1,14 +0,0 @@ -function::log

Name

function::log — - Send a line to the common trace buffer -

Synopsis

-    log(msg:string)
-

Arguments

msg

- The formatted message string -

Description

- This function logs data. log sends the - message immediately to staprun and to the bulk transport - (relayfs) if it is being used. If the last character given - is not a newline, then one is added. This function is not - as effecient as printf and should be used only for urgent - messages. -

diff --git a/tapsets/API-long-arg.html b/tapsets/API-long-arg.html deleted file mode 100644 index d3bcee8b..00000000 --- a/tapsets/API-long-arg.html +++ /dev/null @@ -1,11 +0,0 @@ -function::long_arg

Name

function::long_arg — - Return function argument as signed long -

Synopsis

-    long_arg:long(n:long)
-

Arguments

n

- index of argument to return -

Description

- Return the value of argument n as a signed long. - On architectures where a long is 32 bits, the value is sign-extended - to 64 bits. -

diff --git a/tapsets/API-longlong-arg.html b/tapsets/API-longlong-arg.html deleted file mode 100644 index 6f26b4b5..00000000 --- a/tapsets/API-longlong-arg.html +++ /dev/null @@ -1,9 +0,0 @@ -function::longlong_arg

Name

function::longlong_arg — - Return function argument as 64-bit value -

Synopsis

-    longlong_arg:long(n:long)
-

Arguments

n

- index of argument to return -

Description

- Return the value of argument n as a 64-bit value. -

diff --git a/tapsets/API-mdelay.html b/tapsets/API-mdelay.html deleted file mode 100644 index a5aea47b..00000000 --- a/tapsets/API-mdelay.html +++ /dev/null @@ -1,10 +0,0 @@ -function::mdelay

Name

function::mdelay — - millisecond delay -

Synopsis

-    mdelay(ms:long)
-

Arguments

ms

- Number of milliseconds to delay. -

Description

- This function inserts a multi-millisecond busy-delay into a probe handler. - It requires guru mode. -

diff --git a/tapsets/API-mem-page-size.html b/tapsets/API-mem-page-size.html deleted file mode 100644 index 23f3ae4e..00000000 --- a/tapsets/API-mem-page-size.html +++ /dev/null @@ -1,7 +0,0 @@ -function::mem_page_size

Name

function::mem_page_size — - Number of bytes in a page for this architecture -

Synopsis

-    mem_page_size:long()
-

Arguments

- None -

diff --git a/tapsets/API-modname.html b/tapsets/API-modname.html deleted file mode 100644 index 1d11e195..00000000 --- a/tapsets/API-modname.html +++ /dev/null @@ -1,12 +0,0 @@ -function::modname

Name

function::modname — - Return the kernel module name loaded at the address -

Synopsis

-    modname:string(addr:long)
-

Arguments

addr

- The address to map to a kernel module name -

Description

- Returns the module name associated with the given - address if known. If not known it will raise an error. If the - address was not in a kernel module, but in the kernel itself, then - the string kernel will be returned. -

diff --git a/tapsets/API-module-name.html b/tapsets/API-module-name.html deleted file mode 100644 index e0b2333f..00000000 --- a/tapsets/API-module-name.html +++ /dev/null @@ -1,11 +0,0 @@ -function::module_name

Name

function::module_name — - The module name of the current script -

Synopsis

-    module_name:string()
-

Arguments

- None -

Description

- This function returns the name of the stap module. - Either generated randomly (stap_[0-9a-f]+_[0-9a-f]+) - or set by stap -m <module_name>. -

diff --git a/tapsets/API-msecs-to-string.html b/tapsets/API-msecs-to-string.html deleted file mode 100644 index 5827771a..00000000 --- a/tapsets/API-msecs-to-string.html +++ /dev/null @@ -1,12 +0,0 @@ -function::msecs_to_string

Name

function::msecs_to_string — - Human readable string for given milliseconds -

Synopsis

-    msecs_to_string:string(msecs:long)
-

Arguments

msecs

- Number of milliseconds to translate. -

Description

- Returns a string representing the number of - milliseconds as a human readable string consisting of XmY.ZZZs, - where X is the number of minutes, Y is the number of seconds and - ZZZ is the number of milliseconds. -

diff --git a/tapsets/API-netdev-change-mac.html b/tapsets/API-netdev-change-mac.html deleted file mode 100644 index 889a74ba..00000000 --- a/tapsets/API-netdev-change-mac.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::netdev.change_mac

Name

probe::netdev.change_mac — - Called when the netdev_name has the MAC changed -

Synopsis

netdev.change_mac 

Values

dev_name

- The device that will have the MAC changed -

new_mac

- The new MAC address -

mac_len

- The MAC length -

old_mac

- The current MAC address -

diff --git a/tapsets/API-netdev-change-mtu.html b/tapsets/API-netdev-change-mtu.html deleted file mode 100644 index c2de734c..00000000 --- a/tapsets/API-netdev-change-mtu.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::netdev.change_mtu

Name

probe::netdev.change_mtu — - Called when the netdev MTU is changed -

Synopsis

netdev.change_mtu 

Values

dev_name

- The device that will have the MTU changed -

new_mtu

- The new MTU -

old_mtu

- The current MTU -

diff --git a/tapsets/API-netdev-change-rx-flag.html b/tapsets/API-netdev-change-rx-flag.html deleted file mode 100644 index b198091d..00000000 --- a/tapsets/API-netdev-change-rx-flag.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::netdev.change_rx_flag

Name

probe::netdev.change_rx_flag — - Called when the device RX flag will be changed -

Synopsis

netdev.change_rx_flag 

Values

dev_name

- The device that will be changed -

flags

- The new flags -

diff --git a/tapsets/API-netdev-close.html b/tapsets/API-netdev-close.html deleted file mode 100644 index 6b4e55dc..00000000 --- a/tapsets/API-netdev-close.html +++ /dev/null @@ -1,5 +0,0 @@ -probe::netdev.close

Name

probe::netdev.close — - Called when the device is closed -

Synopsis

netdev.close 

Values

dev_name

- The device that is going to be closed -

diff --git a/tapsets/API-netdev-get-stats.html b/tapsets/API-netdev-get-stats.html deleted file mode 100644 index 027a9bc8..00000000 --- a/tapsets/API-netdev-get-stats.html +++ /dev/null @@ -1,5 +0,0 @@ -probe::netdev.get_stats

Name

probe::netdev.get_stats — - Called when someone asks the device statistics -

Synopsis

netdev.get_stats 

Values

dev_name

- The device that is going to provide the statistics -

diff --git a/tapsets/API-netdev-hard-transmit.html b/tapsets/API-netdev-hard-transmit.html deleted file mode 100644 index 6f7d6478..00000000 --- a/tapsets/API-netdev-hard-transmit.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::netdev.hard_transmit

Name

probe::netdev.hard_transmit — - Called when the devices is going to TX (hard) -

Synopsis

netdev.hard_transmit 

Values

protocol

- The protocol used in the transmission -

dev_name

- The device scheduled to transmit -

length

- The length of the transmit buffer. -

truesize

- The size of the data to be transmitted. -

diff --git a/tapsets/API-netdev-ioctl.html b/tapsets/API-netdev-ioctl.html deleted file mode 100644 index 07a7d433..00000000 --- a/tapsets/API-netdev-ioctl.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::netdev.ioctl

Name

probe::netdev.ioctl — - Called when the device suffers an IOCTL -

Synopsis

netdev.ioctl 

Values

cmd

- The IOCTL request -

arg

- The IOCTL argument (usually the netdev interface) -

diff --git a/tapsets/API-netdev-open.html b/tapsets/API-netdev-open.html deleted file mode 100644 index b6d05fd5..00000000 --- a/tapsets/API-netdev-open.html +++ /dev/null @@ -1,5 +0,0 @@ -probe::netdev.open

Name

probe::netdev.open — - Called when the device is opened -

Synopsis

netdev.open 

Values

dev_name

- The device that is going to be opened -

diff --git a/tapsets/API-netdev-receive.html b/tapsets/API-netdev-receive.html deleted file mode 100644 index 563ef90d..00000000 --- a/tapsets/API-netdev-receive.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::netdev.receive

Name

probe::netdev.receive — - Data received from network device. -

Synopsis

netdev.receive 

Values

protocol

- Protocol of received packet. -

dev_name

- The name of the device. e.g: eth0, ath1. -

length

- The length of the receiving buffer. -

diff --git a/tapsets/API-netdev-register.html b/tapsets/API-netdev-register.html deleted file mode 100644 index 277f0ab6..00000000 --- a/tapsets/API-netdev-register.html +++ /dev/null @@ -1,5 +0,0 @@ -probe::netdev.register

Name

probe::netdev.register — - Called when the device is registered -

Synopsis

netdev.register 

Values

dev_name

- The device that is going to be registered -

diff --git a/tapsets/API-netdev-rx.html b/tapsets/API-netdev-rx.html deleted file mode 100644 index 13ca0223..00000000 --- a/tapsets/API-netdev-rx.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::netdev.rx

Name

probe::netdev.rx — - Called when the device is going to receive a packet -

Synopsis

netdev.rx 

Values

protocol

- The packet protocol -

dev_name

- The device received the packet -

diff --git a/tapsets/API-netdev-set-promiscuity.html b/tapsets/API-netdev-set-promiscuity.html deleted file mode 100644 index 1b1c0c27..00000000 --- a/tapsets/API-netdev-set-promiscuity.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::netdev.set_promiscuity

Name

probe::netdev.set_promiscuity — - Called when the device enters/leaves promiscuity -

Synopsis

netdev.set_promiscuity 

Values

dev_name

- The device that is entering/leaving promiscuity mode -

enable

- If the device is entering promiscuity mode -

inc

- Count the number of promiscuity openers -

disable

- If the device is leaving promiscuity mode -

diff --git a/tapsets/API-netdev-transmit.html b/tapsets/API-netdev-transmit.html deleted file mode 100644 index 057822f5..00000000 --- a/tapsets/API-netdev-transmit.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::netdev.transmit

Name

probe::netdev.transmit — - Network device transmitting buffer -

Synopsis

netdev.transmit 

Values

protocol

- The protocol of this packet(defined in include/linux/if_ether.h). -

dev_name

- The name of the device. e.g: eth0, ath1. -

length

- The length of the transmit buffer. -

truesize

- The size of the data to be transmitted. -

diff --git a/tapsets/API-netdev-unregister.html b/tapsets/API-netdev-unregister.html deleted file mode 100644 index 96397054..00000000 --- a/tapsets/API-netdev-unregister.html +++ /dev/null @@ -1,5 +0,0 @@ -probe::netdev.unregister

Name

probe::netdev.unregister — - Called when the device is being unregistered -

Synopsis

netdev.unregister 

Values

dev_name

- The device that is going to be unregistered -

diff --git a/tapsets/API-netfilter-arp-forward.html b/tapsets/API-netfilter-arp-forward.html deleted file mode 100644 index edb33a56..00000000 --- a/tapsets/API-netfilter-arp-forward.html +++ /dev/null @@ -1,49 +0,0 @@ -probe::netfilter.arp.forward

Name

probe::netfilter.arp.forward — - - Called for each ARP packet to be forwarded -

Synopsis

netfilter.arp.forward 

Values

indev

- Address of net_device representing input device, 0 if unknown -

nf_accept

- Constant used to signify an 'accept' verdict -

ar_sha

- Ethernet+IP only (ar_pro==0x800): source hardware (MAC) address -

pf

- Protocol family -- always arp -

ar_sip

- Ethernet+IP only (ar_pro==0x800): source IP address -

nf_queue

- Constant used to signify a 'queue' verdict -

ar_op

- ARP opcode (command) -

nf_stolen

- Constant used to signify a 'stolen' verdict -

outdev_name

- Name of network device packet will be routed to (if known) -

nf_drop

- Constant used to signify a 'drop' verdict -

ar_hln

- Length of hardware address -

ar_pro

- Format of protocol address -

ar_pln

- Length of protocol address -

ar_tip

- Ethernet+IP only (ar_pro==0x800): target IP address -

nf_stop

- Constant used to signify a 'stop' verdict -

arphdr

- Address of ARP header -

length

- The length of the packet buffer contents, in bytes -

outdev

- Address of net_device representing output device, 0 if unknown -

ar_tha

- Ethernet+IP only (ar_pro==0x800): target hardware (MAC) address -

ar_data

- Address of ARP packet data region (after the header) -

nf_repeat

- Constant used to signify a 'repeat' verdict -

indev_name

- Name of network device packet was received on (if known) -

ar_hrd

- Format of hardware address -

diff --git a/tapsets/API-netfilter-arp-in.html b/tapsets/API-netfilter-arp-in.html deleted file mode 100644 index 459e74ed..00000000 --- a/tapsets/API-netfilter-arp-in.html +++ /dev/null @@ -1,49 +0,0 @@ -probe::netfilter.arp.in

Name

probe::netfilter.arp.in — - - Called for each incoming ARP packet -

Synopsis

netfilter.arp.in 

Values

indev

- Address of net_device representing input device, 0 if unknown -

nf_accept

- Constant used to signify an 'accept' verdict -

ar_sha

- Ethernet+IP only (ar_pro==0x800): source hardware (MAC) address -

pf

- Protocol family -- always arp -

ar_sip

- Ethernet+IP only (ar_pro==0x800): source IP address -

nf_queue

- Constant used to signify a 'queue' verdict -

ar_op

- ARP opcode (command) -

nf_stolen

- Constant used to signify a 'stolen' verdict -

outdev_name

- Name of network device packet will be routed to (if known) -

nf_drop

- Constant used to signify a 'drop' verdict -

ar_hln

- Length of hardware address -

ar_pro

- Format of protocol address -

ar_pln

- Length of protocol address -

ar_tip

- Ethernet+IP only (ar_pro==0x800): target IP address -

nf_stop

- Constant used to signify a 'stop' verdict -

arphdr

- Address of ARP header -

length

- The length of the packet buffer contents, in bytes -

outdev

- Address of net_device representing output device, 0 if unknown -

ar_tha

- Ethernet+IP only (ar_pro==0x800): target hardware (MAC) address -

ar_data

- Address of ARP packet data region (after the header) -

nf_repeat

- Constant used to signify a 'repeat' verdict -

indev_name

- Name of network device packet was received on (if known) -

ar_hrd

- Format of hardware address -

diff --git a/tapsets/API-netfilter-arp-out.html b/tapsets/API-netfilter-arp-out.html deleted file mode 100644 index 191fd689..00000000 --- a/tapsets/API-netfilter-arp-out.html +++ /dev/null @@ -1,49 +0,0 @@ -probe::netfilter.arp.out

Name

probe::netfilter.arp.out — - - Called for each outgoing ARP packet -

Synopsis

netfilter.arp.out 

Values

indev

- Address of net_device representing input device, 0 if unknown -

nf_accept

- Constant used to signify an 'accept' verdict -

ar_sha

- Ethernet+IP only (ar_pro==0x800): source hardware (MAC) address -

pf

- Protocol family -- always arp -

ar_sip

- Ethernet+IP only (ar_pro==0x800): source IP address -

nf_queue

- Constant used to signify a 'queue' verdict -

ar_op

- ARP opcode (command) -

nf_stolen

- Constant used to signify a 'stolen' verdict -

outdev_name

- Name of network device packet will be routed to (if known) -

nf_drop

- Constant used to signify a 'drop' verdict -

ar_hln

- Length of hardware address -

ar_pro

- Format of protocol address -

ar_pln

- Length of protocol address -

ar_tip

- Ethernet+IP only (ar_pro==0x800): target IP address -

nf_stop

- Constant used to signify a 'stop' verdict -

arphdr

- Address of ARP header -

length

- The length of the packet buffer contents, in bytes -

outdev

- Address of net_device representing output device, 0 if unknown -

ar_tha

- Ethernet+IP only (ar_pro==0x800): target hardware (MAC) address -

ar_data

- Address of ARP packet data region (after the header) -

nf_repeat

- Constant used to signify a 'repeat' verdict -

indev_name

- Name of network device packet was received on (if known) -

ar_hrd

- Format of hardware address -

diff --git a/tapsets/API-netfilter-bridge-forward.html b/tapsets/API-netfilter-bridge-forward.html deleted file mode 100644 index fac2f6f5..00000000 --- a/tapsets/API-netfilter-bridge-forward.html +++ /dev/null @@ -1,27 +0,0 @@ -probe::netfilter.bridge.forward

Name

probe::netfilter.bridge.forward — - Called on an incoming bridging packet destined for some other computer -

Synopsis

netfilter.bridge.forward 

Values

indev

- Address of net_device representing input device, 0 if unknown -

nf_accept

- Constant used to signify an 'accept' verdict -

pf

- Protocol family -- always bridge -

nf_queue

- Constant used to signify a 'queue' verdict -

nf_stolen

- Constant used to signify a 'stolen' verdict -

outdev_name

- Name of network device packet will be routed to (if known) -

nf_drop

- Constant used to signify a 'drop' verdict -

nf_stop

- Constant used to signify a 'stop' verdict -

length

- The length of the packet buffer contents, in bytes -

outdev

- Address of net_device representing output device, 0 if unknown -

nf_repeat

- Constant used to signify a 'repeat' verdict -

indev_name

- Name of network device packet was received on (if known) -

diff --git a/tapsets/API-netfilter-bridge-local-in.html b/tapsets/API-netfilter-bridge-local-in.html deleted file mode 100644 index b5e060c8..00000000 --- a/tapsets/API-netfilter-bridge-local-in.html +++ /dev/null @@ -1,27 +0,0 @@ -probe::netfilter.bridge.local_in

Name

probe::netfilter.bridge.local_in — - Called on a bridging packet destined for the local computer -

Synopsis

netfilter.bridge.local_in 

Values

indev

- Address of net_device representing input device, 0 if unknown -

nf_accept

- Constant used to signify an 'accept' verdict -

pf

- Protocol family -- always bridge -

nf_queue

- Constant used to signify a 'queue' verdict -

nf_stolen

- Constant used to signify a 'stolen' verdict -

outdev_name

- Name of network device packet will be routed to (if known) -

nf_drop

- Constant used to signify a 'drop' verdict -

nf_stop

- Constant used to signify a 'stop' verdict -

length

- The length of the packet buffer contents, in bytes -

outdev

- Address of net_device representing output device, 0 if unknown -

nf_repeat

- Constant used to signify a 'repeat' verdict -

indev_name

- Name of network device packet was received on (if known) -

diff --git a/tapsets/API-netfilter-bridge-local-out.html b/tapsets/API-netfilter-bridge-local-out.html deleted file mode 100644 index 57ff95d1..00000000 --- a/tapsets/API-netfilter-bridge-local-out.html +++ /dev/null @@ -1,27 +0,0 @@ -probe::netfilter.bridge.local_out

Name

probe::netfilter.bridge.local_out — - Called on a bridging packet coming from a local process -

Synopsis

netfilter.bridge.local_out 

Values

indev

- Address of net_device representing input device, 0 if unknown -

nf_accept

- Constant used to signify an 'accept' verdict -

pf

- Protocol family -- always bridge -

nf_queue

- Constant used to signify a 'queue' verdict -

nf_stolen

- Constant used to signify a 'stolen' verdict -

outdev_name

- Name of network device packet will be routed to (if known) -

nf_drop

- Constant used to signify a 'drop' verdict -

nf_stop

- Constant used to signify a 'stop' verdict -

length

- The length of the packet buffer contents, in bytes -

outdev

- Address of net_device representing output device, 0 if unknown -

nf_repeat

- Constant used to signify a 'repeat' verdict -

indev_name

- Name of network device packet was received on (if known) -

diff --git a/tapsets/API-netfilter-bridge-post-routing.html b/tapsets/API-netfilter-bridge-post-routing.html deleted file mode 100644 index bce4e7eb..00000000 --- a/tapsets/API-netfilter-bridge-post-routing.html +++ /dev/null @@ -1,27 +0,0 @@ -probe::netfilter.bridge.post_routing

Name

probe::netfilter.bridge.post_routing — - - Called before a bridging packet hits the wire -

Synopsis

netfilter.bridge.post_routing 

Values

indev

- Address of net_device representing input device, 0 if unknown -

nf_accept

- Constant used to signify an 'accept' verdict -

pf

- Protocol family -- always bridge -

nf_queue

- Constant used to signify a 'queue' verdict -

nf_stolen

- Constant used to signify a 'stolen' verdict -

outdev_name

- Name of network device packet will be routed to (if known) -

nf_drop

- Constant used to signify a 'drop' verdict -

nf_stop

- Constant used to signify a 'stop' verdict -

length

- The length of the packet buffer contents, in bytes -

outdev

- Address of net_device representing output device, 0 if unknown -

nf_repeat

- Constant used to signify a 'repeat' verdict -

indev_name

- Name of network device packet was received on (if known) -

diff --git a/tapsets/API-netfilter-bridge-pre-routing.html b/tapsets/API-netfilter-bridge-pre-routing.html deleted file mode 100644 index 1f751916..00000000 --- a/tapsets/API-netfilter-bridge-pre-routing.html +++ /dev/null @@ -1,27 +0,0 @@ -probe::netfilter.bridge.pre_routing

Name

probe::netfilter.bridge.pre_routing — - - Called before a bridging packet is routed -

Synopsis

netfilter.bridge.pre_routing 

Values

indev

- Address of net_device representing input device, 0 if unknown -

nf_accept

- Constant used to signify an 'accept' verdict -

pf

- Protocol family -- always bridge -

nf_queue

- Constant used to signify a 'queue' verdict -

nf_stolen

- Constant used to signify a 'stolen' verdict -

outdev_name

- Name of network device packet will be routed to (if known) -

nf_drop

- Constant used to signify a 'drop' verdict -

nf_stop

- Constant used to signify a 'stop' verdict -

length

- The length of the packet buffer contents, in bytes -

outdev

- Address of net_device representing output device, 0 if unknown -

nf_repeat

- Constant used to signify a 'repeat' verdict -

indev_name

- Name of network device packet was received on (if known) -

diff --git a/tapsets/API-netfilter-ip-forward.html b/tapsets/API-netfilter-ip-forward.html deleted file mode 100644 index 75032615..00000000 --- a/tapsets/API-netfilter-ip-forward.html +++ /dev/null @@ -1,57 +0,0 @@ -probe::netfilter.ip.forward

Name

probe::netfilter.ip.forward — - Called on an incoming IP packet addressed to some other computer -

Synopsis

netfilter.ip.forward 

Values

urg

- TCP URG flag (if protocol is TCP; ipv4 only) -

protocol

- Packet protocol from driver (ipv4 only) -

indev

- Address of net_device representing input device, 0 if unknown -

nf_accept

- Constant used to signify an 'accept' verdict -

pf

- Protocol family -- either ipv4 or ipv6 -

ipproto_tcp

- Constant used to signify that the packet protocol is TCP -

rst

- TCP RST flag (if protocol is TCP; ipv4 only) -

dport

- TCP or UDP destination port (ipv4 only) -

nf_queue

- Constant used to signify a 'queue' verdict -

nf_stolen

- Constant used to signify a 'stolen' verdict -

ipproto_udp

- Constant used to signify that the packet protocol is UDP -

outdev_name

- Name of network device packet will be routed to (if known) -

ack

- TCP ACK flag (if protocol is TCP; ipv4 only) -

fin

- TCP FIN flag (if protocol is TCP; ipv4 only) -

nf_drop

- Constant used to signify a 'drop' verdict -

psh

- TCP PSH flag (if protocol is TCP; ipv4 only) -

saddr

- A string representing the source IP address -

nf_stop

- Constant used to signify a 'stop' verdict -

length

- The length of the packet buffer contents, in bytes -

daddr

- A string representing the destination IP address -

outdev

- Address of net_device representing output device, 0 if unknown -

syn

- TCP SYN flag (if protocol is TCP; ipv4 only) -

sport

- TCP or UDP source port (ipv4 only) -

nf_repeat

- Constant used to signify a 'repeat' verdict -

indev_name

- Name of network device packet was received on (if known) -

family

- IP address family -

iphdr

- Address of IP header -

diff --git a/tapsets/API-netfilter-ip-local-in.html b/tapsets/API-netfilter-ip-local-in.html deleted file mode 100644 index dd247e52..00000000 --- a/tapsets/API-netfilter-ip-local-in.html +++ /dev/null @@ -1,57 +0,0 @@ -probe::netfilter.ip.local_in

Name

probe::netfilter.ip.local_in — - Called on an incoming IP packet addressed to the local computer -

Synopsis

netfilter.ip.local_in 

Values

urg

- TCP URG flag (if protocol is TCP; ipv4 only) -

protocol

- Packet protocol from driver (ipv4 only) -

indev

- Address of net_device representing input device, 0 if unknown -

nf_accept

- Constant used to signify an 'accept' verdict -

pf

- Protocol family -- either ipv4 or ipv6 -

ipproto_tcp

- Constant used to signify that the packet protocol is TCP -

rst

- TCP RST flag (if protocol is TCP; ipv4 only) -

dport

- TCP or UDP destination port (ipv4 only) -

nf_queue

- Constant used to signify a 'queue' verdict -

nf_stolen

- Constant used to signify a 'stolen' verdict -

ipproto_udp

- Constant used to signify that the packet protocol is UDP -

outdev_name

- Name of network device packet will be routed to (if known) -

ack

- TCP ACK flag (if protocol is TCP; ipv4 only) -

fin

- TCP FIN flag (if protocol is TCP; ipv4 only) -

nf_drop

- Constant used to signify a 'drop' verdict -

psh

- TCP PSH flag (if protocol is TCP; ipv4 only) -

saddr

- A string representing the source IP address -

nf_stop

- Constant used to signify a 'stop' verdict -

length

- The length of the packet buffer contents, in bytes -

daddr

- A string representing the destination IP address -

outdev

- Address of net_device representing output device, 0 if unknown -

syn

- TCP SYN flag (if protocol is TCP; ipv4 only) -

sport

- TCP or UDP source port (ipv4 only) -

nf_repeat

- Constant used to signify a 'repeat' verdict -

indev_name

- Name of network device packet was received on (if known) -

family

- IP address family -

iphdr

- Address of IP header -

diff --git a/tapsets/API-netfilter-ip-local-out.html b/tapsets/API-netfilter-ip-local-out.html deleted file mode 100644 index ad33a4b4..00000000 --- a/tapsets/API-netfilter-ip-local-out.html +++ /dev/null @@ -1,57 +0,0 @@ -probe::netfilter.ip.local_out

Name

probe::netfilter.ip.local_out — - Called on an outgoing IP packet -

Synopsis

netfilter.ip.local_out 

Values

urg

- TCP URG flag (if protocol is TCP; ipv4 only) -

protocol

- Packet protocol from driver (ipv4 only) -

indev

- Address of net_device representing input device, 0 if unknown -

nf_accept

- Constant used to signify an 'accept' verdict -

pf

- Protocol family -- either ipv4 or ipv6 -

ipproto_tcp

- Constant used to signify that the packet protocol is TCP -

rst

- TCP RST flag (if protocol is TCP; ipv4 only) -

dport

- TCP or UDP destination port (ipv4 only) -

nf_queue

- Constant used to signify a 'queue' verdict -

nf_stolen

- Constant used to signify a 'stolen' verdict -

ipproto_udp

- Constant used to signify that the packet protocol is UDP -

outdev_name

- Name of network device packet will be routed to (if known) -

ack

- TCP ACK flag (if protocol is TCP; ipv4 only) -

fin

- TCP FIN flag (if protocol is TCP; ipv4 only) -

nf_drop

- Constant used to signify a 'drop' verdict -

psh

- TCP PSH flag (if protocol is TCP; ipv4 only) -

saddr

- A string representing the source IP address -

nf_stop

- Constant used to signify a 'stop' verdict -

length

- The length of the packet buffer contents, in bytes -

daddr

- A string representing the destination IP address -

outdev

- Address of net_device representing output device, 0 if unknown -

syn

- TCP SYN flag (if protocol is TCP; ipv4 only) -

sport

- TCP or UDP source port (ipv4 only) -

nf_repeat

- Constant used to signify a 'repeat' verdict -

indev_name

- Name of network device packet was received on (if known) -

family

- IP address family -

iphdr

- Address of IP header -

diff --git a/tapsets/API-netfilter-ip-post-routing.html b/tapsets/API-netfilter-ip-post-routing.html deleted file mode 100644 index 28c13940..00000000 --- a/tapsets/API-netfilter-ip-post-routing.html +++ /dev/null @@ -1,57 +0,0 @@ -probe::netfilter.ip.post_routing

Name

probe::netfilter.ip.post_routing — - Called immediately before an outgoing IP packet leaves the computer -

Synopsis

netfilter.ip.post_routing 

Values

urg

- TCP URG flag (if protocol is TCP; ipv4 only) -

protocol

- Packet protocol from driver (ipv4 only) -

indev

- Address of net_device representing input device, 0 if unknown -

nf_accept

- Constant used to signify an 'accept' verdict -

pf

- Protocol family -- either ipv4 or ipv6 -

ipproto_tcp

- Constant used to signify that the packet protocol is TCP -

rst

- TCP RST flag (if protocol is TCP; ipv4 only) -

dport

- TCP or UDP destination port (ipv4 only) -

nf_queue

- Constant used to signify a 'queue' verdict -

nf_stolen

- Constant used to signify a 'stolen' verdict -

ipproto_udp

- Constant used to signify that the packet protocol is UDP -

outdev_name

- Name of network device packet will be routed to (if known) -

ack

- TCP ACK flag (if protocol is TCP; ipv4 only) -

fin

- TCP FIN flag (if protocol is TCP; ipv4 only) -

nf_drop

- Constant used to signify a 'drop' verdict -

psh

- TCP PSH flag (if protocol is TCP; ipv4 only) -

saddr

- A string representing the source IP address -

nf_stop

- Constant used to signify a 'stop' verdict -

length

- The length of the packet buffer contents, in bytes -

daddr

- A string representing the destination IP address -

outdev

- Address of net_device representing output device, 0 if unknown -

syn

- TCP SYN flag (if protocol is TCP; ipv4 only) -

sport

- TCP or UDP source port (ipv4 only) -

nf_repeat

- Constant used to signify a 'repeat' verdict -

indev_name

- Name of network device packet was received on (if known) -

family

- IP address family -

iphdr

- Address of IP header -

diff --git a/tapsets/API-netfilter-ip-pre-routing.html b/tapsets/API-netfilter-ip-pre-routing.html deleted file mode 100644 index 22626ead..00000000 --- a/tapsets/API-netfilter-ip-pre-routing.html +++ /dev/null @@ -1,57 +0,0 @@ -probe::netfilter.ip.pre_routing

Name

probe::netfilter.ip.pre_routing — - Called before an IP packet is routed -

Synopsis

netfilter.ip.pre_routing 

Values

urg

- TCP URG flag (if protocol is TCP; ipv4 only) -

protocol

- Packet protocol from driver (ipv4 only) -

indev

- Address of net_device representing input device, 0 if unknown -

nf_accept

- Constant used to signify an 'accept' verdict -

pf

- Protocol family - either 'ipv4' or 'ipv6' -

ipproto_tcp

- Constant used to signify that the packet protocol is TCP -

rst

- TCP RST flag (if protocol is TCP; ipv4 only) -

dport

- TCP or UDP destination port (ipv4 only) -

nf_queue

- Constant used to signify a 'queue' verdict -

nf_stolen

- Constant used to signify a 'stolen' verdict -

ipproto_udp

- Constant used to signify that the packet protocol is UDP -

outdev_name

- Name of network device packet will be routed to (if known) -

ack

- TCP ACK flag (if protocol is TCP; ipv4 only) -

fin

- TCP FIN flag (if protocol is TCP; ipv4 only) -

nf_drop

- Constant used to signify a 'drop' verdict -

psh

- TCP PSH flag (if protocol is TCP; ipv4 only) -

saddr

- A string representing the source IP address -

nf_stop

- Constant used to signify a 'stop' verdict -

length

- The length of the packet buffer contents, in bytes -

daddr

- A string representing the destination IP address -

outdev

- Address of net_device representing output device, 0 if unknown -

syn

- TCP SYN flag (if protocol is TCP; ipv4 only) -

sport

- TCP or UDP source port (ipv4 only) -

indev_name

- Name of network device packet was received on (if known) -

nf_repeat

- Constant used to signify a 'repeat' verdict -

iphdr

- Address of IP header -

family

- IP address family -

diff --git a/tapsets/API-nfs-aop-readpage.html b/tapsets/API-nfs-aop-readpage.html deleted file mode 100644 index 2d465fcd..00000000 --- a/tapsets/API-nfs-aop-readpage.html +++ /dev/null @@ -1,27 +0,0 @@ -probe::nfs.aop.readpage

Name

probe::nfs.aop.readpage — - NFS client synchronously reading a page -

Synopsis

nfs.aop.readpage 

Values

i_size

- file length in bytes -

dev

- device identifier -

rsize

- read size (in bytes) -

sb_flag

- super block flags -

file

- file argument -

page_index

- offset within mapping, can used a page identifier - and position identifier in the page frame -

__page

- the address of page -

size

- number of pages to be read in this execution -

i_flag

- file flags -

ino

- inode number -

Description

- Read the page over, only fires when a previous async - read operation failed -

diff --git a/tapsets/API-nfs-aop-readpages.html b/tapsets/API-nfs-aop-readpages.html deleted file mode 100644 index e84205fb..00000000 --- a/tapsets/API-nfs-aop-readpages.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::nfs.aop.readpages

Name

probe::nfs.aop.readpages — - NFS client reading multiple pages -

Synopsis

nfs.aop.readpages 

Values

dev

- device identifier -

rsize

- read size (in bytes) -

file

- filp argument -

size

- number of pages attempted to read in this execution -

nr_pages

- number of pages attempted to read in this execution -

rpages

- read size (in pages) -

ino

- inode number -

Description

- Fires when in readahead way, read several pages once -

diff --git a/tapsets/API-nfs-aop-release-page.html b/tapsets/API-nfs-aop-release-page.html deleted file mode 100644 index 2d288de0..00000000 --- a/tapsets/API-nfs-aop-release-page.html +++ /dev/null @@ -1,16 +0,0 @@ -probe::nfs.aop.release_page

Name

probe::nfs.aop.release_page — - NFS client releasing page -

Synopsis

nfs.aop.release_page 

Values

dev

- device identifier -

page_index

- offset within mapping, can used a page identifier - and position identifier in the page frame -

__page

- the address of page -

size

- release pages -

ino

- inode number -

Description

- Fires when do a release operation on NFS. -

diff --git a/tapsets/API-nfs-aop-set-page-dirty.html b/tapsets/API-nfs-aop-set-page-dirty.html deleted file mode 100644 index 97c114ee..00000000 --- a/tapsets/API-nfs-aop-set-page-dirty.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::nfs.aop.set_page_dirty

Name

probe::nfs.aop.set_page_dirty — - NFS client marking page as dirty -

Synopsis

nfs.aop.set_page_dirty 

Values

__page

- the address of page -

page_flag

- page flags -

Description

- This probe attaches to the generic __set_page_dirty_nobuffers function. - Thus, this probe is going to fire on many other file systems in - addition to the NFS client. -

diff --git a/tapsets/API-nfs-aop-write-begin.html b/tapsets/API-nfs-aop-write-begin.html deleted file mode 100644 index 71b1407a..00000000 --- a/tapsets/API-nfs-aop-write-begin.html +++ /dev/null @@ -1,25 +0,0 @@ -probe::nfs.aop.write_begin

Name

probe::nfs.aop.write_begin — - NFS client begin to write data -

Synopsis

nfs.aop.write_begin 

Values

dev

- device identifier -

page_index

- offset within mapping, can used a page identifier - and position identifier in the page frame -

__page

- the address of page -

size

- write bytes -

to

- end address of this write operation -

ino

- inode number -

offset

- start address of this write operation -

Description

- Occurs when write operation occurs on nfs. It prepare a page for writing, - look for a request corresponding to the page. If there - is one, and it belongs to another file, it flush it out - before it tries to copy anything into the page. - Also do the same if it finds a request from an existing - dropped page -

diff --git a/tapsets/API-nfs-aop-write-end.html b/tapsets/API-nfs-aop-write-end.html deleted file mode 100644 index 8c35cb01..00000000 --- a/tapsets/API-nfs-aop-write-end.html +++ /dev/null @@ -1,29 +0,0 @@ -probe::nfs.aop.write_end

Name

probe::nfs.aop.write_end — - NFS client complete writing data -

Synopsis

nfs.aop.write_end 

Values

i_size

- file length in bytes -

dev

- device identifier -

sb_flag

- super block flags -

page_index

- offset within mapping, can used a page identifier and position identifier in the page frame -

__page

- the address of page -

size

- write bytes -

i_flag

- file flags -

to

- end address of this write operation -

ino

- inode number -

offset

- start address of this write operation -

Description

- Fires when do a write operation on nfs, - often after prepare_write -

- - Update and possibly write a cached page of an NFS file. -

diff --git a/tapsets/API-nfs-aop-writepage.html b/tapsets/API-nfs-aop-writepage.html deleted file mode 100644 index ae3d47a6..00000000 --- a/tapsets/API-nfs-aop-writepage.html +++ /dev/null @@ -1,33 +0,0 @@ -probe::nfs.aop.writepage

Name

probe::nfs.aop.writepage — - NFS client writing a mapped page to the NFS server -

Synopsis

nfs.aop.writepage 

Values

for_reclaim

- a flag of writeback_control, - indicates if it's invoked from the page allocator -

i_size

- file length in bytes -

dev

- device identifier -

sb_flag

- super block flags -

page_index

- offset within mapping, - can used a page identifier and position identifier in the page frame -

__page

- the address of page -

size

- number of pages to be written in this execution -

for_kupdate

- a flag of writeback_control, - indicates if it's a kupdate writeback -

wsize

- write size -

i_flag

- file flags -

i_state

- inode state flags -

ino

- inode number -

Description

- The priority of wb is decided by the flags - for_reclaim and for_kupdate. -

diff --git a/tapsets/API-nfs-aop-writepages.html b/tapsets/API-nfs-aop-writepages.html deleted file mode 100644 index ef50b93b..00000000 --- a/tapsets/API-nfs-aop-writepages.html +++ /dev/null @@ -1,24 +0,0 @@ -probe::nfs.aop.writepages

Name

probe::nfs.aop.writepages — - NFS client writing several dirty pages to the NFS server -

Synopsis

nfs.aop.writepages 

Values

for_reclaim

- a flag of writeback_control, - indicates if it's invoked from the page allocator -

dev

- device identifier -

wpages

- write size (in pages) -

size

- number of pages attempted to be written in this execution -

for_kupdate

- a flag of writeback_control, - indicates if it's a kupdate writeback -

wsize

- write size -

nr_to_write

- number of pages attempted to be written in this execution -

ino

- inode number -

Description

- The priority of wb is decided by the flags - for_reclaim and for_kupdate. -

diff --git a/tapsets/API-nfs-fop-aio-read.html b/tapsets/API-nfs-fop-aio-read.html deleted file mode 100644 index b8ecaa89..00000000 --- a/tapsets/API-nfs-fop-aio-read.html +++ /dev/null @@ -1,25 +0,0 @@ -probe::nfs.fop.aio_read

Name

probe::nfs.fop.aio_read — - NFS client aio_read file operation -

Synopsis

nfs.fop.aio_read 

Values

attrtimeo

- how long the cached information is assumed to be valid. - We need to revalidate the cached attrs for this inode - if jiffies - read_cache_jiffies > attrtimeo. -

cache_valid

- cache related bit mask flag -

count

- read bytes -

parent_name

- parent dir name -

dev

- device identifier -

buf

- the address of buf in user space -

cache_time

- when we started read-caching this inode -

file_name

- file name -

pos

- current position of file -

ino

- inode number -

diff --git a/tapsets/API-nfs-fop-aio-write.html b/tapsets/API-nfs-fop-aio-write.html deleted file mode 100644 index 3fe9bf85..00000000 --- a/tapsets/API-nfs-fop-aio-write.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::nfs.fop.aio_write

Name

probe::nfs.fop.aio_write — - NFS client aio_write file operation -

Synopsis

nfs.fop.aio_write 

Values

count

- read bytes -

parent_name

- parent dir name -

dev

- device identifier -

buf

- the address of buf in user space -

file_name

- file name -

pos

- offset of the file -

ino

- inode number -

diff --git a/tapsets/API-nfs-fop-check-flags.html b/tapsets/API-nfs-fop-check-flags.html deleted file mode 100644 index eb63b4d7..00000000 --- a/tapsets/API-nfs-fop-check-flags.html +++ /dev/null @@ -1,5 +0,0 @@ -probe::nfs.fop.check_flags

Name

probe::nfs.fop.check_flags — - NFS client checking flag operation -

Synopsis

nfs.fop.check_flags 

Values

flag

- file flag -

diff --git a/tapsets/API-nfs-fop-flush.html b/tapsets/API-nfs-fop-flush.html deleted file mode 100644 index 64cfe22b..00000000 --- a/tapsets/API-nfs-fop-flush.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::nfs.fop.flush

Name

probe::nfs.fop.flush — - NFS client flush file operation -

Synopsis

nfs.fop.flush 

Values

dev

- device identifier -

mode

- file mode -

ndirty

- number of dirty page -

ino

- inode number -

diff --git a/tapsets/API-nfs-fop-fsync.html b/tapsets/API-nfs-fop-fsync.html deleted file mode 100644 index ce621e6f..00000000 --- a/tapsets/API-nfs-fop-fsync.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::nfs.fop.fsync

Name

probe::nfs.fop.fsync — - NFS client fsync operation -

Synopsis

nfs.fop.fsync 

Values

dev

- device identifier -

ndirty

- number of dirty pages -

ino

- inode number -

diff --git a/tapsets/API-nfs-fop-llseek.html b/tapsets/API-nfs-fop-llseek.html deleted file mode 100644 index df87906c..00000000 --- a/tapsets/API-nfs-fop-llseek.html +++ /dev/null @@ -1,13 +0,0 @@ -probe::nfs.fop.llseek

Name

probe::nfs.fop.llseek — - NFS client llseek operation -

Synopsis

nfs.fop.llseek 

Values

whence_str

- symbolic string representation of the position to seek from -

whence

- the position to seek from -

dev

- device identifier -

ino

- inode number -

offset

- the offset of the file will be repositioned -

diff --git a/tapsets/API-nfs-fop-lock.html b/tapsets/API-nfs-fop-lock.html deleted file mode 100644 index 04acc24f..00000000 --- a/tapsets/API-nfs-fop-lock.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::nfs.fop.lock

Name

probe::nfs.fop.lock — - NFS client file lock operation -

Synopsis

nfs.fop.lock 

Values

cmd

- cmd arguments -

dev

- device identifier -

fl_type

- lock type -

fl_end

- ending offset of locked region -

fl_flag

- lock flags -

i_mode

- file type and access rights -

fl_start

- starting offset of locked region -

ino

- inode number -

diff --git a/tapsets/API-nfs-fop-mmap.html b/tapsets/API-nfs-fop-mmap.html deleted file mode 100644 index 24de58a4..00000000 --- a/tapsets/API-nfs-fop-mmap.html +++ /dev/null @@ -1,27 +0,0 @@ -probe::nfs.fop.mmap

Name

probe::nfs.fop.mmap — - NFS client mmap operation -

Synopsis

nfs.fop.mmap 

Values

attrtimeo

- how long the cached information is assumed to be valid. - We need to revalidate the cached attrs for this inode - if jiffies - read_cache_jiffies > attrtimeo. -

cache_valid

- cache related bit mask flag -

parent_name

- parent dir name -

vm_flag

- vm flags -

vm_start

- start address within vm_mm -

dev

- device identifier -

buf

- the address of buf in user space -

vm_end

- the first byte after end address within vm_mm -

cache_time

- when we started read-caching this inode -

file_name

- file name -

ino

- inode number -

diff --git a/tapsets/API-nfs-fop-open.html b/tapsets/API-nfs-fop-open.html deleted file mode 100644 index 4c71b5ed..00000000 --- a/tapsets/API-nfs-fop-open.html +++ /dev/null @@ -1,13 +0,0 @@ -probe::nfs.fop.open

Name

probe::nfs.fop.open — - NFS client file open operation -

Synopsis

nfs.fop.open 

Values

i_size

- file length in bytes -

dev

- device identifier -

flag

- file flag -

file_name

- file name -

ino

- inode number -

diff --git a/tapsets/API-nfs-fop-read.html b/tapsets/API-nfs-fop-read.html deleted file mode 100644 index 97aa32f3..00000000 --- a/tapsets/API-nfs-fop-read.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::nfs.fop.read

Name

probe::nfs.fop.read — - NFS client read operation -

Synopsis

nfs.fop.read 

Values

devname

- block device name -

Description

- SystemTap uses the vfs.do_sync_read probe to implement this probe - and as a result will get operations other than the NFS client read - operations. -

diff --git a/tapsets/API-nfs-fop-release.html b/tapsets/API-nfs-fop-release.html deleted file mode 100644 index 5cbed0d5..00000000 --- a/tapsets/API-nfs-fop-release.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::nfs.fop.release

Name

probe::nfs.fop.release — - NFS client release page operation -

Synopsis

nfs.fop.release 

Values

dev

- device identifier -

mode

- file mode -

ino

- inode number -

diff --git a/tapsets/API-nfs-fop-sendfile.html b/tapsets/API-nfs-fop-sendfile.html deleted file mode 100644 index e4973301..00000000 --- a/tapsets/API-nfs-fop-sendfile.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::nfs.fop.sendfile

Name

probe::nfs.fop.sendfile — - NFS client send file operation -

Synopsis

nfs.fop.sendfile 

Values

attrtimeo

- how long the cached information is assumed to be valid. - We need to revalidate the cached attrs for this inode - if jiffies - read_cache_jiffies > attrtimeo. -

cache_valid

- cache related bit mask flag -

count

- read bytes -

ppos

- current position of file -

dev

- device identifier -

cache_time

- when we started read-caching this inode -

ino

- inode number -

diff --git a/tapsets/API-nfs-fop-write.html b/tapsets/API-nfs-fop-write.html deleted file mode 100644 index 7f21d8e8..00000000 --- a/tapsets/API-nfs-fop-write.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::nfs.fop.write

Name

probe::nfs.fop.write — - NFS client write operation -

Synopsis

nfs.fop.write 

Values

devname

- block device name -

Description

- SystemTap uses the vfs.do_sync_write probe to implement this probe - and as a result will get operations other than the NFS client write - operations. -

diff --git a/tapsets/API-nfs-proc-commit-done.html b/tapsets/API-nfs-proc-commit-done.html deleted file mode 100644 index 22147824..00000000 --- a/tapsets/API-nfs-proc-commit-done.html +++ /dev/null @@ -1,20 +0,0 @@ -probe::nfs.proc.commit_done

Name

probe::nfs.proc.commit_done — - NFS client response to a commit RPC task -

Synopsis

nfs.proc.commit_done 

Values

count

- number of bytes committed -

status

- result of last operation -

version

- NFS version -

prot

- transfer protocol -

valid

- fattr->valid ,indicates which fields are valid -

timestamp

- V4 timestamp, which is used for lease renewal -

server_ip

- IP address of server -

Description

- Fires when a reply to a commit RPC task is received - or some commit operation error occur (timeout or socket shutdown). -

diff --git a/tapsets/API-nfs-proc-commit-setup.html b/tapsets/API-nfs-proc-commit-setup.html deleted file mode 100644 index fb8d68a9..00000000 --- a/tapsets/API-nfs-proc-commit-setup.html +++ /dev/null @@ -1,25 +0,0 @@ -probe::nfs.proc.commit_setup

Name

probe::nfs.proc.commit_setup — - NFS client setting up a commit RPC task -

Synopsis

nfs.proc.commit_setup 

Values

count

- bytes in this commit -

bitmask1

- V4 bitmask representing the set - of attributes supported on this filesystem -

version

- NFS version -

bitmask0

- V4 bitmask representing the set - of attributes supported on this filesystem -

prot

- transfer protocol -

size

- bytes in this commit -

offset

- the file offset -

server_ip

- IP address of server -

Description

- The commit_setup function is used to setup a commit RPC task. - Is is not doing the actual commit operation. - It is does not exist in NFSv2. -

diff --git a/tapsets/API-nfs-proc-commit.html b/tapsets/API-nfs-proc-commit.html deleted file mode 100644 index c1875170..00000000 --- a/tapsets/API-nfs-proc-commit.html +++ /dev/null @@ -1,29 +0,0 @@ -probe::nfs.proc.commit

Name

probe::nfs.proc.commit — - NFS client committing data on server -

Synopsis

nfs.proc.commit 

Values

bitmask1

- V4 bitmask representing the set - of attributes supported on this filesystem -

version

- NFS version -

bitmask0

- V4 bitmask representing the set - of attributes supported on this filesystem -

prot

- transfer protocol -

size

- read bytes in this execution -

offset

- the file offset -

server_ip

- IP address of server -

Description

- All the nfs.proc.commit kernel functions were removed in kernel - commit 200baa in December 2006, so these probes do not exist on Linux - 2.6.21 and newer kernels. -

- - Fires when client writes the buffered data to disk. - The buffered data is asynchronously written by client earlier. - The commit function works in sync way. - This probe point does not exist in NFSv2. -

diff --git a/tapsets/API-nfs-proc-create.html b/tapsets/API-nfs-proc-create.html deleted file mode 100644 index e6b554a5..00000000 --- a/tapsets/API-nfs-proc-create.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::nfs.proc.create

Name

probe::nfs.proc.create — - NFS client creating file on server -

Synopsis

nfs.proc.create 

Values

version

- NFS version (the function is used for all NFS version) -

flag

- indicates create mode (only for NFSv3 and NFSv4) -

prot

- transfer protocol -

filelen

- length of file name -

filename

- file name -

fh

- file handler of parent dir -

server_ip

- IP address of server -

diff --git a/tapsets/API-nfs-proc-handle-exception.html b/tapsets/API-nfs-proc-handle-exception.html deleted file mode 100644 index 080f87aa..00000000 --- a/tapsets/API-nfs-proc-handle-exception.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::nfs.proc.handle_exception

Name

probe::nfs.proc.handle_exception — - NFS client handling an NFSv4 exception -

Synopsis

nfs.proc.handle_exception 

Values

errorcode

- indicates the type of error -

Description

- This is the error handling routine for processes for NFSv4. -

diff --git a/tapsets/API-nfs-proc-lookup.html b/tapsets/API-nfs-proc-lookup.html deleted file mode 100644 index cb98bf7d..00000000 --- a/tapsets/API-nfs-proc-lookup.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::nfs.proc.lookup

Name

probe::nfs.proc.lookup — - NFS client opens/searches a file on server -

Synopsis

nfs.proc.lookup 

Values

name_len

- the length of file name -

filename

- the name of file which client opens/searches on server -

bitmask1

- V4 bitmask representing the set - of attributes supported on this filesystem -

version

- NFS version -

bitmask0

- V4 bitmask representing the set - of attributes supported on this filesystem -

prot

- transfer protocol -

server_ip

- IP address of server -

diff --git a/tapsets/API-nfs-proc-open.html b/tapsets/API-nfs-proc-open.html deleted file mode 100644 index 81531996..00000000 --- a/tapsets/API-nfs-proc-open.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::nfs.proc.open

Name

probe::nfs.proc.open — - NFS client allocates file read/write context information -

Synopsis

nfs.proc.open 

Values

mode

- file mode -

version

- NFS version (the function is used for all NFS version) -

flag

- file flag -

prot

- transfer protocol -

filename

- file name -

server_ip

- IP address of server -

Description

- Allocate file read/write context information -

diff --git a/tapsets/API-nfs-proc-read-done.html b/tapsets/API-nfs-proc-read-done.html deleted file mode 100644 index 0b9f9674..00000000 --- a/tapsets/API-nfs-proc-read-done.html +++ /dev/null @@ -1,18 +0,0 @@ -probe::nfs.proc.read_done

Name

probe::nfs.proc.read_done — - NFS client response to a read RPC task -

Synopsis

nfs.proc.read_done 

Values

count

- number of bytes read -

status

- result of last operation -

version

- NFS version -

prot

- transfer protocol -

timestamp

- V4 timestamp, which is used for lease renewal -

server_ip

- IP address of server -

Description

- Fires when a reply to a read RPC task is received or some read error occurs - (timeout or socket shutdown). -

diff --git a/tapsets/API-nfs-proc-read-setup.html b/tapsets/API-nfs-proc-read-setup.html deleted file mode 100644 index c28ca628..00000000 --- a/tapsets/API-nfs-proc-read-setup.html +++ /dev/null @@ -1,18 +0,0 @@ -probe::nfs.proc.read_setup

Name

probe::nfs.proc.read_setup — - NFS client setting up a read RPC task -

Synopsis

nfs.proc.read_setup 

Values

count

- read bytes in this execution -

version

- NFS version -

prot

- transfer protocol -

size

- read bytes in this execution -

offset

- the file offset -

server_ip

- IP address of server -

Description

- The read_setup function is used to setup a read RPC task. - It is not doing the actual read operation. -

diff --git a/tapsets/API-nfs-proc-read.html b/tapsets/API-nfs-proc-read.html deleted file mode 100644 index 41da5a19..00000000 --- a/tapsets/API-nfs-proc-read.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::nfs.proc.read

Name

probe::nfs.proc.read — - NFS client synchronously reads file from server -

Synopsis

nfs.proc.read 

Values

count

- read bytes in this execution -

flags

- used to set task->tk_flags in rpc_init_task function -

version

- NFS version -

prot

- transfer protocol -

offset

- the file offset -

server_ip

- IP address of server -

Description

- All the nfs.proc.read kernel functions were removed in kernel commit - 8e0969 in December 2006, so these probes do not exist on Linux - 2.6.21 and newer kernels. -

diff --git a/tapsets/API-nfs-proc-release.html b/tapsets/API-nfs-proc-release.html deleted file mode 100644 index 8e9e689a..00000000 --- a/tapsets/API-nfs-proc-release.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::nfs.proc.release

Name

probe::nfs.proc.release — - NFS client releases file read/write context information -

Synopsis

nfs.proc.release 

Values

mode

- file mode -

version

- NFS version (the function is used for all NFS version) -

flag

- file flag -

prot

- transfer protocol -

filename

- file name -

server_ip

- IP address of server -

Description

- Release file read/write context information -

diff --git a/tapsets/API-nfs-proc-remove.html b/tapsets/API-nfs-proc-remove.html deleted file mode 100644 index 9c1f9c8a..00000000 --- a/tapsets/API-nfs-proc-remove.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::nfs.proc.remove

Name

probe::nfs.proc.remove — - NFS client removes a file on server -

Synopsis

nfs.proc.remove 

Values

version

- NFS version (the function is used for all NFS version) -

prot

- transfer protocol -

filelen

- length of file name -

filename

- file name -

fh

- file handler of parent dir -

server_ip

- IP address of server -

diff --git a/tapsets/API-nfs-proc-rename.html b/tapsets/API-nfs-proc-rename.html deleted file mode 100644 index 5c263179..00000000 --- a/tapsets/API-nfs-proc-rename.html +++ /dev/null @@ -1,21 +0,0 @@ -probe::nfs.proc.rename

Name

probe::nfs.proc.rename — - NFS client renames a file on server -

Synopsis

nfs.proc.rename 

Values

new_fh

- file handler of new parent dir -

old_filelen

- length of old file name -

version

- NFS version (the function is used for all NFS version) -

prot

- transfer protocol -

new_filelen

- length of new file name -

old_fh

- file handler of old parent dir -

new_name

- new file name -

old_name

- old file name -

server_ip

- IP address of server -

diff --git a/tapsets/API-nfs-proc-write-done.html b/tapsets/API-nfs-proc-write-done.html deleted file mode 100644 index 28faf59e..00000000 --- a/tapsets/API-nfs-proc-write-done.html +++ /dev/null @@ -1,20 +0,0 @@ -probe::nfs.proc.write_done

Name

probe::nfs.proc.write_done — - NFS client response to a write RPC task -

Synopsis

nfs.proc.write_done 

Values

count

- number of bytes written -

status

- result of last operation -

version

- NFS version -

prot

- transfer protocol -

valid

- fattr->valid ,indicates which fields are valid -

timestamp

- V4 timestamp, which is used for lease renewal -

server_ip

- IP address of server -

Description

- Fires when a reply to a write RPC task is received or some write error occurs - (timeout or socket shutdown). -

diff --git a/tapsets/API-nfs-proc-write-setup.html b/tapsets/API-nfs-proc-write-setup.html deleted file mode 100644 index 34fd8a3a..00000000 --- a/tapsets/API-nfs-proc-write-setup.html +++ /dev/null @@ -1,28 +0,0 @@ -probe::nfs.proc.write_setup

Name

probe::nfs.proc.write_setup — - NFS client setting up a write RPC task -

Synopsis

nfs.proc.write_setup 

Values

count

- bytes written in this execution -

bitmask1

- V4 bitmask representing the set - of attributes supported on this filesystem -

how

- used to set args.stable. The stable value could be: - NFS_UNSTABLE,NFS_DATA_SYNC,NFS_FILE_SYNC - (in nfs.proc3.write_setup and nfs.proc4.write_setup) -

version

- NFS version -

bitmask0

- V4 bitmask representing the set - of attributes supported on this filesystem -

prot

- transfer protocol -

size

- bytes written in this execution -

offset

- the file offset -

server_ip

- IP address of server -

Description

- The write_setup function is used to setup a write RPC task. - It is not doing the actual write operation. -

diff --git a/tapsets/API-nfs-proc-write.html b/tapsets/API-nfs-proc-write.html deleted file mode 100644 index 60420a65..00000000 --- a/tapsets/API-nfs-proc-write.html +++ /dev/null @@ -1,25 +0,0 @@ -probe::nfs.proc.write

Name

probe::nfs.proc.write — - NFS client synchronously writes file to server -

Synopsis

nfs.proc.write 

Values

flags

- used to set task->tk_flags in rpc_init_task function -

bitmask1

- V4 bitmask representing the set - of attributes supported on this filesystem -

version

- NFS version -

bitmask0

- V4 bitmask representing the set - of attributes supported on this filesystem -

prot

- transfer protocol -

size

- read bytes in this execution -

server_ip

- IP address of server -

offset

- the file offset -

Description

- All the nfs.proc.write kernel functions were removed in kernel commit - 200baa in December 2006, so these probes do not exist on Linux - 2.6.21 and newer kernels. -

diff --git a/tapsets/API-nfsd-close.html b/tapsets/API-nfsd-close.html deleted file mode 100644 index 8196ad60..00000000 --- a/tapsets/API-nfsd-close.html +++ /dev/null @@ -1,5 +0,0 @@ -probe::nfsd.close

Name

probe::nfsd.close — - NFS server closing a file for client -

Synopsis

nfsd.close 

Values

filename

- file name -

diff --git a/tapsets/API-nfsd-commit.html b/tapsets/API-nfsd-commit.html deleted file mode 100644 index 72fe8fb4..00000000 --- a/tapsets/API-nfsd-commit.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::nfsd.commit

Name

probe::nfsd.commit — - NFS server committing all pending writes to stable storage -

Synopsis

nfsd.commit 

Values

count

- read bytes -

flag

- indicates whether this execution is a sync operation -

size

- read bytes -

fh

- file handle (the first part is the length of the file handle) -

client_ip

- the ip address of client -

offset

- the offset of file -

diff --git a/tapsets/API-nfsd-create.html b/tapsets/API-nfsd-create.html deleted file mode 100644 index 6fdef3ae..00000000 --- a/tapsets/API-nfsd-create.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::nfsd.create

Name

probe::nfsd.create — - NFS server creating a file(regular,dir,device,fifo) for client -

Synopsis

nfsd.create 

Values

iap_mode

- file access mode -

iap_valid

- Attribute flags -

filelen

- the length of file name -

filename

- file name -

fh

- file handle (the first part is the length of the file handle) -

client_ip

- the ip address of client -

type

- file type(regular,dir,device,fifo ...) -

Description

- Sometimes nfsd will call nfsd_create_v3 instead of this this probe point. -

diff --git a/tapsets/API-nfsd-createv3.html b/tapsets/API-nfsd-createv3.html deleted file mode 100644 index 2dece99c..00000000 --- a/tapsets/API-nfsd-createv3.html +++ /dev/null @@ -1,24 +0,0 @@ -probe::nfsd.createv3

Name

probe::nfsd.createv3 — - NFS server creating a regular file or set file attributes for client -

Synopsis

nfsd.createv3 

Values

iap_mode

- file access mode -

createmode

- create mode .The possible values could be: NFS3_CREATE_EXCLUSIVE, NFS3_CREATE_UNCHECKED, or NFS3_CREATE_GUARDED -

verifier

- file attributes (atime,mtime,mode). It's used to reset file attributes for CREATE_EXCLUSIVE -

iap_valid

- Attribute flags -

truncp

- trunp arguments, indicates if the file shouldbe truncate -

filelen

- the length of file name -

filename

- file name -

fh

- file handle (the first part is the length of the file handle) -

client_ip

- the ip address of client -

Description

- This probepoints is only called by nfsd3_proc_create and - nfsd4_open when op_claim_type is NFS4_OPEN_CLAIM_NULL. -

diff --git a/tapsets/API-nfsd-dispatch.html b/tapsets/API-nfsd-dispatch.html deleted file mode 100644 index 320a20ec..00000000 --- a/tapsets/API-nfsd-dispatch.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::nfsd.dispatch

Name

probe::nfsd.dispatch — - NFS server receives an operation from client -

Synopsis

nfsd.dispatch 

Values

proto

- transfer protocol -

proc

- procedure number -

prog

- program number -

version

- nfs version -

client_ip

- the ip address of client -

xid

- transmission id -

diff --git a/tapsets/API-nfsd-lookup.html b/tapsets/API-nfsd-lookup.html deleted file mode 100644 index 929b82a4..00000000 --- a/tapsets/API-nfsd-lookup.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::nfsd.lookup

Name

probe::nfsd.lookup — - NFS server opening or searching file for a file for client -

Synopsis

nfsd.lookup 

Values

filelen

- the length of file name -

filename

- file name -

fh

- file handle of parent dir(the first part is the length of the file handle) -

client_ip

- the ip address of client -

diff --git a/tapsets/API-nfsd-open.html b/tapsets/API-nfsd-open.html deleted file mode 100644 index bb6aa713..00000000 --- a/tapsets/API-nfsd-open.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::nfsd.open

Name

probe::nfsd.open — - NFS server opening a file for client -

Synopsis

nfsd.open 

Values

access

- indicates the type of open (read/write/commit/readdir...) -

fh

- file handle (the first part is the length of the file handle) -

client_ip

- the ip address of client -

type

- type of file (regular file or dir) -

diff --git a/tapsets/API-nfsd-proc-commit.html b/tapsets/API-nfsd-proc-commit.html deleted file mode 100644 index 258c587e..00000000 --- a/tapsets/API-nfsd-proc-commit.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::nfsd.proc.commit

Name

probe::nfsd.proc.commit — - NFS server performing a commit operation for client -

Synopsis

nfsd.proc.commit 

Values

count

- read bytes -

proto

- transfer protocol -

version

- nfs version -

size

- read bytes -

fh

- file handle (the first part is the length of the file handle) -

client_ip

- the ip address of client -

offset

- the offset of file -

diff --git a/tapsets/API-nfsd-proc-create.html b/tapsets/API-nfsd-proc-create.html deleted file mode 100644 index a3ec3c78..00000000 --- a/tapsets/API-nfsd-proc-create.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::nfsd.proc.create

Name

probe::nfsd.proc.create — - NFS server creating a file for client -

Synopsis

nfsd.proc.create 

Values

proto

- transfer protocol -

version

- nfs version -

filelen

- length of file name -

filename

- file name -

fh

- file handle (the first part is the length of the file handle) -

client_ip

- the ip address of client -

diff --git a/tapsets/API-nfsd-proc-lookup.html b/tapsets/API-nfsd-proc-lookup.html deleted file mode 100644 index 43703bfa..00000000 --- a/tapsets/API-nfsd-proc-lookup.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::nfsd.proc.lookup

Name

probe::nfsd.proc.lookup — - NFS server opening or searching for a file for client -

Synopsis

nfsd.proc.lookup 

Values

proto

- transfer protocol -

filelen

- the length of file name -

filename

- file name -

fh

- file handle of parent dir (the first part is the length of the file handle) -

version

- nfs version -

client_ip

- the ip address of client -

diff --git a/tapsets/API-nfsd-proc-read.html b/tapsets/API-nfsd-proc-read.html deleted file mode 100644 index 78f70dd7..00000000 --- a/tapsets/API-nfsd-proc-read.html +++ /dev/null @@ -1,21 +0,0 @@ -probe::nfsd.proc.read

Name

probe::nfsd.proc.read — - NFS server reading file for client -

Synopsis

nfsd.proc.read 

Values

vec

- struct kvec, includes buf address in kernel address and length of each buffer -

count

- read bytes -

proto

- transfer protocol -

fh

- file handle (the first part is the length of the file handle) -

version

- nfs version -

client_ip

- the ip address of client -

vlen

- read blocks -

offset

- the offset of file -

size

- read bytes -

diff --git a/tapsets/API-nfsd-proc-remove.html b/tapsets/API-nfsd-proc-remove.html deleted file mode 100644 index 89e3192c..00000000 --- a/tapsets/API-nfsd-proc-remove.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::nfsd.proc.remove

Name

probe::nfsd.proc.remove — - NFS server removing a file for client -

Synopsis

nfsd.proc.remove 

Values

proto

- transfer protocol -

version

- nfs version -

filelen

- length of file name -

filename

- file name -

fh

- file handle (the first part is the length of the file handle) -

client_ip

- the ip address of client -

diff --git a/tapsets/API-nfsd-proc-rename.html b/tapsets/API-nfsd-proc-rename.html deleted file mode 100644 index e7e6c510..00000000 --- a/tapsets/API-nfsd-proc-rename.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::nfsd.proc.rename

Name

probe::nfsd.proc.rename — - NFS Server renaming a file for client -

Synopsis

nfsd.proc.rename 

Values

tlen

- length of new file name -

flen

- length of old file name -

tfh

- file handler of new path -

filename

- old file name -

fh

- file handler of old path -

client_ip

- the ip address of client -

tname

- new file name -

diff --git a/tapsets/API-nfsd-proc-write.html b/tapsets/API-nfsd-proc-write.html deleted file mode 100644 index 9afb1b0b..00000000 --- a/tapsets/API-nfsd-proc-write.html +++ /dev/null @@ -1,23 +0,0 @@ -probe::nfsd.proc.write

Name

probe::nfsd.proc.write — - NFS server writing data to file for client -

Synopsis

nfsd.proc.write 

Values

count

- read bytes -

proto

- transfer protocol -

version

- nfs version -

size

- read bytes -

vec

- struct kvec, includes buf address in kernel address and length of each buffer -

client_ip

- the ip address of client -

fh

- file handle (the first part is the length of the file handle) -

vlen

- read blocks -

offset

- the offset of file -

stable

- argp->stable -

diff --git a/tapsets/API-nfsd-read.html b/tapsets/API-nfsd-read.html deleted file mode 100644 index 28c24673..00000000 --- a/tapsets/API-nfsd-read.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::nfsd.read

Name

probe::nfsd.read — - NFS server reading data from a file for client -

Synopsis

nfsd.read 

Values

count

- read bytes -

file

- argument file, indicates if the file has been opened. -

size

- read bytes -

vec

- struct kvec, includes buf address in kernel address and length of each buffer -

fh

- file handle (the first part is the length of the file handle) -

client_ip

- the ip address of client -

vlen

- read blocks -

offset

- the offset of file -

diff --git a/tapsets/API-nfsd-rename.html b/tapsets/API-nfsd-rename.html deleted file mode 100644 index 8d88bb47..00000000 --- a/tapsets/API-nfsd-rename.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::nfsd.rename

Name

probe::nfsd.rename — - NFS server renaming a file for client -

Synopsis

nfsd.rename 

Values

tlen

- length of new file name -

flen

- length of old file name -

tfh

- file handler of new path -

filename

- old file name -

fh

- file handler of old path -

client_ip

- the ip address of client -

tname

- new file name -

diff --git a/tapsets/API-nfsd-unlink.html b/tapsets/API-nfsd-unlink.html deleted file mode 100644 index df8a0a2e..00000000 --- a/tapsets/API-nfsd-unlink.html +++ /dev/null @@ -1,13 +0,0 @@ -probe::nfsd.unlink

Name

probe::nfsd.unlink — - NFS server removing a file or a directory for client -

Synopsis

nfsd.unlink 

Values

filelen

- the length of file name -

filename

- file name -

fh

- file handle (the first part is the length of the file handle) -

client_ip

- the ip address of client -

type

- file type (file or dir) -

diff --git a/tapsets/API-nfsd-write.html b/tapsets/API-nfsd-write.html deleted file mode 100644 index c28d3990..00000000 --- a/tapsets/API-nfsd-write.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::nfsd.write

Name

probe::nfsd.write — - NFS server writing data to a file for client -

Synopsis

nfsd.write 

Values

count

- read bytes -

file

- argument file, indicates if the file has been opened. -

size

- read bytes -

vec

- struct kvec, includes buf address in kernel address and length of each buffer -

fh

- file handle (the first part is the length of the file handle) -

client_ip

- the ip address of client -

vlen

- read blocks -

offset

- the offset of file -

diff --git a/tapsets/API-nfsderror.html b/tapsets/API-nfsderror.html deleted file mode 100644 index 23cb8736..00000000 --- a/tapsets/API-nfsderror.html +++ /dev/null @@ -1,10 +0,0 @@ -function::nfsderror

Name

function::nfsderror — - Convert nfsd error number into string -

Synopsis

-    nfsderror:string(err:long)
-

Arguments

err

- errnum -

Description

- This function returns a string for the error number - passed into the function. -

diff --git a/tapsets/API-ntohl.html b/tapsets/API-ntohl.html deleted file mode 100644 index 3ca2ea7e..00000000 --- a/tapsets/API-ntohl.html +++ /dev/null @@ -1,7 +0,0 @@ -function::ntohl

Name

function::ntohl — - Convert 32-bit long from network to host order -

Synopsis

-    ntohl:long(x:long)
-

Arguments

x

- Value to convert -

diff --git a/tapsets/API-ntohll.html b/tapsets/API-ntohll.html deleted file mode 100644 index 3c7b9c56..00000000 --- a/tapsets/API-ntohll.html +++ /dev/null @@ -1,7 +0,0 @@ -function::ntohll

Name

function::ntohll — - Convert 64-bit long long from network to host order -

Synopsis

-    ntohll:long(x:long)
-

Arguments

x

- Value to convert -

diff --git a/tapsets/API-ntohs.html b/tapsets/API-ntohs.html deleted file mode 100644 index 27d670f6..00000000 --- a/tapsets/API-ntohs.html +++ /dev/null @@ -1,7 +0,0 @@ -function::ntohs

Name

function::ntohs — - Convert 16-bit short from network to host order -

Synopsis

-    ntohs:long(x:long)
-

Arguments

x

- Value to convert -

diff --git a/tapsets/API-pages-to-string.html b/tapsets/API-pages-to-string.html deleted file mode 100644 index 3ee89c2d..00000000 --- a/tapsets/API-pages-to-string.html +++ /dev/null @@ -1,10 +0,0 @@ -function::pages_to_string

Name

function::pages_to_string — - Turns pages into a human readable string -

Synopsis

-    pages_to_string:string(pages:long)
-

Arguments

pages

- Number of pages to translate. -

Description

- Multiplies pages by page_size to get the number of - bytes and returns the result of bytes_to_string. -

diff --git a/tapsets/API-panic.html b/tapsets/API-panic.html deleted file mode 100644 index a45687e8..00000000 --- a/tapsets/API-panic.html +++ /dev/null @@ -1,11 +0,0 @@ -function::panic

Name

function::panic — - trigger a panic -

Synopsis

-    panic(msg:string)
-

Arguments

msg

- message to pass to kernel's panic function -

Description

- This function triggers an immediate panic of the running - kernel with a user-specified panic message. - It requires guru mode. -

diff --git a/tapsets/API-pexecname.html b/tapsets/API-pexecname.html deleted file mode 100644 index 237ed9d1..00000000 --- a/tapsets/API-pexecname.html +++ /dev/null @@ -1,10 +0,0 @@ -function::pexecname

Name

function::pexecname — - Returns the execname of a target process's parent process -

Synopsis

-    pexecname:string()
-

Arguments

- None -

Description

- This function returns the execname of a target - process's parent procces. -

diff --git a/tapsets/API-pgrp.html b/tapsets/API-pgrp.html deleted file mode 100644 index 00d921e3..00000000 --- a/tapsets/API-pgrp.html +++ /dev/null @@ -1,10 +0,0 @@ -function::pgrp

Name

function::pgrp — - Returns the process group ID of the current process -

Synopsis

-    pgrp:long()
-

Arguments

- None -

Description

- This function returns the process group ID of the - current process. -

diff --git a/tapsets/API-pid.html b/tapsets/API-pid.html deleted file mode 100644 index c4ce6f43..00000000 --- a/tapsets/API-pid.html +++ /dev/null @@ -1,9 +0,0 @@ -function::pid

Name

function::pid — - Returns the ID of a target process -

Synopsis

-    pid:long()
-

Arguments

- None -

Description

- This function returns the ID of a target process. -

diff --git a/tapsets/API-pid2execname.html b/tapsets/API-pid2execname.html deleted file mode 100644 index 036c7db6..00000000 --- a/tapsets/API-pid2execname.html +++ /dev/null @@ -1,9 +0,0 @@ -function::pid2execname

Name

function::pid2execname — - The name of the given process identifier -

Synopsis

-    pid2execname:string(pid:long)
-

Arguments

pid

- process identifier -

Description

- Return the name of the given process id. -

diff --git a/tapsets/API-pid2task.html b/tapsets/API-pid2task.html deleted file mode 100644 index 56461389..00000000 --- a/tapsets/API-pid2task.html +++ /dev/null @@ -1,9 +0,0 @@ -function::pid2task

Name

function::pid2task — - The task_struct of the given process identifier -

Synopsis

-    pid2task:long(pid:long)
-

Arguments

pid

- process identifier -

Description

- Return the task struct of the given process id. -

diff --git a/tapsets/API-pn.html b/tapsets/API-pn.html deleted file mode 100644 index 1fdf3701..00000000 --- a/tapsets/API-pn.html +++ /dev/null @@ -1,11 +0,0 @@ -function::pn

Name

function::pn — - Returns the active probe name -

Synopsis

-    pn:string()
-

Arguments

- None -

Description

- This function returns the script-level probe point - associated with a currently running probe handler, including - wild-card expansion effects. Context: The current probe point. -

diff --git a/tapsets/API-pointer-arg.html b/tapsets/API-pointer-arg.html deleted file mode 100644 index dfaa37b3..00000000 --- a/tapsets/API-pointer-arg.html +++ /dev/null @@ -1,10 +0,0 @@ -function::pointer_arg

Name

function::pointer_arg — - Return function argument as pointer value -

Synopsis

-    pointer_arg:long(n:long)
-

Arguments

n

- index of argument to return -

Description

- Return the unsigned value of argument n, same as ulong_arg. - Can be used with any type of pointer. -

diff --git a/tapsets/API-pp.html b/tapsets/API-pp.html deleted file mode 100644 index a7e96065..00000000 --- a/tapsets/API-pp.html +++ /dev/null @@ -1,11 +0,0 @@ -function::pp

Name

function::pp — - Returns the active probe point -

Synopsis

-    pp:string()
-

Arguments

- None -

Description

- This function returns the fully-resolved probe point - associated with a currently running probe handler, including alias - and wild-card expansion effects. Context: The current probe point. -

diff --git a/tapsets/API-ppfunc.html b/tapsets/API-ppfunc.html deleted file mode 100644 index dffbc086..00000000 --- a/tapsets/API-ppfunc.html +++ /dev/null @@ -1,10 +0,0 @@ -function::ppfunc

Name

function::ppfunc — - Returns the function name parsed from pp -

Synopsis

-    ppfunc:string()
-

Arguments

- None -

Description

- This returns the function name from the current pp. - Not all pp have functions in them, in which case "" is returned. -

diff --git a/tapsets/API-ppid.html b/tapsets/API-ppid.html deleted file mode 100644 index 0bd2a0b3..00000000 --- a/tapsets/API-ppid.html +++ /dev/null @@ -1,9 +0,0 @@ -function::ppid

Name

function::ppid — - Returns the process ID of a target process's parent process -

Synopsis

-    ppid:long()
-

Arguments

- None -

Description

- This function return the process ID of the target proccess's parent process. -

diff --git a/tapsets/API-print-backtrace.html b/tapsets/API-print-backtrace.html deleted file mode 100644 index 9edd4503..00000000 --- a/tapsets/API-print-backtrace.html +++ /dev/null @@ -1,12 +0,0 @@ -function::print_backtrace

Name

function::print_backtrace — - Print kernel stack back trace -

Synopsis

-    print_backtrace()
-

Arguments

- None -

Description

- This function is equivalent to print_stack(backtrace), - except that deeper stack nesting may be supported. See print_ubacktrace - for user-space backtrace. - The function does not return a value. -

diff --git a/tapsets/API-print-regs.html b/tapsets/API-print-regs.html deleted file mode 100644 index 1ad14ab6..00000000 --- a/tapsets/API-print-regs.html +++ /dev/null @@ -1,9 +0,0 @@ -function::print_regs

Name

function::print_regs — - Print a register dump -

Synopsis

-    print_regs()
-

Arguments

- None -

Description

- This function prints a register dump. Does nothing if no registers are available for the probe point. -

diff --git a/tapsets/API-print-stack.html b/tapsets/API-print-stack.html deleted file mode 100644 index 4974167e..00000000 --- a/tapsets/API-print-stack.html +++ /dev/null @@ -1,19 +0,0 @@ -function::print_stack

Name

function::print_stack — - Print out kernel stack from string -

Synopsis

-    print_stack(stk:string)
-

Arguments

stk

- String with list of hexadecimal addresses -

Description

- This function performs a symbolic lookup of the addresses - in the given string, - which is assumed to be the result of a prior call to - backtrace. -

- - Print one line per address, including the address, the - name of the function containing the address, and an estimate of - its position within that function. Return nothing. -

NOTE

- it is recommended to use print_syms instead of this function. -

diff --git a/tapsets/API-print-syms.html b/tapsets/API-print-syms.html deleted file mode 100644 index e2308195..00000000 --- a/tapsets/API-print-syms.html +++ /dev/null @@ -1,18 +0,0 @@ -function::print_syms

Name

function::print_syms — - Print out kernel stack from string -

Synopsis

-    print_syms(callers:string)
-

Arguments

callers

- String with list of hexadecimal (kernel) addresses -

Description

- This function performs a symbolic lookup of the addresses - in the given string, - which are assumed to be the result of prior calls to stack, - callers, and similar functions. -

- - Prints one line per address, including the address, the - name of the function containing the address, and an estimate of - its position within that function, as obtained by symdata. - Returns nothing. -

diff --git a/tapsets/API-print-ubacktrace-brief.html b/tapsets/API-print-ubacktrace-brief.html deleted file mode 100644 index 4cae99cd..00000000 --- a/tapsets/API-print-ubacktrace-brief.html +++ /dev/null @@ -1,17 +0,0 @@ -function::print_ubacktrace_brief

Name

function::print_ubacktrace_brief — - Print stack back trace for current user-space task. -

Synopsis

-    print_ubacktrace_brief()
-

Arguments

- None -

Description

-

- - Equivalent to print_ubacktrace, but output for each symbol is - shorter (just name and offset, or just the hex address of no symbol - could be found). -

Note

- To get (full) backtraces for user space applications and shared - shared libraries not mentioned in the current script run stap with - -d /path/to/exe-or-so and/or add --ldd to load all needed unwind data. -

diff --git a/tapsets/API-print-ubacktrace.html b/tapsets/API-print-ubacktrace.html deleted file mode 100644 index 981fd70a..00000000 --- a/tapsets/API-print-ubacktrace.html +++ /dev/null @@ -1,17 +0,0 @@ -function::print_ubacktrace

Name

function::print_ubacktrace — - Print stack back trace for current user-space task. -

Synopsis

-    print_ubacktrace()
-

Arguments

- None -

Description

-

- - Equivalent to print_ustack(ubacktrace), except that deeper stack - nesting may be supported. Returns nothing. See print_backtrace - for kernel backtrace. -

Note

- To get (full) backtraces for user space applications and shared - shared libraries not mentioned in the current script run stap with - -d /path/to/exe-or-so and/or add --ldd to load all needed unwind data. -

diff --git a/tapsets/API-print-ustack.html b/tapsets/API-print-ustack.html deleted file mode 100644 index 0e00cecd..00000000 --- a/tapsets/API-print-ustack.html +++ /dev/null @@ -1,18 +0,0 @@ -function::print_ustack

Name

function::print_ustack — - Print out stack for the current task from string. -

Synopsis

-    print_ustack(stk:string)
-

Arguments

stk

- String with list of hexadecimal addresses for the current task. -

Description

- Perform a symbolic lookup of the addresses in the given string, - which is assumed to be the result of a prior call to - ubacktrace for the current task. -

- - Print one line per address, including the address, the - name of the function containing the address, and an estimate of - its position within that function. Return nothing. -

NOTE

- it is recommended to use print_usyms instead of this function. -

diff --git a/tapsets/API-print-usyms.html b/tapsets/API-print-usyms.html deleted file mode 100644 index a6575b5a..00000000 --- a/tapsets/API-print-usyms.html +++ /dev/null @@ -1,18 +0,0 @@ -function::print_usyms

Name

function::print_usyms — - Print out user stack from string -

Synopsis

-    print_usyms(callers:string)
-

Arguments

callers

- String with list of hexadecimal (user) addresses -

Description

- This function performs a symbolic lookup of the addresses - in the given string, - which are assumed to be the result of prior calls to ustack, - ucallers, and similar functions. -

- - Prints one line per address, including the address, the - name of the function containing the address, and an estimate of - its position within that function, as obtained by usymdata. - Returns nothing. -

diff --git a/tapsets/API-printk.html b/tapsets/API-printk.html deleted file mode 100644 index c85e7541..00000000 --- a/tapsets/API-printk.html +++ /dev/null @@ -1,14 +0,0 @@ -function::printk

Name

function::printk — - Send a message to the kernel trace buffer -

Synopsis

-    printk(level:long,msg:string)
-

Arguments

level

- an integer for the severity level (0=KERN_EMERG ... 7=KERN_DEBUG) -

msg

- The formatted message string -

Description

- Print a line of text to the kernel dmesg/console with the - given severity. An implicit end-of-line is added. This function may - not be safely called from all kernel probe contexts, so is restricted - to guru mode only. -

diff --git a/tapsets/API-probe-type.html b/tapsets/API-probe-type.html deleted file mode 100644 index a336b4ea..00000000 --- a/tapsets/API-probe-type.html +++ /dev/null @@ -1,15 +0,0 @@ -function::probe_type

Name

function::probe_type — - The low level probe handler type of the current probe. -

Synopsis

-    probe_type:string()
-

Arguments

- None -

Description

- Returns a short string describing the low level probe handler - type for the current probe point. This is for informational purposes only. - Depending on the low level probe handler different context functions can - or cannot provide information about the current event (for example some - probe handlers only trigger in user space and have no associated kernel - context). High-level probes might map to the same or different low-level - probes (depending on systemtap version and/or kernel used). -

diff --git a/tapsets/API-probefunc.html b/tapsets/API-probefunc.html deleted file mode 100644 index ce3c4191..00000000 --- a/tapsets/API-probefunc.html +++ /dev/null @@ -1,17 +0,0 @@ -function::probefunc

Name

function::probefunc — - Return the probe point's function name, if known -

Synopsis

-    probefunc:string()
-

Arguments

- None -

Description

- This function returns the name of the function being probed - based on the current address, as computed by symname(addr) or - usymname(uaddr) depending on probe context (whether the probe is - a user probe or a kernel probe). -

Please note

- this function's behaviour differs between SystemTap 2.0 - and earlier versions. Prior to 2.0, probefunc obtained the function - name from the probe point string as returned by pp, and used the - current address as a fallback. -

diff --git a/tapsets/API-probemod.html b/tapsets/API-probemod.html deleted file mode 100644 index 20114242..00000000 --- a/tapsets/API-probemod.html +++ /dev/null @@ -1,10 +0,0 @@ -function::probemod

Name

function::probemod — - Return the probe point's kernel module name -

Synopsis

-    probemod:string()
-

Arguments

- None -

Description

- This function returns the name of the kernel module - containing the probe point, if known. -

diff --git a/tapsets/API-proc-mem-data-pid.html b/tapsets/API-proc-mem-data-pid.html deleted file mode 100644 index 529e55cd..00000000 --- a/tapsets/API-proc-mem-data-pid.html +++ /dev/null @@ -1,11 +0,0 @@ -function::proc_mem_data_pid

Name

function::proc_mem_data_pid — - Program data size (data + stack) in pages -

Synopsis

-    proc_mem_data_pid:long(pid:long)
-

Arguments

pid

- The pid of process to examine -

Description

- Returns the given process data size (data + stack) - in pages, or zero when the process doesn't exist or the number of - pages couldn't be retrieved. -

diff --git a/tapsets/API-proc-mem-data.html b/tapsets/API-proc-mem-data.html deleted file mode 100644 index 9f0d2cad..00000000 --- a/tapsets/API-proc-mem-data.html +++ /dev/null @@ -1,11 +0,0 @@ -function::proc_mem_data

Name

function::proc_mem_data — - Program data size (data + stack) in pages -

Synopsis

-    proc_mem_data:long()
-

Arguments

- None -

Description

- Returns the current process data size (data + stack) - in pages, or zero when there is no current process or the number of - pages couldn't be retrieved. -

diff --git a/tapsets/API-proc-mem-rss-pid.html b/tapsets/API-proc-mem-rss-pid.html deleted file mode 100644 index beae150d..00000000 --- a/tapsets/API-proc-mem-rss-pid.html +++ /dev/null @@ -1,11 +0,0 @@ -function::proc_mem_rss_pid

Name

function::proc_mem_rss_pid — - Program resident set size in pages -

Synopsis

-    proc_mem_rss_pid:long(pid:long)
-

Arguments

pid

- The pid of process to examine -

Description

- Returns the resident set size in pages of the given - process, or zero when the process doesn't exist or the number of - pages couldn't be retrieved. -

diff --git a/tapsets/API-proc-mem-rss.html b/tapsets/API-proc-mem-rss.html deleted file mode 100644 index ce0b7c16..00000000 --- a/tapsets/API-proc-mem-rss.html +++ /dev/null @@ -1,11 +0,0 @@ -function::proc_mem_rss

Name

function::proc_mem_rss — - Program resident set size in pages -

Synopsis

-    proc_mem_rss:long()
-

Arguments

- None -

Description

- Returns the resident set size in pages of the current - process, or zero when there is no current process or the number of - pages couldn't be retrieved. -

diff --git a/tapsets/API-proc-mem-shr-pid.html b/tapsets/API-proc-mem-shr-pid.html deleted file mode 100644 index 7d750195..00000000 --- a/tapsets/API-proc-mem-shr-pid.html +++ /dev/null @@ -1,11 +0,0 @@ -function::proc_mem_shr_pid

Name

function::proc_mem_shr_pid — - Program shared pages (from shared mappings) -

Synopsis

-    proc_mem_shr_pid:long(pid:long)
-

Arguments

pid

- The pid of process to examine -

Description

- Returns the shared pages (from shared mappings) of the - given process, or zero when the process doesn't exist or the - number of pages couldn't be retrieved. -

diff --git a/tapsets/API-proc-mem-shr.html b/tapsets/API-proc-mem-shr.html deleted file mode 100644 index a6d1bcc6..00000000 --- a/tapsets/API-proc-mem-shr.html +++ /dev/null @@ -1,11 +0,0 @@ -function::proc_mem_shr

Name

function::proc_mem_shr — - Program shared pages (from shared mappings) -

Synopsis

-    proc_mem_shr:long()
-

Arguments

- None -

Description

- Returns the shared pages (from shared mappings) of the - current process, or zero when there is no current process or the - number of pages couldn't be retrieved. -

diff --git a/tapsets/API-proc-mem-size-pid.html b/tapsets/API-proc-mem-size-pid.html deleted file mode 100644 index 9b715e01..00000000 --- a/tapsets/API-proc-mem-size-pid.html +++ /dev/null @@ -1,11 +0,0 @@ -function::proc_mem_size_pid

Name

function::proc_mem_size_pid — - Total program virtual memory size in pages -

Synopsis

-    proc_mem_size_pid:long(pid:long)
-

Arguments

pid

- The pid of process to examine -

Description

- Returns the total virtual memory size in pages of the - given process, or zero when that process doesn't exist or the - number of pages couldn't be retrieved. -

diff --git a/tapsets/API-proc-mem-size.html b/tapsets/API-proc-mem-size.html deleted file mode 100644 index 4cea78d6..00000000 --- a/tapsets/API-proc-mem-size.html +++ /dev/null @@ -1,11 +0,0 @@ -function::proc_mem_size

Name

function::proc_mem_size — - Total program virtual memory size in pages -

Synopsis

-    proc_mem_size:long()
-

Arguments

- None -

Description

- Returns the total virtual memory size in pages of the - current process, or zero when there is no current process or the - number of pages couldn't be retrieved. -

diff --git a/tapsets/API-proc-mem-string-pid.html b/tapsets/API-proc-mem-string-pid.html deleted file mode 100644 index cec6e2de..00000000 --- a/tapsets/API-proc-mem-string-pid.html +++ /dev/null @@ -1,11 +0,0 @@ -function::proc_mem_string_pid

Name

function::proc_mem_string_pid — - Human readable string of process memory usage -

Synopsis

-    proc_mem_string_pid:string(pid:long)
-

Arguments

pid

- The pid of process to examine -

Description

- Returns a human readable string showing the size, rss, - shr, txt and data of the memory used by the given process. - For example size: 301m, rss: 11m, shr: 8m, txt: 52k, data: 2248k. -

diff --git a/tapsets/API-proc-mem-string.html b/tapsets/API-proc-mem-string.html deleted file mode 100644 index 315c0920..00000000 --- a/tapsets/API-proc-mem-string.html +++ /dev/null @@ -1,11 +0,0 @@ -function::proc_mem_string

Name

function::proc_mem_string — - Human readable string of current proc memory usage -

Synopsis

-    proc_mem_string:string()
-

Arguments

- None -

Description

- Returns a human readable string showing the size, rss, - shr, txt and data of the memory used by the current process. - For example size: 301m, rss: 11m, shr: 8m, txt: 52k, data: 2248k. -

diff --git a/tapsets/API-proc-mem-txt-pid.html b/tapsets/API-proc-mem-txt-pid.html deleted file mode 100644 index fcd76d71..00000000 --- a/tapsets/API-proc-mem-txt-pid.html +++ /dev/null @@ -1,11 +0,0 @@ -function::proc_mem_txt_pid

Name

function::proc_mem_txt_pid — - Program text (code) size in pages -

Synopsis

-    proc_mem_txt_pid:long(pid:long)
-

Arguments

pid

- The pid of process to examine -

Description

- Returns the given process text (code) size in pages, - or zero when the process doesn't exist or the number of pages - couldn't be retrieved. -

diff --git a/tapsets/API-proc-mem-txt.html b/tapsets/API-proc-mem-txt.html deleted file mode 100644 index 4d8b50d7..00000000 --- a/tapsets/API-proc-mem-txt.html +++ /dev/null @@ -1,11 +0,0 @@ -function::proc_mem_txt

Name

function::proc_mem_txt — - Program text (code) size in pages -

Synopsis

-    proc_mem_txt:long()
-

Arguments

- None -

Description

- Returns the current process text (code) size in pages, - or zero when there is no current process or the number of pages - couldn't be retrieved. -

diff --git a/tapsets/API-pstrace.html b/tapsets/API-pstrace.html deleted file mode 100644 index c041f2f1..00000000 --- a/tapsets/API-pstrace.html +++ /dev/null @@ -1,11 +0,0 @@ -function::pstrace

Name

function::pstrace — - Chain of processes and pids back to init(1) -

Synopsis

-    pstrace:string(task:long)
-

Arguments

task

- Pointer to task struct of process -

Description

- This function returns a string listing execname and pid for each - process starting from task back to the process ancestor - that init(1) spawned. -

diff --git a/tapsets/API-qs-done.html b/tapsets/API-qs-done.html deleted file mode 100644 index 24620572..00000000 --- a/tapsets/API-qs-done.html +++ /dev/null @@ -1,11 +0,0 @@ -function::qs_done

Name

function::qs_done — - Function to record finishing request -

Synopsis

-    qs_done(qname:string)
-

Arguments

qname

- the name of the service that finished -

Description

- This function records that a request - originally from the given queue has completed being - serviced. -

diff --git a/tapsets/API-qs-run.html b/tapsets/API-qs-run.html deleted file mode 100644 index d7cb524e..00000000 --- a/tapsets/API-qs-run.html +++ /dev/null @@ -1,11 +0,0 @@ -function::qs_run

Name

function::qs_run — - Function to record being moved from wait queue to being serviced -

Synopsis

-    qs_run(qname:string)
-

Arguments

qname

- the name of the service being moved and started -

Description

- This function records that the previous enqueued - request was removed from the given wait queue and is now - being serviced. -

diff --git a/tapsets/API-qs-wait.html b/tapsets/API-qs-wait.html deleted file mode 100644 index bc7cf1a6..00000000 --- a/tapsets/API-qs-wait.html +++ /dev/null @@ -1,10 +0,0 @@ -function::qs_wait

Name

function::qs_wait — - Function to record enqueue requests -

Synopsis

-    qs_wait(qname:string)
-

Arguments

qname

- the name of the queue requesting enqueue -

Description

- This function records that a new request - was enqueued for the given queue name. -

diff --git a/tapsets/API-qsq-blocked.html b/tapsets/API-qsq-blocked.html deleted file mode 100644 index 799f1365..00000000 --- a/tapsets/API-qsq-blocked.html +++ /dev/null @@ -1,12 +0,0 @@ -function::qsq_blocked

Name

function::qsq_blocked — - Returns the time reqest was on the wait queue -

Synopsis

-    qsq_blocked:long(qname:string,scale:long)
-

Arguments

qname

- queue name -

scale

- scale variable to take account for interval fraction -

Description

- This function returns the fraction of elapsed time during - which one or more requests were on the wait queue. -

diff --git a/tapsets/API-qsq-print.html b/tapsets/API-qsq-print.html deleted file mode 100644 index c157a5bb..00000000 --- a/tapsets/API-qsq-print.html +++ /dev/null @@ -1,17 +0,0 @@ -function::qsq_print

Name

function::qsq_print — - Prints a line of statistics for the given queue -

Synopsis

-    qsq_print(qname:string)
-

Arguments

qname

- queue name -

Description

- This function prints a line containing the following -

statistics for the given queue

- the queue name, - the average rate of requests per second, - the average wait queue length, - the average time on the wait queue, - the average time to service a request, - the percentage of time the wait queue was used, - and the percentage of time request was being serviced. -

diff --git a/tapsets/API-qsq-service-time.html b/tapsets/API-qsq-service-time.html deleted file mode 100644 index 6b3f3b96..00000000 --- a/tapsets/API-qsq-service-time.html +++ /dev/null @@ -1,12 +0,0 @@ -function::qsq_service_time

Name

function::qsq_service_time — - Amount of time per request service -

Synopsis

-    qsq_service_time:long(qname:string,scale:long)
-

Arguments

qname

- queue name -

scale

- scale variable to take account for interval fraction -

Description

- This function returns the average time in microseconds - required to service a request once it is removed from the wait queue. -

diff --git a/tapsets/API-qsq-start.html b/tapsets/API-qsq-start.html deleted file mode 100644 index a3b04b97..00000000 --- a/tapsets/API-qsq-start.html +++ /dev/null @@ -1,11 +0,0 @@ -function::qsq_start

Name

function::qsq_start — - Function to reset the stats for a queue -

Synopsis

-    qsq_start(qname:string)
-

Arguments

qname

- the name of the service that finished -

Description

- This function resets the statistics counters for the given - queue, and restarts tracking from the moment the function was called. - This function is also used to create intialize a queue. -

diff --git a/tapsets/API-qsq-throughput.html b/tapsets/API-qsq-throughput.html deleted file mode 100644 index 1990a1a5..00000000 --- a/tapsets/API-qsq-throughput.html +++ /dev/null @@ -1,12 +0,0 @@ -function::qsq_throughput

Name

function::qsq_throughput — - Number of requests served per unit time -

Synopsis

-    qsq_throughput:long(qname:string,scale:long)
-

Arguments

qname

- queue name -

scale

- scale variable to take account for interval fraction -

Description

- This function returns the average number or requests - served per microsecond. -

diff --git a/tapsets/API-qsq-utilization.html b/tapsets/API-qsq-utilization.html deleted file mode 100644 index 5e00561d..00000000 --- a/tapsets/API-qsq-utilization.html +++ /dev/null @@ -1,12 +0,0 @@ -function::qsq_utilization

Name

function::qsq_utilization — - Fraction of time that any request was being serviced -

Synopsis

-    qsq_utilization:long(qname:string,scale:long)
-

Arguments

qname

- queue name -

scale

- scale variable to take account for interval fraction -

Description

- This function returns the average time in microseconds - that at least one request was being serviced. -

diff --git a/tapsets/API-qsq-wait-queue-length.html b/tapsets/API-qsq-wait-queue-length.html deleted file mode 100644 index 22122817..00000000 --- a/tapsets/API-qsq-wait-queue-length.html +++ /dev/null @@ -1,11 +0,0 @@ -function::qsq_wait_queue_length

Name

function::qsq_wait_queue_length — - length of wait queue -

Synopsis

-    qsq_wait_queue_length:long(qname:string,scale:long)
-

Arguments

qname

- queue name -

scale

- scale variable to take account for interval fraction -

Description

- This function returns the average length of the wait queue -

diff --git a/tapsets/API-qsq-wait-time.html b/tapsets/API-qsq-wait-time.html deleted file mode 100644 index 9db39979..00000000 --- a/tapsets/API-qsq-wait-time.html +++ /dev/null @@ -1,12 +0,0 @@ -function::qsq_wait_time

Name

function::qsq_wait_time — - Amount of time in queue + service per request -

Synopsis

-    qsq_wait_time:long(qname:string,scale:long)
-

Arguments

qname

- queue name -

scale

- scale variable to take account for interval fraction -

Description

- This function returns the average time in microseconds - that it took for a request to be serviced (qs_wait to qa_done). -

diff --git a/tapsets/API-randint.html b/tapsets/API-randint.html deleted file mode 100644 index 1d9dd41a..00000000 --- a/tapsets/API-randint.html +++ /dev/null @@ -1,7 +0,0 @@ -function::randint

Name

function::randint — - Return a random number between [0,n) -

Synopsis

-    randint:long(n:long)
-

Arguments

n

- Number past upper limit of range, not larger than 2**20. -

diff --git a/tapsets/API-read-stopwatch-ms.html b/tapsets/API-read-stopwatch-ms.html deleted file mode 100644 index dee4d4ce..00000000 --- a/tapsets/API-read-stopwatch-ms.html +++ /dev/null @@ -1,10 +0,0 @@ -function::read_stopwatch_ms

Name

function::read_stopwatch_ms — - Reads the time in milliseconds for a stopwatch -

Synopsis

-    read_stopwatch_ms:long(name:string)
-

Arguments

name

- stopwatch name -

Description

- Returns time in milliseconds for stopwatch name. - Creates stopwatch name if it does not currently exist. -

diff --git a/tapsets/API-read-stopwatch-ns.html b/tapsets/API-read-stopwatch-ns.html deleted file mode 100644 index 5c25d64a..00000000 --- a/tapsets/API-read-stopwatch-ns.html +++ /dev/null @@ -1,10 +0,0 @@ -function::read_stopwatch_ns

Name

function::read_stopwatch_ns — - Reads the time in nanoseconds for a stopwatch -

Synopsis

-    read_stopwatch_ns:long(name:string)
-

Arguments

name

- stopwatch name -

Description

- Returns time in nanoseconds for stopwatch name. - Creates stopwatch name if it does not currently exist. -

diff --git a/tapsets/API-read-stopwatch-s.html b/tapsets/API-read-stopwatch-s.html deleted file mode 100644 index 8a5acb3b..00000000 --- a/tapsets/API-read-stopwatch-s.html +++ /dev/null @@ -1,10 +0,0 @@ -function::read_stopwatch_s

Name

function::read_stopwatch_s — - Reads the time in seconds for a stopwatch -

Synopsis

-    read_stopwatch_s:long(name:string)
-

Arguments

name

- stopwatch name -

Description

- Returns time in seconds for stopwatch name. - Creates stopwatch name if it does not currently exist. -

diff --git a/tapsets/API-read-stopwatch-us.html b/tapsets/API-read-stopwatch-us.html deleted file mode 100644 index 678f1b10..00000000 --- a/tapsets/API-read-stopwatch-us.html +++ /dev/null @@ -1,10 +0,0 @@ -function::read_stopwatch_us

Name

function::read_stopwatch_us — - Reads the time in microseconds for a stopwatch -

Synopsis

-    read_stopwatch_us:long(name:string)
-

Arguments

name

- stopwatch name -

Description

- Returns time in microseconds for stopwatch name. - Creates stopwatch name if it does not currently exist. -

diff --git a/tapsets/API-real-mount.html b/tapsets/API-real-mount.html deleted file mode 100644 index 622555a6..00000000 --- a/tapsets/API-real-mount.html +++ /dev/null @@ -1,12 +0,0 @@ -function::real_mount

Name

function::real_mount — - get the 'struct mount' pointer -

Synopsis

-    real_mount:long(vfsmnt:long)
-

Arguments

vfsmnt

- Pointer to 'struct vfsmount' -

Description

-

- - Returns the 'struct mount' pointer value for a 'struct vfsmount' - pointer. -

diff --git a/tapsets/API-register.html b/tapsets/API-register.html deleted file mode 100644 index b875c8e0..00000000 --- a/tapsets/API-register.html +++ /dev/null @@ -1,38 +0,0 @@ -function::register

Name

function::register — - Return the signed value of the named CPU register -

Synopsis

-    register:long(name:string)
-

Arguments

name

- Name of the register to return -

Description

- Return the value of the named CPU register, - as it was saved when the current probe point was hit. - If the register is 32 bits, it is sign-extended to 64 bits. -

- - For the i386 architecture, the following names are recognized. - (name1/name2 indicates that name1 and name2 are alternative names - for the same register.) - eax/ax, ebp/bp, ebx/bx, ecx/cx, edi/di, edx/dx, eflags/flags, - eip/ip, esi/si, esp/sp, orig_eax/orig_ax, - xcs/cs, xds/ds, xes/es, xfs/fs, xss/ss. -

- - For the x86_64 architecture, the following names are recognized: - 64-bit registers: - r8, r9, r10, r11, r12, r13, r14, r15, - rax/ax, rbp/bp, rbx/bx, rcx/cx, rdi/di, rdx/dx, - rip/ip, rsi/si, rsp/sp; - 32-bit registers: - eax, ebp, ebx, ecx, edx, edi, edx, eip, esi, esp, flags/eflags, - orig_eax; segment registers: xcs/cs, xss/ss. -

- - For powerpc, the following names are recognized: - r0, r1, ... r31, nip, msr, orig_gpr3, ctr, link, xer, ccr, softe, trap, - dar, dsisr, result. -

- - For s390x, the following names are recognized: - r0, r1, ... r15, args, psw.mask, psw.addr, orig_gpr2, ilc, trap. -

diff --git a/tapsets/API-registers-valid.html b/tapsets/API-registers-valid.html deleted file mode 100644 index b651b4fe..00000000 --- a/tapsets/API-registers-valid.html +++ /dev/null @@ -1,12 +0,0 @@ -function::registers_valid

Name

function::registers_valid — - Determines validity of register and u_register in current context -

Synopsis

-    registers_valid:long()
-

Arguments

- None -

Description

- This function returns 1 if register and u_register - can be used in the current context, or 0 otherwise. - For example, registers_valid returns 0 - when called from a begin or end probe. -

diff --git a/tapsets/API-regparm.html b/tapsets/API-regparm.html deleted file mode 100644 index a3272117..00000000 --- a/tapsets/API-regparm.html +++ /dev/null @@ -1,17 +0,0 @@ -function::regparm

Name

function::regparm — - Specify regparm value used to compile function -

Synopsis

-    regparm(n:long)
-

Arguments

n

- original regparm value -

Description

- Call this function with argument n before accessing function - arguments using the *_arg function is the function was build with the - gcc -mregparm=n option. -

- - (The i386 kernel is built with \-mregparm=3, so systemtap considers - regparm(3) the default for kernel functions on that architecture.) - Only valid on i386 and x86_64 (when probing 32bit applications). - Produces an error on other architectures. -

diff --git a/tapsets/API-remote-id.html b/tapsets/API-remote-id.html deleted file mode 100644 index 3dc5008a..00000000 --- a/tapsets/API-remote-id.html +++ /dev/null @@ -1,14 +0,0 @@ -function::remote_id

Name

function::remote_id — - The index of this instance in a remote execution. -

Synopsis

-    remote_id:long()
-

Arguments

- None -

Description

- This function returns a number 0..N, which is the unique - index of this particular script execution from a swarm of - stap --remote A --remote B ... runs, and is the same number - stap --remote-prefix would print. The function returns -1 if the - script was not launched with stap --remote, or if the remote - staprun/stapsh are older than version 1.7. -

diff --git a/tapsets/API-remote-uri.html b/tapsets/API-remote-uri.html deleted file mode 100644 index 4862ba56..00000000 --- a/tapsets/API-remote-uri.html +++ /dev/null @@ -1,13 +0,0 @@ -function::remote_uri

Name

function::remote_uri — - The name of this instance in a remote execution. -

Synopsis

-    remote_uri:string()
-

Arguments

- None -

Description

- This function returns the remote host used to invoke - this particular script execution from a swarm of stap --remote runs. - It may not be unique among the swarm. - The function returns an empty string if the script was not launched with - stap --remote. -

diff --git a/tapsets/API-return-str.html b/tapsets/API-return-str.html deleted file mode 100644 index f8828a6c..00000000 --- a/tapsets/API-return-str.html +++ /dev/null @@ -1,16 +0,0 @@ -function::return_str

Name

function::return_str — - Formats the return value as a string -

Synopsis

-    return_str:string(format:long,ret:long)
-

Arguments

format

- Variable to determine return type base value -

ret

- Return value (typically $return) -

Description

- This function is used by the syscall tapset, and - returns a string. Set format equal to 1 for a decimal, - 2 for hex, 3 for octal. -

- - Note that this function is preferred over returnstr. -

diff --git a/tapsets/API-returnstr.html b/tapsets/API-returnstr.html deleted file mode 100644 index e0ac32ca..00000000 --- a/tapsets/API-returnstr.html +++ /dev/null @@ -1,16 +0,0 @@ -function::returnstr

Name

function::returnstr — - Formats the return value as a string -

Synopsis

-    returnstr:string(format:long)
-

Arguments

format

- Variable to determine return type base value -

Description

- This function is used by the nd_syscall tapset, and - returns a string. Set format equal to 1 for a decimal, - 2 for hex, 3 for octal. -

- - Note that this function should only be used in dwarfless probes - (i.e. 'kprobe.function(foo)'). Other probes should use - return_str. -

diff --git a/tapsets/API-returnval.html b/tapsets/API-returnval.html deleted file mode 100644 index e78afa38..00000000 --- a/tapsets/API-returnval.html +++ /dev/null @@ -1,12 +0,0 @@ -function::returnval

Name

function::returnval — - Possible return value of probed function -

Synopsis

-    returnval:long()
-

Arguments

- None -

Description

- Return the value of the register in which function values - are typically returned. Can be used in probes where $return isn't - available. This is only a guess of the actual return value and can be - totally wrong. Normally only used in dwarfless probes. -

diff --git a/tapsets/API-reverse-path-walk.html b/tapsets/API-reverse-path-walk.html deleted file mode 100644 index f550e02b..00000000 --- a/tapsets/API-reverse-path-walk.html +++ /dev/null @@ -1,11 +0,0 @@ -function::reverse_path_walk

Name

function::reverse_path_walk — - get the full dirent path -

Synopsis

-    reverse_path_walk:string(dentry:long)
-

Arguments

dentry

- Pointer to dentry. -

Description

-

- - Returns the path name (partial path to mount point). -

diff --git a/tapsets/API-s32-arg.html b/tapsets/API-s32-arg.html deleted file mode 100644 index 581374bc..00000000 --- a/tapsets/API-s32-arg.html +++ /dev/null @@ -1,10 +0,0 @@ -function::s32_arg

Name

function::s32_arg — - Return function argument as signed 32-bit value -

Synopsis

-    s32_arg:long(n:long)
-

Arguments

n

- index of argument to return -

Description

- Return the signed 32-bit value of argument n, - same as int_arg. -

diff --git a/tapsets/API-s64-arg.html b/tapsets/API-s64-arg.html deleted file mode 100644 index c573f843..00000000 --- a/tapsets/API-s64-arg.html +++ /dev/null @@ -1,10 +0,0 @@ -function::s64_arg

Name

function::s64_arg — - Return function argument as signed 64-bit value -

Synopsis

-    s64_arg:long(n:long)
-

Arguments

n

- index of argument to return -

Description

- Return the signed 64-bit value of argument n, - same as longlong_arg. -

diff --git a/tapsets/API-sa-flags-str.html b/tapsets/API-sa-flags-str.html deleted file mode 100644 index dfba7b21..00000000 --- a/tapsets/API-sa-flags-str.html +++ /dev/null @@ -1,7 +0,0 @@ -function::sa_flags_str

Name

function::sa_flags_str — - Returns the string representation of sa_flags -

Synopsis

-    sa_flags_str:string(sa_flags:long)
-

Arguments

sa_flags

- the set of flags to convert to string. -

diff --git a/tapsets/API-sa-handler-str.html b/tapsets/API-sa-handler-str.html deleted file mode 100644 index b0af4425..00000000 --- a/tapsets/API-sa-handler-str.html +++ /dev/null @@ -1,11 +0,0 @@ -function::sa_handler_str

Name

function::sa_handler_str — - Returns the string representation of an sa_handler -

Synopsis

-    sa_handler_str(handler:)
-

Arguments

handler

- the sa_handler to convert to string. -

Description

- Returns the string representation of an sa_handler. - If it is not SIG_DFL, SIG_IGN or SIG_ERR, it will return the address - of the handler. -

diff --git a/tapsets/API-scheduler-balance.html b/tapsets/API-scheduler-balance.html deleted file mode 100644 index aa779e8f..00000000 --- a/tapsets/API-scheduler-balance.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::scheduler.balance

Name

probe::scheduler.balance — - A cpu attempting to find more work. -

Synopsis

scheduler.balance 

Values

name

- name of the probe point -

Context

- The cpu looking for more work. -

diff --git a/tapsets/API-scheduler-cpu-off.html b/tapsets/API-scheduler-cpu-off.html deleted file mode 100644 index ffcdcf9f..00000000 --- a/tapsets/API-scheduler-cpu-off.html +++ /dev/null @@ -1,13 +0,0 @@ -probe::scheduler.cpu_off

Name

probe::scheduler.cpu_off — - Process is about to stop running on a cpu -

Synopsis

scheduler.cpu_off 

Values

task_prev

- the process leaving the cpu (same as current) -

name

- name of the probe point -

idle

- boolean indicating whether current is the idle process -

task_next

- the process replacing current -

Context

- The process leaving the cpu. -

diff --git a/tapsets/API-scheduler-cpu-on.html b/tapsets/API-scheduler-cpu-on.html deleted file mode 100644 index 1bad5166..00000000 --- a/tapsets/API-scheduler-cpu-on.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::scheduler.cpu_on

Name

probe::scheduler.cpu_on — - Process is beginning execution on a cpu -

Synopsis

scheduler.cpu_on 

Values

task_prev

- the process that was previously running on this cpu -

name

- name of the probe point -

idle

- - boolean indicating whether current is the idle process -

Context

- The resuming process. -

diff --git a/tapsets/API-scheduler-ctxswitch.html b/tapsets/API-scheduler-ctxswitch.html deleted file mode 100644 index c0585f55..00000000 --- a/tapsets/API-scheduler-ctxswitch.html +++ /dev/null @@ -1,25 +0,0 @@ -probe::scheduler.ctxswitch

Name

probe::scheduler.ctxswitch — - A context switch is occuring. -

Synopsis

scheduler.ctxswitch 

Values

prev_pid

- The PID of the process to be switched out -

name

- name of the probe point -

next_task_name

- The name of the process to be switched in -

nexttsk_state

- the state of the process to be switched in -

prev_priority

- The priority of the process to be switched out -

next_pid

- The PID of the process to be switched in -

next_priority

- The priority of the process to be switched in -

prevtsk_state

- the state of the process to be switched out -

next_tid

- The TID of the process to be switched in -

prev_task_name

- The name of the process to be switched out -

prev_tid

- The TID of the process to be switched out -

diff --git a/tapsets/API-scheduler-kthread-stop-return.html b/tapsets/API-scheduler-kthread-stop-return.html deleted file mode 100644 index c9103690..00000000 --- a/tapsets/API-scheduler-kthread-stop-return.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::scheduler.kthread_stop.return

Name

probe::scheduler.kthread_stop.return — - A kthread is stopped and gets the return value -

Synopsis

scheduler.kthread_stop.return 

Values

return_value

- return value after stopping the thread -

name

- name of the probe point -

diff --git a/tapsets/API-scheduler-kthread-stop.html b/tapsets/API-scheduler-kthread-stop.html deleted file mode 100644 index bb2615c6..00000000 --- a/tapsets/API-scheduler-kthread-stop.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::scheduler.kthread_stop

Name

probe::scheduler.kthread_stop — - A thread created by kthread_create is being stopped -

Synopsis

scheduler.kthread_stop 

Values

thread_priority

- priority of the thread -

thread_pid

- PID of the thread being stopped -

diff --git a/tapsets/API-scheduler-migrate.html b/tapsets/API-scheduler-migrate.html deleted file mode 100644 index d0092320..00000000 --- a/tapsets/API-scheduler-migrate.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::scheduler.migrate

Name

probe::scheduler.migrate — - Task migrating across cpus -

Synopsis

scheduler.migrate 

Values

priority

- priority of the task being migrated -

cpu_from

- the original cpu -

name

- name of the probe point -

task

- the process that is being migrated -

cpu_to

- the destination cpu -

pid

- PID of the task being migrated -

diff --git a/tapsets/API-scheduler-process-exit.html b/tapsets/API-scheduler-process-exit.html deleted file mode 100644 index 599e5bb7..00000000 --- a/tapsets/API-scheduler-process-exit.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::scheduler.process_exit

Name

probe::scheduler.process_exit — - Process exiting -

Synopsis

scheduler.process_exit 

Values

priority

- priority of the process exiting -

name

- name of the probe point -

pid

- PID of the process exiting -

diff --git a/tapsets/API-scheduler-process-fork.html b/tapsets/API-scheduler-process-fork.html deleted file mode 100644 index 0ca56efd..00000000 --- a/tapsets/API-scheduler-process-fork.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::scheduler.process_fork

Name

probe::scheduler.process_fork — - Process forked -

Synopsis

scheduler.process_fork 

Values

name

- name of the probe point -

parent_pid

- PID of the parent process -

child_pid

- PID of the child process -

diff --git a/tapsets/API-scheduler-process-free.html b/tapsets/API-scheduler-process-free.html deleted file mode 100644 index 9b730d18..00000000 --- a/tapsets/API-scheduler-process-free.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::scheduler.process_free

Name

probe::scheduler.process_free — - Scheduler freeing a data structure for a process -

Synopsis

scheduler.process_free 

Values

priority

- priority of the process getting freed -

name

- name of the probe point -

pid

- PID of the process getting freed -

diff --git a/tapsets/API-scheduler-process-wait.html b/tapsets/API-scheduler-process-wait.html deleted file mode 100644 index 6b2d5083..00000000 --- a/tapsets/API-scheduler-process-wait.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::scheduler.process_wait

Name

probe::scheduler.process_wait — - Scheduler starting to wait on a process -

Synopsis

scheduler.process_wait 

Values

name

- name of the probe point -

pid

- PID of the process scheduler is waiting on -

diff --git a/tapsets/API-scheduler-signal-send.html b/tapsets/API-scheduler-signal-send.html deleted file mode 100644 index 22826d66..00000000 --- a/tapsets/API-scheduler-signal-send.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::scheduler.signal_send

Name

probe::scheduler.signal_send — - Sending a signal -

Synopsis

scheduler.signal_send 

Values

signal_number

- signal number -

name

- name of the probe point -

pid

- pid of the process sending signal -

diff --git a/tapsets/API-scheduler-tick.html b/tapsets/API-scheduler-tick.html deleted file mode 100644 index 13cb0552..00000000 --- a/tapsets/API-scheduler-tick.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::scheduler.tick

Name

probe::scheduler.tick — - Schedulers internal tick, a processes timeslice accounting is updated -

Synopsis

scheduler.tick 

Values

name

- name of the probe point -

idle

- boolean indicating whether current is the idle process -

Context

- The process whose accounting will be updated. -

diff --git a/tapsets/API-scheduler-wait-task.html b/tapsets/API-scheduler-wait-task.html deleted file mode 100644 index 1ccb096c..00000000 --- a/tapsets/API-scheduler-wait-task.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::scheduler.wait_task

Name

probe::scheduler.wait_task — - Waiting on a task to unschedule (become inactive) -

Synopsis

scheduler.wait_task 

Values

name

- name of the probe point -

task_pid

- PID of the task the scheduler is waiting on -

task_priority

- priority of the task -

diff --git a/tapsets/API-scheduler-wakeup-new.html b/tapsets/API-scheduler-wakeup-new.html deleted file mode 100644 index 1b8cdcf4..00000000 --- a/tapsets/API-scheduler-wakeup-new.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::scheduler.wakeup_new

Name

probe::scheduler.wakeup_new — - Newly created task is woken up for the first time -

Synopsis

scheduler.wakeup_new 

Values

task_cpu

- cpu of the task woken up -

name

- name of the probe point -

task_pid

- PID of the new task woken up -

task_priority

- priority of the new task -

task_state

- state of the task woken up -

task_tid

- TID of the new task woken up -

diff --git a/tapsets/API-scheduler-wakeup.html b/tapsets/API-scheduler-wakeup.html deleted file mode 100644 index 01f39214..00000000 --- a/tapsets/API-scheduler-wakeup.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::scheduler.wakeup

Name

probe::scheduler.wakeup — - Task is woken up -

Synopsis

scheduler.wakeup 

Values

task_cpu

- cpu of the task being woken up -

name

- name of the probe point -

task_pid

- PID of the task being woken up -

task_priority

- priority of the task being woken up -

task_state

- state of the task being woken up -

task_tid

- tid of the task being woken up -

diff --git a/tapsets/API-scsi-iocompleted.html b/tapsets/API-scsi-iocompleted.html deleted file mode 100644 index e061e193..00000000 --- a/tapsets/API-scsi-iocompleted.html +++ /dev/null @@ -1,24 +0,0 @@ -probe::scsi.iocompleted

Name

probe::scsi.iocompleted — - SCSI mid-layer running the completion processing for block device I/O requests -

Synopsis

scsi.iocompleted 

Values

device_state_str

- The current state of the device, as a string -

dev_id

- The scsi device id -

channel

- The channel number -

data_direction

- The data_direction specifies whether this command is from/to - the device -

lun

- The lun number -

host_no

- The host number -

data_direction_str

- Data direction, as a string -

device_state

- The current state of the device -

req_addr

- The current struct request pointer, as a number -

goodbytes

- The bytes completed -

diff --git a/tapsets/API-scsi-iodispatching.html b/tapsets/API-scsi-iodispatching.html deleted file mode 100644 index 765a5c04..00000000 --- a/tapsets/API-scsi-iodispatching.html +++ /dev/null @@ -1,27 +0,0 @@ -probe::scsi.iodispatching

Name

probe::scsi.iodispatching — - SCSI mid-layer dispatched low-level SCSI command -

Synopsis

scsi.iodispatching 

Values

device_state_str

- The current state of the device, as a string -

dev_id

- The scsi device id -

channel

- The channel number -

data_direction

- The data_direction specifies whether this command is from/to the device - 0 (DMA_BIDIRECTIONAL), 1 (DMA_TO_DEVICE), - 2 (DMA_FROM_DEVICE), 3 (DMA_NONE) -

lun

- The lun number -

request_bufflen

- The request buffer length -

host_no

- The host number -

device_state

- The current state of the device -

data_direction_str

- Data direction, as a string -

req_addr

- The current struct request pointer, as a number -

request_buffer

- The request buffer address -

diff --git a/tapsets/API-scsi-iodone.html b/tapsets/API-scsi-iodone.html deleted file mode 100644 index a171ae22..00000000 --- a/tapsets/API-scsi-iodone.html +++ /dev/null @@ -1,24 +0,0 @@ -probe::scsi.iodone

Name

probe::scsi.iodone — - SCSI command completed by low level driver and enqueued into the done queue. -

Synopsis

scsi.iodone 

Values

device_state_str

- The current state of the device, as a string -

dev_id

- The scsi device id -

channel

- The channel number -

data_direction

- The data_direction specifies whether this command is - from/to the device. -

lun

- The lun number -

host_no

- The host number -

data_direction_str

- Data direction, as a string -

device_state

- The current state of the device -

scsi_timer_pending

- 1 if a timer is pending on this request -

req_addr

- The current struct request pointer, as a number -

diff --git a/tapsets/API-scsi-ioentry.html b/tapsets/API-scsi-ioentry.html deleted file mode 100644 index 29ab6810..00000000 --- a/tapsets/API-scsi-ioentry.html +++ /dev/null @@ -1,13 +0,0 @@ -probe::scsi.ioentry

Name

probe::scsi.ioentry — - Prepares a SCSI mid-layer request -

Synopsis

scsi.ioentry 

Values

disk_major

- The major number of the disk (-1 if no information) -

device_state_str

- The current state of the device, as a string -

device_state

- The current state of the device -

req_addr

- The current struct request pointer, as a number -

disk_minor

- The minor number of the disk (-1 if no information) -

diff --git a/tapsets/API-scsi-ioexecute.html b/tapsets/API-scsi-ioexecute.html deleted file mode 100644 index 3ca1d500..00000000 --- a/tapsets/API-scsi-ioexecute.html +++ /dev/null @@ -1,28 +0,0 @@ -probe::scsi.ioexecute

Name

probe::scsi.ioexecute — - Create mid-layer SCSI request and wait for the result -

Synopsis

scsi.ioexecute 

Values

retries

- Number of times to retry request -

device_state_str

- The current state of the device, as a string -

dev_id

- The scsi device id -

channel

- The channel number -

data_direction

- The data_direction specifies whether this command is - from/to the device. -

lun

- The lun number -

timeout

- Request timeout in seconds -

request_bufflen

- The data buffer buffer length -

host_no

- The host number -

data_direction_str

- Data direction, as a string -

device_state

- The current state of the device -

request_buffer

- The data buffer address -

diff --git a/tapsets/API-scsi-set-state.html b/tapsets/API-scsi-set-state.html deleted file mode 100644 index 2f04e5ac..00000000 --- a/tapsets/API-scsi-set-state.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::scsi.set_state

Name

probe::scsi.set_state — - Order SCSI device state change -

Synopsis

scsi.set_state 

Values

state_str

- The new state of the device, as a string -

dev_id

- The scsi device id -

channel

- The channel number -

state

- The new state of the device -

old_state_str

- The current state of the device, as a string -

lun

- The lun number -

old_state

- The current state of the device -

host_no

- The host number -

diff --git a/tapsets/API-set-kernel-char.html b/tapsets/API-set-kernel-char.html deleted file mode 100644 index 92030680..00000000 --- a/tapsets/API-set-kernel-char.html +++ /dev/null @@ -1,13 +0,0 @@ -function::set_kernel_char

Name

function::set_kernel_char — - Writes a char value to kernel memory -

Synopsis

-    set_kernel_char(addr:long,val:long)
-

Arguments

addr

- The kernel address to write the char to -

val

- The char which is to be written -

Description

- Writes the char value to a given kernel memory address. - Reports an error when writing to the given address fails. - Requires the use of guru mode (-g). -

diff --git a/tapsets/API-set-kernel-int.html b/tapsets/API-set-kernel-int.html deleted file mode 100644 index 76685632..00000000 --- a/tapsets/API-set-kernel-int.html +++ /dev/null @@ -1,13 +0,0 @@ -function::set_kernel_int

Name

function::set_kernel_int — - Writes an int value to kernel memory -

Synopsis

-    set_kernel_int(addr:long,val:long)
-

Arguments

addr

- The kernel address to write the int to -

val

- The int which is to be written -

Description

- Writes the int value to a given kernel memory address. - Reports an error when writing to the given address fails. - Requires the use of guru mode (-g). -

diff --git a/tapsets/API-set-kernel-long.html b/tapsets/API-set-kernel-long.html deleted file mode 100644 index 6d3ceaf7..00000000 --- a/tapsets/API-set-kernel-long.html +++ /dev/null @@ -1,13 +0,0 @@ -function::set_kernel_long

Name

function::set_kernel_long — - Writes a long value to kernel memory -

Synopsis

-    set_kernel_long(addr:long,val:long)
-

Arguments

addr

- The kernel address to write the long to -

val

- The long which is to be written -

Description

- Writes the long value to a given kernel memory address. - Reports an error when writing to the given address fails. - Requires the use of guru mode (-g). -

diff --git a/tapsets/API-set-kernel-pointer.html b/tapsets/API-set-kernel-pointer.html deleted file mode 100644 index f7d56faa..00000000 --- a/tapsets/API-set-kernel-pointer.html +++ /dev/null @@ -1,13 +0,0 @@ -function::set_kernel_pointer

Name

function::set_kernel_pointer — - Writes a pointer value to kernel memory. -

Synopsis

-    set_kernel_pointer(addr:long,val:long)
-

Arguments

addr

- The kernel address to write the pointer to -

val

- The pointer which is to be written -

Description

- Writes the pointer value to a given kernel memory address. - Reports an error when writing to the given address fails. - Requires the use of guru mode (-g). -

diff --git a/tapsets/API-set-kernel-short.html b/tapsets/API-set-kernel-short.html deleted file mode 100644 index 691f7c17..00000000 --- a/tapsets/API-set-kernel-short.html +++ /dev/null @@ -1,13 +0,0 @@ -function::set_kernel_short

Name

function::set_kernel_short — - Writes a short value to kernel memory -

Synopsis

-    set_kernel_short(addr:long,val:long)
-

Arguments

addr

- The kernel address to write the short to -

val

- The short which is to be written -

Description

- Writes the short value to a given kernel memory address. - Reports an error when writing to the given address fails. - Requires the use of guru mode (-g). -

diff --git a/tapsets/API-set-kernel-string-n.html b/tapsets/API-set-kernel-string-n.html deleted file mode 100644 index 0e85c14a..00000000 --- a/tapsets/API-set-kernel-string-n.html +++ /dev/null @@ -1,15 +0,0 @@ -function::set_kernel_string_n

Name

function::set_kernel_string_n — - Writes a string of given length to kernel memory -

Synopsis

-    set_kernel_string_n(addr:long,n:long,val:string)
-

Arguments

addr

- The kernel address to write the string to -

n

- The maximum length of the string -

val

- The string which is to be written -

Description

- Writes the given string up to a maximum given length to a - given kernel memory address. Reports an error on string copy fault. - Requires the use of guru mode (-g). -

diff --git a/tapsets/API-set-kernel-string.html b/tapsets/API-set-kernel-string.html deleted file mode 100644 index c8b4fecd..00000000 --- a/tapsets/API-set-kernel-string.html +++ /dev/null @@ -1,13 +0,0 @@ -function::set_kernel_string

Name

function::set_kernel_string — - Writes a string to kernel memory -

Synopsis

-    set_kernel_string(addr:long,val:string)
-

Arguments

addr

- The kernel address to write the string to -

val

- The string which is to be written -

Description

- Writes the given string to a given kernel - memory address. Reports an error on string copy fault. - Requires the use of guru mode (-g). -

diff --git a/tapsets/API-sid.html b/tapsets/API-sid.html deleted file mode 100644 index 8ca3ccf8..00000000 --- a/tapsets/API-sid.html +++ /dev/null @@ -1,11 +0,0 @@ -function::sid

Name

function::sid — - Returns the session ID of the current process -

Synopsis

-    sid:long()
-

Arguments

- None -

Description

- The session ID of a process is the process group ID - of the session leader. Session ID is stored in the signal_struct - since Kernel 2.6.0. -

diff --git a/tapsets/API-signal-check-ignored-return.html b/tapsets/API-signal-check-ignored-return.html deleted file mode 100644 index 70a98738..00000000 --- a/tapsets/API-signal-check-ignored-return.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::signal.check_ignored.return

Name

probe::signal.check_ignored.return — - Check to see signal is ignored completed -

Synopsis

signal.check_ignored.return 

Values

retstr

- Return value as a string -

name

- Name of the probe point -

diff --git a/tapsets/API-signal-check-ignored.html b/tapsets/API-signal-check-ignored.html deleted file mode 100644 index 5727c0b9..00000000 --- a/tapsets/API-signal-check-ignored.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::signal.check_ignored

Name

probe::signal.check_ignored — - Checking to see signal is ignored -

Synopsis

signal.check_ignored 

Values

sig_name

- A string representation of the signal -

sig

- The number of the signal -

pid_name

- Name of the process receiving the signal -

sig_pid

- The PID of the process receiving the signal -

diff --git a/tapsets/API-signal-checkperm-return.html b/tapsets/API-signal-checkperm-return.html deleted file mode 100644 index 082890e0..00000000 --- a/tapsets/API-signal-checkperm-return.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::signal.checkperm.return

Name

probe::signal.checkperm.return — - Check performed on a sent signal completed -

Synopsis

signal.checkperm.return 

Values

retstr

- Return value as a string -

name

- Name of the probe point -

diff --git a/tapsets/API-signal-checkperm.html b/tapsets/API-signal-checkperm.html deleted file mode 100644 index 86fb3dfd..00000000 --- a/tapsets/API-signal-checkperm.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::signal.checkperm

Name

probe::signal.checkperm — - Check being performed on a sent signal -

Synopsis

signal.checkperm 

Values

name

- Name of the probe point -

task

- A task handle to the signal recipient -

sinfo

- The address of the siginfo structure -

si_code

- Indicates the signal type -

sig_name

- A string representation of the signal -

sig

- The number of the signal -

pid_name

- Name of the process receiving the signal -

sig_pid

- The PID of the process receiving the signal -

diff --git a/tapsets/API-signal-do-action-return.html b/tapsets/API-signal-do-action-return.html deleted file mode 100644 index 0476191c..00000000 --- a/tapsets/API-signal-do-action-return.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::signal.do_action.return

Name

probe::signal.do_action.return — - Examining or changing a signal action completed -

Synopsis

signal.do_action.return 

Values

retstr

- Return value as a string -

name

- Name of the probe point -

diff --git a/tapsets/API-signal-do-action.html b/tapsets/API-signal-do-action.html deleted file mode 100644 index 772a75ac..00000000 --- a/tapsets/API-signal-do-action.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::signal.do_action

Name

probe::signal.do_action — - Examining or changing a signal action -

Synopsis

signal.do_action 

Values

sa_mask

- The new mask of the signal -

name

- Name of the probe point -

sig_name

- A string representation of the signal -

oldsigact_addr

- The address of the old sigaction - struct associated with the signal -

sig

- The signal to be examined/changed -

sa_handler

- The new handler of the signal -

sigact_addr

- The address of the new sigaction - struct associated with the signal -

diff --git a/tapsets/API-signal-flush.html b/tapsets/API-signal-flush.html deleted file mode 100644 index 5bae1964..00000000 --- a/tapsets/API-signal-flush.html +++ /dev/null @@ -1,13 +0,0 @@ -probe::signal.flush

Name

probe::signal.flush — - Flushing all pending signals for a task -

Synopsis

signal.flush 

Values

name

- Name of the probe point -

task

- The task handler of the process performing the flush -

pid_name

- The name of the process associated with the task - performing the flush -

sig_pid

- The PID of the process associated with the task - performing the flush -

diff --git a/tapsets/API-signal-force-segv-return.html b/tapsets/API-signal-force-segv-return.html deleted file mode 100644 index d2f55dcb..00000000 --- a/tapsets/API-signal-force-segv-return.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::signal.force_segv.return

Name

probe::signal.force_segv.return — - Forcing send of SIGSEGV complete -

Synopsis

signal.force_segv.return 

Values

retstr

- Return value as a string -

name

- Name of the probe point -

diff --git a/tapsets/API-signal-force-segv.html b/tapsets/API-signal-force-segv.html deleted file mode 100644 index 3965ad4d..00000000 --- a/tapsets/API-signal-force-segv.html +++ /dev/null @@ -1,13 +0,0 @@ -probe::signal.force_segv

Name

probe::signal.force_segv — - Forcing send of SIGSEGV -

Synopsis

signal.force_segv 

Values

name

- Name of the probe point -

sig_name

- A string representation of the signal -

sig

- The number of the signal -

pid_name

- Name of the process receiving the signal -

sig_pid

- The PID of the process receiving the signal -

diff --git a/tapsets/API-signal-handle-return.html b/tapsets/API-signal-handle-return.html deleted file mode 100644 index eb19d5af..00000000 --- a/tapsets/API-signal-handle-return.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::signal.handle.return

Name

probe::signal.handle.return — - Signal handler invocation completed -

Synopsis

signal.handle.return 

Values

retstr

- Return value as a string -

name

- Name of the probe point -

Description

- (deprecated in SystemTap 2.1) -

diff --git a/tapsets/API-signal-handle.html b/tapsets/API-signal-handle.html deleted file mode 100644 index 4b234a9d..00000000 --- a/tapsets/API-signal-handle.html +++ /dev/null @@ -1,24 +0,0 @@ -probe::signal.handle

Name

probe::signal.handle — - Signal handler being invoked -

Synopsis

signal.handle 

Values

regs

- The address of the kernel-mode stack area (deprecated in - SystemTap 2.1) -

sig_code

- The si_code value of the siginfo signal -

name

- Name of the probe point -

sig_mode

- Indicates whether the signal was a user-mode or kernel-mode signal -

sinfo

- The address of the siginfo table -

sig_name

- A string representation of the signal -

oldset_addr

- The address of the bitmask array of blocked signals - (deprecated in SystemTap 2.1) -

sig

- The signal number that invoked the signal handler -

ka_addr

- The address of the k_sigaction table - associated with the signal -

diff --git a/tapsets/API-signal-pending-return.html b/tapsets/API-signal-pending-return.html deleted file mode 100644 index 7e4ddeae..00000000 --- a/tapsets/API-signal-pending-return.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::signal.pending.return

Name

probe::signal.pending.return — - Examination of pending signal completed -

Synopsis

signal.pending.return 

Values

retstr

- Return value as a string -

name

- Name of the probe point -

diff --git a/tapsets/API-signal-pending.html b/tapsets/API-signal-pending.html deleted file mode 100644 index ba53ea46..00000000 --- a/tapsets/API-signal-pending.html +++ /dev/null @@ -1,14 +0,0 @@ -probe::signal.pending

Name

probe::signal.pending — - Examining pending signal -

Synopsis

signal.pending 

Values

name

- Name of the probe point -

sigset_size

- The size of the user-space signal set -

sigset_add

- The address of the user-space signal set - (sigset_t) -

Description

- This probe is used to examine a set of signals pending for delivery - to a specific thread. This normally occurs when the - do_sigpending kernel function is executed. -

diff --git a/tapsets/API-signal-procmask-return.html b/tapsets/API-signal-procmask-return.html deleted file mode 100644 index 3f47265e..00000000 --- a/tapsets/API-signal-procmask-return.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::signal.procmask.return

Name

probe::signal.procmask.return — - Examining or changing blocked signals completed -

Synopsis

signal.procmask.return 

Values

retstr

- Return value as a string -

name

- Name of the probe point -

diff --git a/tapsets/API-signal-procmask.html b/tapsets/API-signal-procmask.html deleted file mode 100644 index d57a04b8..00000000 --- a/tapsets/API-signal-procmask.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::signal.procmask

Name

probe::signal.procmask — - Examining or changing blocked signals -

Synopsis

signal.procmask 

Values

how

- Indicates how to change the blocked signals; possible values are - SIG_BLOCK=0 (for blocking signals), - SIG_UNBLOCK=1 (for unblocking signals), and - SIG_SETMASK=2 for setting the signal mask. -

name

- Name of the probe point -

oldsigset_addr

- The old address of the signal set - (sigset_t) -

sigset

- The actual value to be set for sigset_t - (correct?) -

sigset_addr

- The address of the signal set (sigset_t) - to be implemented -

diff --git a/tapsets/API-signal-send-return.html b/tapsets/API-signal-send-return.html deleted file mode 100644 index 621a2f8c..00000000 --- a/tapsets/API-signal-send-return.html +++ /dev/null @@ -1,44 +0,0 @@ -probe::signal.send.return

Name

probe::signal.send.return — - Signal being sent to a process completed (deprecated in SystemTap 2.1) -

Synopsis

signal.send.return 

Values

retstr

- The return value to either __group_send_sig_info, specific_send_sig_info, or send_sigqueue -

send2queue

- Indicates whether the sent signal was sent to an existing sigqueue -

name

- The name of the function used to send out the signal -

shared

- Indicates whether the sent signal is shared by the thread group. -

Context

- The signal's sender. (correct?) -

Description

- Possible __group_send_sig_info and - specific_send_sig_info return values are as follows; -

- - 0 -- The signal is successfully sent to a process, - which means that, (1) the signal was ignored by the receiving process, - (2) this is a non-RT signal and the system already has one queued, and - (3) the signal was successfully added to the sigqueue of the receiving process. -

- - -EAGAIN -- The sigqueue of the receiving process is - overflowing, the signal was RT, and the signal was sent by a user using something other - than kill. -

- - Possible send_group_sigqueue and - send_sigqueue return values are as follows; -

- - 0 -- The signal was either successfully added into the - sigqueue of the receiving process, or a SI_TIMER entry is already - queued (in which case, the overrun count will be simply incremented). -

- - 1 -- The signal was ignored by the receiving process. -

- - -1 -- (send_sigqueue only) The task was marked - exiting, allowing * posix_timer_event to redirect it to the group - leader. -

diff --git a/tapsets/API-signal-send-sig-queue-return.html b/tapsets/API-signal-send-sig-queue-return.html deleted file mode 100644 index 65f29e51..00000000 --- a/tapsets/API-signal-send-sig-queue-return.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::signal.send_sig_queue.return

Name

probe::signal.send_sig_queue.return — - Queuing a signal to a process completed -

Synopsis

signal.send_sig_queue.return 

Values

retstr

- Return value as a string -

name

- Name of the probe point -

diff --git a/tapsets/API-signal-send-sig-queue.html b/tapsets/API-signal-send-sig-queue.html deleted file mode 100644 index 61364a05..00000000 --- a/tapsets/API-signal-send-sig-queue.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::signal.send_sig_queue

Name

probe::signal.send_sig_queue — - Queuing a signal to a process -

Synopsis

signal.send_sig_queue 

Values

sigqueue_addr

- The address of the signal queue -

name

- Name of the probe point -

sig_name

- A string representation of the signal -

sig

- The queued signal -

pid_name

- Name of the process to which the signal is queued -

sig_pid

- The PID of the process to which the signal is queued -

diff --git a/tapsets/API-signal-send.html b/tapsets/API-signal-send.html deleted file mode 100644 index 17fdbf81..00000000 --- a/tapsets/API-signal-send.html +++ /dev/null @@ -1,26 +0,0 @@ -probe::signal.send

Name

probe::signal.send — - Signal being sent to a process -

Synopsis

signal.send 

Values

send2queue

- Indicates whether the signal is sent to an existing - sigqueue (deprecated in SystemTap 2.1) -

name

- The name of the function used to send out the signal -

task

- A task handle to the signal recipient -

sinfo

- The address of siginfo struct -

si_code

- Indicates the signal type -

sig_name

- A string representation of the signal -

sig

- The number of the signal -

shared

- Indicates whether the signal is shared by the thread group -

sig_pid

- The PID of the process receiving the signal -

pid_name

- The name of the signal recipient -

Context

- The signal's sender. -

diff --git a/tapsets/API-signal-str.html b/tapsets/API-signal-str.html deleted file mode 100644 index 1959fa68..00000000 --- a/tapsets/API-signal-str.html +++ /dev/null @@ -1,7 +0,0 @@ -function::signal_str

Name

function::signal_str — - Returns the string representation of a signal number -

Synopsis

-    signal_str(num:)
-

Arguments

num

- the signal number to convert to string. -

diff --git a/tapsets/API-signal-sys-tgkill-return.html b/tapsets/API-signal-sys-tgkill-return.html deleted file mode 100644 index cc56ce08..00000000 --- a/tapsets/API-signal-sys-tgkill-return.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::signal.sys_tgkill.return

Name

probe::signal.sys_tgkill.return — - Sending kill signal to a thread group completed -

Synopsis

signal.sys_tgkill.return 

Values

retstr

- The return value to either __group_send_sig_info, -

name

- Name of the probe point -

diff --git a/tapsets/API-signal-sys-tgkill.html b/tapsets/API-signal-sys-tgkill.html deleted file mode 100644 index 0e7af323..00000000 --- a/tapsets/API-signal-sys-tgkill.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::signal.sys_tgkill

Name

probe::signal.sys_tgkill — - Sending kill signal to a thread group -

Synopsis

signal.sys_tgkill 

Values

name

- Name of the probe point -

sig_name

- A string representation of the signal -

sig

- The specific kill signal sent to the process -

tgid

- The thread group ID of the thread receiving the kill signal -

pid_name

- The name of the signal recipient -

sig_pid

- The PID of the thread receiving the kill signal -

Description

- The tgkill call is similar to tkill, - except that it also allows the caller to specify the thread group ID of - the thread to be signalled. This protects against TID reuse. -

diff --git a/tapsets/API-signal-sys-tkill.html b/tapsets/API-signal-sys-tkill.html deleted file mode 100644 index 9980b1d1..00000000 --- a/tapsets/API-signal-sys-tkill.html +++ /dev/null @@ -1,18 +0,0 @@ -probe::signal.sys_tkill

Name

probe::signal.sys_tkill — - Sending a kill signal to a thread -

Synopsis

signal.sys_tkill 

Values

name

- Name of the probe point -

sig_name

- A string representation of the signal -

sig

- The specific signal sent to the process -

pid_name

- The name of the signal recipient -

sig_pid

- The PID of the process receiving the kill signal -

Description

- The tkill call is analogous to kill(2), - except that it also allows a process within a specific thread group to - be targeted. Such processes are targeted through their unique - thread IDs (TID). -

diff --git a/tapsets/API-signal-syskill-return.html b/tapsets/API-signal-syskill-return.html deleted file mode 100644 index c26ea70b..00000000 --- a/tapsets/API-signal-syskill-return.html +++ /dev/null @@ -1,5 +0,0 @@ -probe::signal.syskill.return

Name

probe::signal.syskill.return — - Sending kill signal completed -

Synopsis

signal.syskill.return 

Values

- None -

diff --git a/tapsets/API-signal-syskill.html b/tapsets/API-signal-syskill.html deleted file mode 100644 index 20054954..00000000 --- a/tapsets/API-signal-syskill.html +++ /dev/null @@ -1,13 +0,0 @@ -probe::signal.syskill

Name

probe::signal.syskill — - Sending kill signal to a process -

Synopsis

signal.syskill 

Values

name

- Name of the probe point -

sig_name

- A string representation of the signal -

sig

- The specific signal sent to the process -

pid_name

- The name of the signal recipient -

sig_pid

- The PID of the process receiving the signal -

diff --git a/tapsets/API-signal-systkill-return.html b/tapsets/API-signal-systkill-return.html deleted file mode 100644 index 5e6ad037..00000000 --- a/tapsets/API-signal-systkill-return.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::signal.systkill.return

Name

probe::signal.systkill.return — - Sending kill signal to a thread completed -

Synopsis

signal.systkill.return 

Values

retstr

- The return value to either __group_send_sig_info, -

name

- Name of the probe point -

diff --git a/tapsets/API-signal-wakeup.html b/tapsets/API-signal-wakeup.html deleted file mode 100644 index 7f13c19d..00000000 --- a/tapsets/API-signal-wakeup.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::signal.wakeup

Name

probe::signal.wakeup — - Sleeping process being wakened for signal -

Synopsis

signal.wakeup 

Values

resume

- Indicates whether to wake up a task in a - STOPPED or TRACED state -

state_mask

- A string representation indicating the mask - of task states to wake. Possible values are - TASK_INTERRUPTIBLE, TASK_STOPPED, - TASK_TRACED, TASK_WAKEKILL, and TASK_INTERRUPTIBLE. -

pid_name

- Name of the process to wake -

sig_pid

- The PID of the process to wake -

diff --git a/tapsets/API-sigset-mask-str.html b/tapsets/API-sigset-mask-str.html deleted file mode 100644 index e51749f5..00000000 --- a/tapsets/API-sigset-mask-str.html +++ /dev/null @@ -1,7 +0,0 @@ -function::sigset_mask_str

Name

function::sigset_mask_str — - Returns the string representation of a sigset -

Synopsis

-    sigset_mask_str:string(mask:long)
-

Arguments

mask

- the sigset to convert to string. -

diff --git a/tapsets/API-sock-fam-num2str.html b/tapsets/API-sock-fam-num2str.html deleted file mode 100644 index 1f415ac0..00000000 --- a/tapsets/API-sock-fam-num2str.html +++ /dev/null @@ -1,7 +0,0 @@ -function::sock_fam_num2str

Name

function::sock_fam_num2str — - Given a protocol family number, return a string representation -

Synopsis

-    sock_fam_num2str:string(family:long)
-

Arguments

family

- The family number -

diff --git a/tapsets/API-sock-fam-str2num.html b/tapsets/API-sock-fam-str2num.html deleted file mode 100644 index 73a4d2cf..00000000 --- a/tapsets/API-sock-fam-str2num.html +++ /dev/null @@ -1,7 +0,0 @@ -function::sock_fam_str2num

Name

function::sock_fam_str2num — - Given a protocol family name (string), return the corresponding protocol family number -

Synopsis

-    sock_fam_str2num:long(family:string)
-

Arguments

family

- The family name -

diff --git a/tapsets/API-sock-prot-num2str.html b/tapsets/API-sock-prot-num2str.html deleted file mode 100644 index 492a030f..00000000 --- a/tapsets/API-sock-prot-num2str.html +++ /dev/null @@ -1,7 +0,0 @@ -function::sock_prot_num2str

Name

function::sock_prot_num2str — - Given a protocol number, return a string representation -

Synopsis

-    sock_prot_num2str:string(proto:long)
-

Arguments

proto

- The protocol number -

diff --git a/tapsets/API-sock-prot-str2num.html b/tapsets/API-sock-prot-str2num.html deleted file mode 100644 index 855b4b07..00000000 --- a/tapsets/API-sock-prot-str2num.html +++ /dev/null @@ -1,7 +0,0 @@ -function::sock_prot_str2num

Name

function::sock_prot_str2num — - Given a protocol name (string), return the corresponding protocol number -

Synopsis

-    sock_prot_str2num:long(proto:string)
-

Arguments

proto

- The protocol name -

diff --git a/tapsets/API-sock-state-num2str.html b/tapsets/API-sock-state-num2str.html deleted file mode 100644 index df1bf9d8..00000000 --- a/tapsets/API-sock-state-num2str.html +++ /dev/null @@ -1,7 +0,0 @@ -function::sock_state_num2str

Name

function::sock_state_num2str — - Given a socket state number, return a string representation -

Synopsis

-    sock_state_num2str:string(state:long)
-

Arguments

state

- The state number -

diff --git a/tapsets/API-sock-state-str2num.html b/tapsets/API-sock-state-str2num.html deleted file mode 100644 index 9c993caa..00000000 --- a/tapsets/API-sock-state-str2num.html +++ /dev/null @@ -1,7 +0,0 @@ -function::sock_state_str2num

Name

function::sock_state_str2num — - Given a socket state string, return the corresponding state number -

Synopsis

-    sock_state_str2num:long(state:string)
-

Arguments

state

- The state name -

diff --git a/tapsets/API-socket-aio-read-return.html b/tapsets/API-socket-aio-read-return.html deleted file mode 100644 index fda68014..00000000 --- a/tapsets/API-socket-aio-read-return.html +++ /dev/null @@ -1,24 +0,0 @@ -probe::socket.aio_read.return

Name

probe::socket.aio_read.return — - Conclusion of message received via sock_aio_read -

Synopsis

socket.aio_read.return 

Values

success

- Was receive successful? (1 = yes, 0 = no) -

protocol

- Protocol value -

flags

- Socket flags value -

name

- Name of this probe -

state

- Socket state value -

size

- Size of message received (in bytes) or error code if success = 0 -

type

- Socket type value -

family

- Protocol family value -

Context

- The message receiver. -

Description

- Fires at the conclusion of receiving a message on a socket - via the sock_aio_read function -

diff --git a/tapsets/API-socket-aio-read.html b/tapsets/API-socket-aio-read.html deleted file mode 100644 index ee868da9..00000000 --- a/tapsets/API-socket-aio-read.html +++ /dev/null @@ -1,22 +0,0 @@ -probe::socket.aio_read

Name

probe::socket.aio_read — - Receiving message via sock_aio_read -

Synopsis

socket.aio_read 

Values

protocol

- Protocol value -

flags

- Socket flags value -

name

- Name of this probe -

state

- Socket state value -

size

- Message size in bytes -

type

- Socket type value -

family

- Protocol family value -

Context

- The message sender -

Description

- Fires at the beginning of receiving a message on a socket - via the sock_aio_read function -

diff --git a/tapsets/API-socket-aio-write-return.html b/tapsets/API-socket-aio-write-return.html deleted file mode 100644 index 90853a9c..00000000 --- a/tapsets/API-socket-aio-write-return.html +++ /dev/null @@ -1,24 +0,0 @@ -probe::socket.aio_write.return

Name

probe::socket.aio_write.return — - Conclusion of message send via sock_aio_write -

Synopsis

socket.aio_write.return 

Values

success

- Was receive successful? (1 = yes, 0 = no) -

protocol

- Protocol value -

flags

- Socket flags value -

name

- Name of this probe -

state

- Socket state value -

size

- Size of message received (in bytes) or error code if success = 0 -

type

- Socket type value -

family

- Protocol family value -

Context

- The message receiver. -

Description

- Fires at the conclusion of sending a message on a socket - via the sock_aio_write function -

diff --git a/tapsets/API-socket-aio-write.html b/tapsets/API-socket-aio-write.html deleted file mode 100644 index 0b318589..00000000 --- a/tapsets/API-socket-aio-write.html +++ /dev/null @@ -1,22 +0,0 @@ -probe::socket.aio_write

Name

probe::socket.aio_write — - Message send via sock_aio_write -

Synopsis

socket.aio_write 

Values

protocol

- Protocol value -

flags

- Socket flags value -

name

- Name of this probe -

state

- Socket state value -

size

- Message size in bytes -

type

- Socket type value -

family

- Protocol family value -

Context

- The message sender -

Description

- Fires at the beginning of sending a message on a socket - via the sock_aio_write function -

diff --git a/tapsets/API-socket-close-return.html b/tapsets/API-socket-close-return.html deleted file mode 100644 index 9ae32ef2..00000000 --- a/tapsets/API-socket-close-return.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::socket.close.return

Name

probe::socket.close.return — - Return from closing a socket -

Synopsis

socket.close.return 

Values

name

- Name of this probe -

Context

- The requester (user process or kernel) -

Description

- Fires at the conclusion of closing a socket. -

diff --git a/tapsets/API-socket-close.html b/tapsets/API-socket-close.html deleted file mode 100644 index 3214721b..00000000 --- a/tapsets/API-socket-close.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::socket.close

Name

probe::socket.close — - Close a socket -

Synopsis

socket.close 

Values

protocol

- Protocol value -

flags

- Socket flags value -

name

- Name of this probe -

state

- Socket state value -

type

- Socket type value -

family

- Protocol family value -

Context

- The requester (user process or kernel) -

Description

- Fires at the beginning of closing a socket. -

diff --git a/tapsets/API-socket-create-return.html b/tapsets/API-socket-create-return.html deleted file mode 100644 index 040b541d..00000000 --- a/tapsets/API-socket-create-return.html +++ /dev/null @@ -1,21 +0,0 @@ -probe::socket.create.return

Name

probe::socket.create.return — - Return from Creation of a socket -

Synopsis

socket.create.return 

Values

success

- Was socket creation successful? (1 = yes, 0 = no) -

protocol

- Protocol value -

err

- Error code if success == 0 -

name

- Name of this probe -

requester

- Requested by user process or the kernel (1 = kernel, 0 = user) -

type

- Socket type value -

family

- Protocol family value -

Context

- The requester (user process or kernel) -

Description

- Fires at the conclusion of creating a socket. -

diff --git a/tapsets/API-socket-create.html b/tapsets/API-socket-create.html deleted file mode 100644 index b200f495..00000000 --- a/tapsets/API-socket-create.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::socket.create

Name

probe::socket.create — - Creation of a socket -

Synopsis

socket.create 

Values

protocol

- Protocol value -

name

- Name of this probe -

requester

- Requested by user process or the kernel (1 = kernel, 0 = user) -

type

- Socket type value -

family

- Protocol family value -

Context

- The requester (see requester variable) -

Description

- Fires at the beginning of creating a socket. -

diff --git a/tapsets/API-socket-readv-return.html b/tapsets/API-socket-readv-return.html deleted file mode 100644 index 470273e8..00000000 --- a/tapsets/API-socket-readv-return.html +++ /dev/null @@ -1,24 +0,0 @@ -probe::socket.readv.return

Name

probe::socket.readv.return — - Conclusion of receiving a message via sock_readv -

Synopsis

socket.readv.return 

Values

success

- Was receive successful? (1 = yes, 0 = no) -

protocol

- Protocol value -

flags

- Socket flags value -

name

- Name of this probe -

state

- Socket state value -

size

- Size of message received (in bytes) or error code if success = 0 -

type

- Socket type value -

family

- Protocol family value -

Context

- The message receiver. -

Description

- Fires at the conclusion of receiving a message on a socket - via the sock_readv function -

diff --git a/tapsets/API-socket-readv.html b/tapsets/API-socket-readv.html deleted file mode 100644 index a3c98423..00000000 --- a/tapsets/API-socket-readv.html +++ /dev/null @@ -1,22 +0,0 @@ -probe::socket.readv

Name

probe::socket.readv — - Receiving a message via sock_readv -

Synopsis

socket.readv 

Values

protocol

- Protocol value -

flags

- Socket flags value -

name

- Name of this probe -

state

- Socket state value -

size

- Message size in bytes -

type

- Socket type value -

family

- Protocol family value -

Context

- The message sender -

Description

- Fires at the beginning of receiving a message on a socket - via the sock_readv function -

diff --git a/tapsets/API-socket-receive.html b/tapsets/API-socket-receive.html deleted file mode 100644 index ba440c68..00000000 --- a/tapsets/API-socket-receive.html +++ /dev/null @@ -1,21 +0,0 @@ -probe::socket.receive

Name

probe::socket.receive — - Message received on a socket. -

Synopsis

socket.receive 

Values

success

- Was send successful? (1 = yes, 0 = no) -

protocol

- Protocol value -

flags

- Socket flags value -

name

- Name of this probe -

state

- Socket state value -

size

- Size of message received (in bytes) or error code if success = 0 -

type

- Socket type value -

family

- Protocol family value -

Context

- The message receiver -

diff --git a/tapsets/API-socket-recvmsg-return.html b/tapsets/API-socket-recvmsg-return.html deleted file mode 100644 index 1d36dc56..00000000 --- a/tapsets/API-socket-recvmsg-return.html +++ /dev/null @@ -1,24 +0,0 @@ -probe::socket.recvmsg.return

Name

probe::socket.recvmsg.return — - Return from Message being received on socket -

Synopsis

socket.recvmsg.return 

Values

success

- Was receive successful? (1 = yes, 0 = no) -

protocol

- Protocol value -

flags

- Socket flags value -

name

- Name of this probe -

state

- Socket state value -

size

- Size of message received (in bytes) or error code if success = 0 -

type

- Socket type value -

family

- Protocol family value -

Context

- The message receiver. -

Description

- Fires at the conclusion of receiving a message on a socket - via the sock_recvmsg function. -

diff --git a/tapsets/API-socket-recvmsg.html b/tapsets/API-socket-recvmsg.html deleted file mode 100644 index 3eaabe18..00000000 --- a/tapsets/API-socket-recvmsg.html +++ /dev/null @@ -1,22 +0,0 @@ -probe::socket.recvmsg

Name

probe::socket.recvmsg — - Message being received on socket -

Synopsis

socket.recvmsg 

Values

protocol

- Protocol value -

flags

- Socket flags value -

name

- Name of this probe -

state

- Socket state value -

size

- Message size in bytes -

type

- Socket type value -

family

- Protocol family value -

Context

- The message receiver. -

Description

- Fires at the beginning of receiving a message on a socket - via the sock_recvmsg function -

diff --git a/tapsets/API-socket-send.html b/tapsets/API-socket-send.html deleted file mode 100644 index fb64f4fb..00000000 --- a/tapsets/API-socket-send.html +++ /dev/null @@ -1,21 +0,0 @@ -probe::socket.send

Name

probe::socket.send — - Message sent on a socket. -

Synopsis

socket.send 

Values

success

- Was send successful? (1 = yes, 0 = no) -

protocol

- Protocol value -

flags

- Socket flags value -

name

- Name of this probe -

state

- Socket state value -

size

- Size of message sent (in bytes) or error code if success = 0 -

type

- Socket type value -

family

- Protocol family value -

Context

- The message sender -

diff --git a/tapsets/API-socket-sendmsg-return.html b/tapsets/API-socket-sendmsg-return.html deleted file mode 100644 index c4f2ca54..00000000 --- a/tapsets/API-socket-sendmsg-return.html +++ /dev/null @@ -1,24 +0,0 @@ -probe::socket.sendmsg.return

Name

probe::socket.sendmsg.return — - Return from socket.sendmsg. -

Synopsis

socket.sendmsg.return 

Values

success

- Was send successful? (1 = yes, 0 = no) -

protocol

- Protocol value -

flags

- Socket flags value -

name

- Name of this probe -

state

- Socket state value -

size

- Size of message sent (in bytes) or error code if success = 0 -

type

- Socket type value -

family

- Protocol family value -

Context

- The message sender. -

Description

- Fires at the conclusion of sending a message on a socket - via the sock_sendmsg function -

diff --git a/tapsets/API-socket-sendmsg.html b/tapsets/API-socket-sendmsg.html deleted file mode 100644 index f2d31b35..00000000 --- a/tapsets/API-socket-sendmsg.html +++ /dev/null @@ -1,22 +0,0 @@ -probe::socket.sendmsg

Name

probe::socket.sendmsg — - Message is currently being sent on a socket. -

Synopsis

socket.sendmsg 

Values

protocol

- Protocol value -

flags

- Socket flags value -

name

- Name of this probe -

state

- Socket state value -

size

- Message size in bytes -

type

- Socket type value -

family

- Protocol family value -

Context

- The message sender -

Description

- Fires at the beginning of sending a message on a socket - via the sock_sendmsg function -

diff --git a/tapsets/API-socket-writev-return.html b/tapsets/API-socket-writev-return.html deleted file mode 100644 index e19142c6..00000000 --- a/tapsets/API-socket-writev-return.html +++ /dev/null @@ -1,24 +0,0 @@ -probe::socket.writev.return

Name

probe::socket.writev.return — - Conclusion of message sent via socket_writev -

Synopsis

socket.writev.return 

Values

success

- Was send successful? (1 = yes, 0 = no) -

protocol

- Protocol value -

flags

- Socket flags value -

name

- Name of this probe -

state

- Socket state value -

size

- Size of message sent (in bytes) or error code if success = 0 -

type

- Socket type value -

family

- Protocol family value -

Context

- The message receiver. -

Description

- Fires at the conclusion of sending a message on a socket - via the sock_writev function -

diff --git a/tapsets/API-socket-writev.html b/tapsets/API-socket-writev.html deleted file mode 100644 index c5f2331b..00000000 --- a/tapsets/API-socket-writev.html +++ /dev/null @@ -1,22 +0,0 @@ -probe::socket.writev

Name

probe::socket.writev — - Message sent via socket_writev -

Synopsis

socket.writev 

Values

protocol

- Protocol value -

flags

- Socket flags value -

name

- Name of this probe -

state

- Socket state value -

size

- Message size in bytes -

type

- Socket type value -

family

- Protocol family value -

Context

- The message sender -

Description

- Fires at the beginning of sending a message on a socket - via the sock_writev function -

diff --git a/tapsets/API-softirq-entry.html b/tapsets/API-softirq-entry.html deleted file mode 100644 index 60ef54b2..00000000 --- a/tapsets/API-softirq-entry.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::softirq.entry

Name

probe::softirq.entry — - Execution of handler for a pending softirq starting -

Synopsis

softirq.entry 

Values

vec

- softirq_action vector -

h

- struct softirq_action* for current pending softirq -

vec_nr

- softirq vector number -

action

- pointer to softirq handler just about to execute -

diff --git a/tapsets/API-softirq-exit.html b/tapsets/API-softirq-exit.html deleted file mode 100644 index 14fd4e32..00000000 --- a/tapsets/API-softirq-exit.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::softirq.exit

Name

probe::softirq.exit — - Execution of handler for a pending softirq completed -

Synopsis

softirq.exit 

Values

vec

- softirq_action vector -

h

- struct softirq_action* for just executed softirq -

vec_nr

- softirq vector number -

action

- pointer to softirq handler that just finished execution -

diff --git a/tapsets/API-speculate.html b/tapsets/API-speculate.html deleted file mode 100644 index 31e13c20..00000000 --- a/tapsets/API-speculate.html +++ /dev/null @@ -1,11 +0,0 @@ -function::speculate

Name

function::speculate — - Store a string for possible output later -

Synopsis

-    speculate(id:long,output:string)
-

Arguments

id

- buffer id to store the information in -

output

- string to write out when commit occurs -

Description

- Add a string to the speculaive buffer for id. -

diff --git a/tapsets/API-speculation.html b/tapsets/API-speculation.html deleted file mode 100644 index fb9b05af..00000000 --- a/tapsets/API-speculation.html +++ /dev/null @@ -1,15 +0,0 @@ -function::speculation

Name

function::speculation — - Allocate a new id for speculative output -

Synopsis

-    speculation:long()
-

Arguments

- None -

Description

-

- - The speculation function is called when a new speculation buffer is needed. - It returns an id for the speculative output. - There can be multiple threads being speculated on concurrently. - This id is used by other speculation functions to keep the threads - separate. -

diff --git a/tapsets/API-sprint-backtrace.html b/tapsets/API-sprint-backtrace.html deleted file mode 100644 index 50cf89ed..00000000 --- a/tapsets/API-sprint-backtrace.html +++ /dev/null @@ -1,21 +0,0 @@ -function::sprint_backtrace

Name

function::sprint_backtrace — - Return stack back trace as string -

Synopsis

-    sprint_backtrace:string()
-

Arguments

- None -

Description

-

- - Returns a simple (kernel) backtrace. One line per address. - Includes the symbol name (or hex address if symbol - couldn't be resolved) and module name (if found). Includes the - offset from the start of the function if found, otherwise the - offset will be added to the module (if found, between - brackets). Returns the backtrace as string (each line terminated by - a newline character). Note that the returned stack will be - truncated to MAXSTRINGLEN, to print fuller and richer stacks use - print_backtrace. Equivalent to sprint_stack(backtrace), - but more efficient (no need to translate between hex strings and - final backtrace string). -

diff --git a/tapsets/API-sprint-stack.html b/tapsets/API-sprint-stack.html deleted file mode 100644 index aa0000c7..00000000 --- a/tapsets/API-sprint-stack.html +++ /dev/null @@ -1,23 +0,0 @@ -function::sprint_stack

Name

function::sprint_stack — - Return stack for kernel addresses from string -

Synopsis

-    sprint_stack:string(stk:string)
-

Arguments

stk

- String with list of hexadecimal (kernel) addresses -

Description

- Perform a symbolic lookup of the addresses in the given string, - which is assumed to be the result of a prior call to backtrace. -

- - Returns a simple backtrace from the given hex string. One line per - address. Includes the symbol name (or hex address if symbol - couldn't be resolved) and module name (if found). Includes the - offset from the start of the function if found, otherwise the - offset will be added to the module (if found, between - brackets). Returns the backtrace as string (each line terminated by - a newline character). Note that the returned stack will be - truncated to MAXSTRINGLEN, to print fuller and richer stacks use - print_stack. -

NOTE

- it is recommended to use sprint_syms instead of this function. -

diff --git a/tapsets/API-sprint-syms.html b/tapsets/API-sprint-syms.html deleted file mode 100644 index 52da5ba6..00000000 --- a/tapsets/API-sprint-syms.html +++ /dev/null @@ -1,22 +0,0 @@ -function::sprint_syms

Name

function::sprint_syms — - Return stack for kernel addresses from string -

Synopsis

-    sprint_syms(callers:string)
-

Arguments

callers

- String with list of hexadecimal (kernel) addresses -

Description

- Perform a symbolic lookup of the addresses in the given string, - which are assumed to be the result of a prior calls to stack, - callers, and similar functions. -

- - Returns a simple backtrace from the given hex string. One line per - address. Includes the symbol name (or hex address if symbol - couldn't be resolved) and module name (if found), as obtained from - symdata. Includes the offset from the start of the function if - found, otherwise the offset will be added to the module (if found, between - brackets). Returns the backtrace as string (each line terminated by - a newline character). Note that the returned stack will be - truncated to MAXSTRINGLEN, to print fuller and richer stacks use - print_syms. -

diff --git a/tapsets/API-sprint-ubacktrace.html b/tapsets/API-sprint-ubacktrace.html deleted file mode 100644 index 3f2dfa93..00000000 --- a/tapsets/API-sprint-ubacktrace.html +++ /dev/null @@ -1,25 +0,0 @@ -function::sprint_ubacktrace

Name

function::sprint_ubacktrace — - Return stack back trace for current user-space task as string. -

Synopsis

-    sprint_ubacktrace:string()
-

Arguments

- None -

Description

-

- - Returns a simple backtrace for the current task. One line per - address. Includes the symbol name (or hex address if symbol - couldn't be resolved) and module name (if found). Includes the - offset from the start of the function if found, otherwise the - offset will be added to the module (if found, between - brackets). Returns the backtrace as string (each line terminated by - a newline character). Note that the returned stack will be - truncated to MAXSTRINGLEN, to print fuller and richer stacks use - print_ubacktrace. Equivalent to sprint_ustack(ubacktrace), - but more efficient (no need to translate between hex strings and - final backtrace string). -

Note

- To get (full) backtraces for user space applications and shared - shared libraries not mentioned in the current script run stap with - -d /path/to/exe-or-so and/or add --ldd to load all needed unwind data. -

diff --git a/tapsets/API-sprint-ustack.html b/tapsets/API-sprint-ustack.html deleted file mode 100644 index 9a0639e3..00000000 --- a/tapsets/API-sprint-ustack.html +++ /dev/null @@ -1,24 +0,0 @@ -function::sprint_ustack

Name

function::sprint_ustack — - Return stack for the current task from string. -

Synopsis

-    sprint_ustack:string(stk:string)
-

Arguments

stk

- String with list of hexadecimal addresses for the current task. -

Description

- Perform a symbolic lookup of the addresses in the given string, - which is assumed to be the result of a prior call to - ubacktrace for the current task. -

- - Returns a simple backtrace from the given hex string. One line per - address. Includes the symbol name (or hex address if symbol - couldn't be resolved) and module name (if found). Includes the - offset from the start of the function if found, otherwise the - offset will be added to the module (if found, between - brackets). Returns the backtrace as string (each line terminated by - a newline character). Note that the returned stack will be - truncated to MAXSTRINGLEN, to print fuller and richer stacks use - print_ustack. -

NOTE

- it is recommended to use sprint_usyms instead of this function. -

diff --git a/tapsets/API-sprint-usyms.html b/tapsets/API-sprint-usyms.html deleted file mode 100644 index b4be3478..00000000 --- a/tapsets/API-sprint-usyms.html +++ /dev/null @@ -1,22 +0,0 @@ -function::sprint_usyms

Name

function::sprint_usyms — - Return stack for user addresses from string -

Synopsis

-    sprint_usyms(callers:string)
-

Arguments

callers

- String with list of hexadecimal (user) addresses -

Description

- Perform a symbolic lookup of the addresses in the given string, - which are assumed to be the result of a prior calls to ustack, - ucallers, and similar functions. -

- - Returns a simple backtrace from the given hex string. One line per - address. Includes the symbol name (or hex address if symbol - couldn't be resolved) and module name (if found), as obtained from - usymdata. Includes the offset from the start of the function if - found, otherwise the offset will be added to the module (if found, between - brackets). Returns the backtrace as string (each line terminated by - a newline character). Note that the returned stack will be - truncated to MAXSTRINGLEN, to print fuller and richer stacks use - print_usyms. -

diff --git a/tapsets/API-stack-size.html b/tapsets/API-stack-size.html deleted file mode 100644 index be8b6e5d..00000000 --- a/tapsets/API-stack-size.html +++ /dev/null @@ -1,9 +0,0 @@ -function::stack_size

Name

function::stack_size — - Return the size of the kernel stack -

Synopsis

-    stack_size:long()
-

Arguments

- None -

Description

- This function returns the size of the kernel stack. -

diff --git a/tapsets/API-stack-unused.html b/tapsets/API-stack-unused.html deleted file mode 100644 index b153aa09..00000000 --- a/tapsets/API-stack-unused.html +++ /dev/null @@ -1,10 +0,0 @@ -function::stack_unused

Name

function::stack_unused — - Returns the amount of kernel stack currently available -

Synopsis

-    stack_unused:long()
-

Arguments

- None -

Description

- This function determines how many bytes are - currently available in the kernel stack. -

diff --git a/tapsets/API-stack-used.html b/tapsets/API-stack-used.html deleted file mode 100644 index 18c2ecd2..00000000 --- a/tapsets/API-stack-used.html +++ /dev/null @@ -1,10 +0,0 @@ -function::stack_used

Name

function::stack_used — - Returns the amount of kernel stack used -

Synopsis

-    stack_used:long()
-

Arguments

- None -

Description

- This function determines how many bytes are - currently used in the kernel stack. -

diff --git a/tapsets/API-stack.html b/tapsets/API-stack.html deleted file mode 100644 index 5486b77e..00000000 --- a/tapsets/API-stack.html +++ /dev/null @@ -1,12 +0,0 @@ -function::stack

Name

function::stack — - Return address at given depth of kernel stack backtrace -

Synopsis

-    stack:long(n:long)
-

Arguments

n

- number of levels to descend in the stack. -

Description

- Performs a simple (kernel) backtrace, and returns the - element at the specified position. The results of the backtrace itself - are cached, so that the backtrace computation is performed at most once - no matter how many times stack is called, or in what order. -

diff --git a/tapsets/API-stap-cache-add-mod.html b/tapsets/API-stap-cache-add-mod.html deleted file mode 100644 index a84f3bb5..00000000 --- a/tapsets/API-stap-cache-add-mod.html +++ /dev/null @@ -1,10 +0,0 @@ -probe::stap.cache_add_mod

Name

probe::stap.cache_add_mod — - Adding kernel instrumentation module to cache -

Synopsis

stap.cache_add_mod 

Values

dest_path

- the path the .ko file is going to (incl filename) -

source_path

- the path the .ko file is coming from (incl filename) -

Description

- Fires just before the file is actually moved. Note: if moving fails, - cache_add_src and cache_add_nss will not fire. -

diff --git a/tapsets/API-stap-cache-add-nss.html b/tapsets/API-stap-cache-add-nss.html deleted file mode 100644 index aa38898a..00000000 --- a/tapsets/API-stap-cache-add-nss.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::stap.cache_add_nss

Name

probe::stap.cache_add_nss — - Add NSS (Network Security Services) information to cache -

Synopsis

stap.cache_add_nss 

Values

dest_path

- the path the .sgn file is coming from (incl filename) -

source_path

- the path the .sgn file is coming from (incl filename) -

Description

- Fires just before the file is actually moved. Note: stap must compiled - with NSS support; if moving the kernel module fails, this probe will - not fire. -

diff --git a/tapsets/API-stap-cache-add-src.html b/tapsets/API-stap-cache-add-src.html deleted file mode 100644 index 5f1a0fea..00000000 --- a/tapsets/API-stap-cache-add-src.html +++ /dev/null @@ -1,10 +0,0 @@ -probe::stap.cache_add_src

Name

probe::stap.cache_add_src — - Adding C code translation to cache -

Synopsis

stap.cache_add_src 

Values

dest_path

- the path the .c file is going to (incl filename) -

source_path

- the path the .c file is coming from (incl filename) -

Description

- Fires just before the file is actually moved. Note: if moving the - kernel module fails, this probe will not fire. -

diff --git a/tapsets/API-stap-cache-clean.html b/tapsets/API-stap-cache-clean.html deleted file mode 100644 index c0f509ca..00000000 --- a/tapsets/API-stap-cache-clean.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::stap.cache_clean

Name

probe::stap.cache_clean — - Removing file from stap cache -

Synopsis

stap.cache_clean 

Values

path

- the path to the .ko/.c file being removed -

Description

- Fires just before the call to unlink the module/source file. -

diff --git a/tapsets/API-stap-cache-get.html b/tapsets/API-stap-cache-get.html deleted file mode 100644 index dec13277..00000000 --- a/tapsets/API-stap-cache-get.html +++ /dev/null @@ -1,10 +0,0 @@ -probe::stap.cache_get

Name

probe::stap.cache_get — - Found item in stap cache -

Synopsis

stap.cache_get 

Values

source_path

- the path of the .c source file -

module_path

- the path of the .ko kernel module file -

Description

- Fires just before the return of get_from_cache, when the cache grab - is successful. -

diff --git a/tapsets/API-stap-pass0-end.html b/tapsets/API-stap-pass0-end.html deleted file mode 100644 index ea066c71..00000000 --- a/tapsets/API-stap-pass0-end.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::stap.pass0.end

Name

probe::stap.pass0.end — - Finished stap pass0 (parsing command line arguments) -

Synopsis

stap.pass0.end 

Values

session

- the systemtap_session variable s -

Description

- pass0.end fires just before the gettimeofday call for pass1. -

diff --git a/tapsets/API-stap-pass0.html b/tapsets/API-stap-pass0.html deleted file mode 100644 index c9dccb47..00000000 --- a/tapsets/API-stap-pass0.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::stap.pass0

Name

probe::stap.pass0 — - Starting stap pass0 (parsing command line arguments) -

Synopsis

stap.pass0 

Values

session

- the systemtap_session variable s -

Description

- pass0 fires after command line arguments have been parsed. -

diff --git a/tapsets/API-stap-pass1-end.html b/tapsets/API-stap-pass1-end.html deleted file mode 100644 index a12770c2..00000000 --- a/tapsets/API-stap-pass1-end.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::stap.pass1.end

Name

probe::stap.pass1.end — - Finished stap pass1 (parsing scripts) -

Synopsis

stap.pass1.end 

Values

session

- the systemtap_session variable s -

Description

- pass1.end fires just before the jump to cleanup if s.last_pass = 1. -

diff --git a/tapsets/API-stap-pass1a.html b/tapsets/API-stap-pass1a.html deleted file mode 100644 index b0f5844b..00000000 --- a/tapsets/API-stap-pass1a.html +++ /dev/null @@ -1,8 +0,0 @@ -probe::stap.pass1a

Name

probe::stap.pass1a — - Starting stap pass1 (parsing user script) -

Synopsis

stap.pass1a 

Values

session

- the systemtap_session variable s -

Description

- pass1a fires just after the call to gettimeofday, before the - user script is parsed. -

diff --git a/tapsets/API-stap-pass1b.html b/tapsets/API-stap-pass1b.html deleted file mode 100644 index c194122c..00000000 --- a/tapsets/API-stap-pass1b.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::stap.pass1b

Name

probe::stap.pass1b — - Starting stap pass1 (parsing library scripts) -

Synopsis

stap.pass1b 

Values

session

- the systemtap_session variable s -

Description

- pass1b fires just before the library scripts are parsed. -

diff --git a/tapsets/API-stap-pass2-end.html b/tapsets/API-stap-pass2-end.html deleted file mode 100644 index b5d06bd3..00000000 --- a/tapsets/API-stap-pass2-end.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::stap.pass2.end

Name

probe::stap.pass2.end — - Finished stap pass2 (elaboration) -

Synopsis

stap.pass2.end 

Values

session

- the systemtap_session variable s -

Description

- pass2.end fires just before the jump to cleanup if s.last_pass = 2 -

diff --git a/tapsets/API-stap-pass2.html b/tapsets/API-stap-pass2.html deleted file mode 100644 index 4ff07636..00000000 --- a/tapsets/API-stap-pass2.html +++ /dev/null @@ -1,8 +0,0 @@ -probe::stap.pass2

Name

probe::stap.pass2 — - Starting stap pass2 (elaboration) -

Synopsis

stap.pass2 

Values

session

- the systemtap_session variable s -

Description

- pass2 fires just after the call to gettimeofday, just before the - call to semantic_pass. -

diff --git a/tapsets/API-stap-pass3-end.html b/tapsets/API-stap-pass3-end.html deleted file mode 100644 index ccdb8c77..00000000 --- a/tapsets/API-stap-pass3-end.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::stap.pass3.end

Name

probe::stap.pass3.end — - Finished stap pass3 (translation to C) -

Synopsis

stap.pass3.end 

Values

session

- the systemtap_session variable s -

Description

- pass3.end fires just before the jump to cleanup if s.last_pass = 3 -

diff --git a/tapsets/API-stap-pass3.html b/tapsets/API-stap-pass3.html deleted file mode 100644 index 15d52fec..00000000 --- a/tapsets/API-stap-pass3.html +++ /dev/null @@ -1,8 +0,0 @@ -probe::stap.pass3

Name

probe::stap.pass3 — - Starting stap pass3 (translation to C) -

Synopsis

stap.pass3 

Values

session

- the systemtap_session variable s -

Description

- pass3 fires just after the call to gettimeofday, just before the - call to translate_pass. -

diff --git a/tapsets/API-stap-pass4-end.html b/tapsets/API-stap-pass4-end.html deleted file mode 100644 index 417378f3..00000000 --- a/tapsets/API-stap-pass4-end.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::stap.pass4.end

Name

probe::stap.pass4.end — - Finished stap pass4 (compile C code into kernel module) -

Synopsis

stap.pass4.end 

Values

session

- the systemtap_session variable s -

Description

- pass4.end fires just before the jump to cleanup if s.last_pass = 4 -

diff --git a/tapsets/API-stap-pass4.html b/tapsets/API-stap-pass4.html deleted file mode 100644 index 1e7bcd54..00000000 --- a/tapsets/API-stap-pass4.html +++ /dev/null @@ -1,8 +0,0 @@ -probe::stap.pass4

Name

probe::stap.pass4 — - Starting stap pass4 (compile C code into kernel module) -

Synopsis

stap.pass4 

Values

session

- the systemtap_session variable s -

Description

- pass4 fires just after the call to gettimeofday, just before the - call to compile_pass. -

diff --git a/tapsets/API-stap-pass5-end.html b/tapsets/API-stap-pass5-end.html deleted file mode 100644 index a73ab850..00000000 --- a/tapsets/API-stap-pass5-end.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::stap.pass5.end

Name

probe::stap.pass5.end — - Finished stap pass5 (running the instrumentation) -

Synopsis

stap.pass5.end 

Values

session

- the systemtap_session variable s -

Description

- pass5.end fires just before the cleanup label -

diff --git a/tapsets/API-stap-pass5.html b/tapsets/API-stap-pass5.html deleted file mode 100644 index 8fc3f4db..00000000 --- a/tapsets/API-stap-pass5.html +++ /dev/null @@ -1,8 +0,0 @@ -probe::stap.pass5

Name

probe::stap.pass5 — - Starting stap pass5 (running the instrumentation) -

Synopsis

stap.pass5 

Values

session

- the systemtap_session variable s -

Description

- pass5 fires just after the call to gettimeofday, just before the - call to run_pass. -

diff --git a/tapsets/API-stap-pass6-end.html b/tapsets/API-stap-pass6-end.html deleted file mode 100644 index ce165edd..00000000 --- a/tapsets/API-stap-pass6-end.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::stap.pass6.end

Name

probe::stap.pass6.end — - Finished stap pass6 (cleanup) -

Synopsis

stap.pass6.end 

Values

session

- the systemtap_session variable s -

Description

- pass6.end fires just before main's return. -

diff --git a/tapsets/API-stap-pass6.html b/tapsets/API-stap-pass6.html deleted file mode 100644 index c9ec1cbe..00000000 --- a/tapsets/API-stap-pass6.html +++ /dev/null @@ -1,8 +0,0 @@ -probe::stap.pass6

Name

probe::stap.pass6 — - Starting stap pass6 (cleanup) -

Synopsis

stap.pass6 

Values

session

- the systemtap_session variable s -

Description

- pass6 fires just after the cleanup label, essentially the same spot - as pass5.end -

diff --git a/tapsets/API-stap-system-return.html b/tapsets/API-stap-system-return.html deleted file mode 100644 index 9d94833c..00000000 --- a/tapsets/API-stap-system-return.html +++ /dev/null @@ -1,8 +0,0 @@ -probe::stap.system.return

Name

probe::stap.system.return — - Finished a command from stap -

Synopsis

stap.system.return 

Values

ret

- a return code associated with running waitpid on the spawned process; - a non-zero value indicates error -

Description

- Fires just before the return of the stap_system function, after waitpid. -

diff --git a/tapsets/API-stap-system-spawn.html b/tapsets/API-stap-system-spawn.html deleted file mode 100644 index ce429f48..00000000 --- a/tapsets/API-stap-system-spawn.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::stap.system.spawn

Name

probe::stap.system.spawn — - stap spawned new process -

Synopsis

stap.system.spawn 

Values

ret

- the return value from posix_spawn -

pid

- the pid of the spawned process -

Description

- Fires just after the call to posix_spawn. -

diff --git a/tapsets/API-stap-system.html b/tapsets/API-stap-system.html deleted file mode 100644 index 0979e941..00000000 --- a/tapsets/API-stap-system.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::stap.system

Name

probe::stap.system — - Starting a command from stap -

Synopsis

stap.system 

Values

command

- the command string to be run by posix_spawn (as sh -c <str>) -

Description

- Fires at the entry of the stap_system command. -

diff --git a/tapsets/API-stapio-receive-control-message.html b/tapsets/API-stapio-receive-control-message.html deleted file mode 100644 index bda07f9f..00000000 --- a/tapsets/API-stapio-receive-control-message.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::stapio.receive_control_message

Name

probe::stapio.receive_control_message — - Received a control message -

Synopsis

stapio.receive_control_message 

Values

len

- the length (in bytes) of the data blob -

data

- a ptr to a binary blob of data sent as the control message -

type

- type of message being send; defined in runtime/transport/transport_msgs.h -

Description

- Fires just after a message was receieved and before it's processed. -

diff --git a/tapsets/API-staprun-insert-module.html b/tapsets/API-staprun-insert-module.html deleted file mode 100644 index f9bd1b70..00000000 --- a/tapsets/API-staprun-insert-module.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::staprun.insert_module

Name

probe::staprun.insert_module — - Inserting SystemTap instrumentation module -

Synopsis

staprun.insert_module 

Values

path

- the full path to the .ko kernel module about to be inserted -

Description

- Fires just before the call to insert the module. -

diff --git a/tapsets/API-staprun-remove-module.html b/tapsets/API-staprun-remove-module.html deleted file mode 100644 index 4ca66865..00000000 --- a/tapsets/API-staprun-remove-module.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::staprun.remove_module

Name

probe::staprun.remove_module — - Removing SystemTap instrumentation module -

Synopsis

staprun.remove_module 

Values

name

- the stap module name to be removed (without the .ko extension) -

Description

- Fires just before the call to remove the module. -

diff --git a/tapsets/API-staprun-send-control-message.html b/tapsets/API-staprun-send-control-message.html deleted file mode 100644 index b2a60870..00000000 --- a/tapsets/API-staprun-send-control-message.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::staprun.send_control_message

Name

probe::staprun.send_control_message — - Sending a control message -

Synopsis

staprun.send_control_message 

Values

len

- the length (in bytes) of the data blob -

data

- a ptr to a binary blob of data sent as the control message -

type

- type of message being send; defined in runtime/transport/transport_msgs.h -

Description

- Fires at the beginning of the send_request function. -

diff --git a/tapsets/API-start-stopwatch.html b/tapsets/API-start-stopwatch.html deleted file mode 100644 index 503b608c..00000000 --- a/tapsets/API-start-stopwatch.html +++ /dev/null @@ -1,10 +0,0 @@ -function::start_stopwatch

Name

function::start_stopwatch — - Start a stopwatch -

Synopsis

-    start_stopwatch(name:string)
-

Arguments

name

- the stopwatch name -

Description

- Start stopwatch name. - Creates stopwatch name if it does not currently exist. -

diff --git a/tapsets/API-stop-stopwatch.html b/tapsets/API-stop-stopwatch.html deleted file mode 100644 index 336f0035..00000000 --- a/tapsets/API-stop-stopwatch.html +++ /dev/null @@ -1,10 +0,0 @@ -function::stop_stopwatch

Name

function::stop_stopwatch — - Stop a stopwatch -

Synopsis

-    stop_stopwatch(name:string)
-

Arguments

name

- the stopwatch name -

Description

- Stop stopwatch name. - Creates stopwatch name if it does not currently exist. -

diff --git a/tapsets/API-stp-pid.html b/tapsets/API-stp-pid.html deleted file mode 100644 index 3a87749b..00000000 --- a/tapsets/API-stp-pid.html +++ /dev/null @@ -1,12 +0,0 @@ -function::stp_pid

Name

function::stp_pid — - The process id of the stapio process -

Synopsis

-    stp_pid:long()
-

Arguments

- None -

Description

- This function returns the process id of the - stapio process that launched this script. There could be - other SystemTap scripts and stapio processes running on - the system. -

diff --git a/tapsets/API-str-replace.html b/tapsets/API-str-replace.html deleted file mode 100644 index d1e8edec..00000000 --- a/tapsets/API-str-replace.html +++ /dev/null @@ -1,14 +0,0 @@ -function::str_replace

Name

function::str_replace — - str_replace Replaces all instances of a substring with another -

Synopsis

-    str_replace:string(prnt_str:string,srch_str:string,rplc_str:string)
-

Arguments

prnt_str

- the string to search and replace in -

srch_str

- the substring which is used to search in prnt_str string -

rplc_str

- the substring which is used to replace srch_str -

Description

- This function returns the given string with - substrings replaced. -

diff --git a/tapsets/API-stringat.html b/tapsets/API-stringat.html deleted file mode 100644 index a2b457e0..00000000 --- a/tapsets/API-stringat.html +++ /dev/null @@ -1,12 +0,0 @@ -function::stringat

Name

function::stringat — - Returns the char at a given position in the string -

Synopsis

-    stringat:long(str:string,pos:long)
-

Arguments

str

- the string to fetch the character from -

pos

- the position to get the character from (first character is 0) -

Description

- This function returns the character at a given position in - the string or zero if thestring doesn't have as many characters. -

diff --git a/tapsets/API-strlen.html b/tapsets/API-strlen.html deleted file mode 100644 index 1eb7f9ec..00000000 --- a/tapsets/API-strlen.html +++ /dev/null @@ -1,10 +0,0 @@ -function::strlen

Name

function::strlen — - Returns the length of a string -

Synopsis

-    strlen:long(s:string)
-

Arguments

s

- the string -

Description

- This function returns the length of the string, which - can be zero up to MAXSTRINGLEN. -

diff --git a/tapsets/API-strtol.html b/tapsets/API-strtol.html deleted file mode 100644 index 081ec8db..00000000 --- a/tapsets/API-strtol.html +++ /dev/null @@ -1,12 +0,0 @@ -function::strtol

Name

function::strtol — - strtol - Convert a string to a long -

Synopsis

-    strtol:long(str:string,base:long)
-

Arguments

str

- string to convert -

base

- the base to use -

Description

- This function converts the string representation of a number to an integer. - The base parameter indicates the number base to assume for the string (eg. 16 for hex, 8 for octal, 2 for binary). -

diff --git a/tapsets/API-substr.html b/tapsets/API-substr.html deleted file mode 100644 index 1d7c708f..00000000 --- a/tapsets/API-substr.html +++ /dev/null @@ -1,16 +0,0 @@ -function::substr

Name

function::substr — - Returns a substring -

Synopsis

-    substr:string(str:string,start:long,length:long)
-

Arguments

str

- the string to take a substring from -

start

- starting position of the extracted string (first character is 0) -

length

- length of string to return -

Description

- Returns the substring of the given string at the given - start position with the given length (or smaller if the length of the - original string is less than start + length, or length is bigger than - MAXSTRINGLEN). -

diff --git a/tapsets/API-sunrpc-clnt-bind-new-program.html b/tapsets/API-sunrpc-clnt-bind-new-program.html deleted file mode 100644 index dbf4c61b..00000000 --- a/tapsets/API-sunrpc-clnt-bind-new-program.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::sunrpc.clnt.bind_new_program

Name

probe::sunrpc.clnt.bind_new_program — - Bind a new RPC program to an existing client -

Synopsis

sunrpc.clnt.bind_new_program 

Values

prog

- the number of new RPC program -

progname

- the name of new RPC program -

old_vers

- the version of old RPC program -

old_progname

- the name of old RPC program -

vers

- the version of new RPC program -

servername

- the server machine name -

old_prog

- the number of old RPC program -

diff --git a/tapsets/API-sunrpc-clnt-call-async.html b/tapsets/API-sunrpc-clnt-call-async.html deleted file mode 100644 index 9420b83f..00000000 --- a/tapsets/API-sunrpc-clnt-call-async.html +++ /dev/null @@ -1,25 +0,0 @@ -probe::sunrpc.clnt.call_async

Name

probe::sunrpc.clnt.call_async — - Make an asynchronous RPC call -

Synopsis

sunrpc.clnt.call_async 

Values

prog

- the RPC program number -

progname

- the RPC program name -

procname

- the procedure name in this RPC call -

proc

- the procedure number in this RPC call -

dead

- whether this client is abandoned -

flags

- flags -

vers

- the RPC program version number -

port

- the port number -

prot

- the IP protocol number -

servername

- the server machine name -

xid

- current transmission id -

diff --git a/tapsets/API-sunrpc-clnt-call-sync.html b/tapsets/API-sunrpc-clnt-call-sync.html deleted file mode 100644 index e1c038dc..00000000 --- a/tapsets/API-sunrpc-clnt-call-sync.html +++ /dev/null @@ -1,25 +0,0 @@ -probe::sunrpc.clnt.call_sync

Name

probe::sunrpc.clnt.call_sync — - Make a synchronous RPC call -

Synopsis

sunrpc.clnt.call_sync 

Values

prog

- the RPC program number -

progname

- the RPC program name -

procname

- the procedure name in this RPC call -

proc

- the procedure number in this RPC call -

dead

- whether this client is abandoned -

flags

- flags -

vers

- the RPC program version number -

port

- the port number -

prot

- the IP protocol number -

servername

- the server machine name -

xid

- current transmission id -

diff --git a/tapsets/API-sunrpc-clnt-clone-client.html b/tapsets/API-sunrpc-clnt-clone-client.html deleted file mode 100644 index b4742fff..00000000 --- a/tapsets/API-sunrpc-clnt-clone-client.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::sunrpc.clnt.clone_client

Name

probe::sunrpc.clnt.clone_client — - Clone an RPC client structure -

Synopsis

sunrpc.clnt.clone_client 

Values

servername

- the server machine name -

vers

- the RPC program version number -

prog

- the RPC program number -

authflavor

- the authentication flavor -

progname

- the RPC program name -

port

- the port number -

prot

- the IP protocol number -

diff --git a/tapsets/API-sunrpc-clnt-create-client.html b/tapsets/API-sunrpc-clnt-create-client.html deleted file mode 100644 index 526f3fc1..00000000 --- a/tapsets/API-sunrpc-clnt-create-client.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::sunrpc.clnt.create_client

Name

probe::sunrpc.clnt.create_client — - Create an RPC client -

Synopsis

sunrpc.clnt.create_client 

Values

servername

- the server machine name -

vers

- the RPC program version number -

prog

- the RPC program number -

authflavor

- the authentication flavor -

progname

- the RPC program name -

port

- the port number -

prot

- the IP protocol number -

diff --git a/tapsets/API-sunrpc-clnt-restart-call.html b/tapsets/API-sunrpc-clnt-restart-call.html deleted file mode 100644 index c9924edf..00000000 --- a/tapsets/API-sunrpc-clnt-restart-call.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::sunrpc.clnt.restart_call

Name

probe::sunrpc.clnt.restart_call — - Restart an asynchronous RPC call -

Synopsis

sunrpc.clnt.restart_call 

Values

tk_priority

- the task priority -

prog

- the RPC program number -

tk_pid

- the debugging aid of task -

tk_flags

- the task flags -

servername

- the server machine name -

tk_runstate

- the task run status -

xid

- the transmission id -

diff --git a/tapsets/API-sunrpc-clnt-shutdown-client.html b/tapsets/API-sunrpc-clnt-shutdown-client.html deleted file mode 100644 index 8a2974e9..00000000 --- a/tapsets/API-sunrpc-clnt-shutdown-client.html +++ /dev/null @@ -1,39 +0,0 @@ -probe::sunrpc.clnt.shutdown_client

Name

probe::sunrpc.clnt.shutdown_client — - Shutdown an RPC client -

Synopsis

sunrpc.clnt.shutdown_client 

Values

om_ops

- the count of operations -

om_bytes_sent

- the count of bytes out -

prog

- the RPC program number -

authflavor

- the authentication flavor -

progname

- the RPC program name -

om_queue

- the jiffies queued for xmit -

om_rtt

- the RPC RTT jiffies -

om_bytes_recv

- the count of bytes in -

tasks

- the number of references -

netreconn

- the count of reconnections -

vers

- the RPC program version number -

om_execute

- the RPC execution jiffies -

prot

- the IP protocol number -

port

- the port number -

clones

- the number of clones -

servername

- the server machine name -

rpccnt

- the count of RPC calls -

om_ntrans

- the count of RPC transmissions -

diff --git a/tapsets/API-sunrpc-sched-delay.html b/tapsets/API-sunrpc-sched-delay.html deleted file mode 100644 index 48a49942..00000000 --- a/tapsets/API-sunrpc-sched-delay.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::sunrpc.sched.delay

Name

probe::sunrpc.sched.delay — - Delay an RPC task -

Synopsis

sunrpc.sched.delay 

Values

prog

- the program number in the RPC call -

delay

- the time delayed -

tk_pid

- the debugging id of the task -

tk_flags

- the flags of the task -

vers

- the program version in the RPC call -

prot

- the IP protocol in the RPC call -

xid

- the transmission id in the RPC call -

diff --git a/tapsets/API-sunrpc-sched-execute.html b/tapsets/API-sunrpc-sched-execute.html deleted file mode 100644 index 461e9808..00000000 --- a/tapsets/API-sunrpc-sched-execute.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::sunrpc.sched.execute

Name

probe::sunrpc.sched.execute — - Execute the RPC `scheduler' -

Synopsis

sunrpc.sched.execute 

Values

prog

- the program number in the RPC call -

tk_pid

- the debugging id of the task -

tk_flags

- the flags of the task -

vers

- the program version in the RPC call -

prot

- the IP protocol in the RPC call -

xid

- the transmission id in the RPC call -

diff --git a/tapsets/API-sunrpc-sched-new-task.html b/tapsets/API-sunrpc-sched-new-task.html deleted file mode 100644 index 6cc34253..00000000 --- a/tapsets/API-sunrpc-sched-new-task.html +++ /dev/null @@ -1,13 +0,0 @@ -probe::sunrpc.sched.new_task

Name

probe::sunrpc.sched.new_task — - Create new task for the specified client -

Synopsis

sunrpc.sched.new_task 

Values

prog

- the program number in the RPC call -

tk_flags

- the flags of the task -

vers

- the program version in the RPC call -

prot

- the IP protocol in the RPC call -

xid

- the transmission id in the RPC call -

diff --git a/tapsets/API-sunrpc-sched-release-task.html b/tapsets/API-sunrpc-sched-release-task.html deleted file mode 100644 index 89846acb..00000000 --- a/tapsets/API-sunrpc-sched-release-task.html +++ /dev/null @@ -1,16 +0,0 @@ -probe::sunrpc.sched.release_task

Name

probe::sunrpc.sched.release_task — - Release all resources associated with a task -

Synopsis

sunrpc.sched.release_task 

Values

prog

- the program number in the RPC call -

tk_flags

- the flags of the task -

vers

- the program version in the RPC call -

prot

- the IP protocol in the RPC call -

xid

- the transmission id in the RPC call -

Description

- rpc_release_task function might not be found for a particular kernel. - So, if we can't find it, just return '-1' for everything. -

diff --git a/tapsets/API-sunrpc-svc-create.html b/tapsets/API-sunrpc-svc-create.html deleted file mode 100644 index de1cd408..00000000 --- a/tapsets/API-sunrpc-svc-create.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::sunrpc.svc.create

Name

probe::sunrpc.svc.create — - Create an RPC service -

Synopsis

sunrpc.svc.create 

Values

prog

- the number of the program -

progname

- the name of the program -

pg_nvers

- the number of supported versions -

bufsize

- the buffer size -

diff --git a/tapsets/API-sunrpc-svc-destroy.html b/tapsets/API-sunrpc-svc-destroy.html deleted file mode 100644 index 9f084b03..00000000 --- a/tapsets/API-sunrpc-svc-destroy.html +++ /dev/null @@ -1,21 +0,0 @@ -probe::sunrpc.svc.destroy

Name

probe::sunrpc.svc.destroy — - Destroy an RPC service -

Synopsis

sunrpc.svc.destroy 

Values

sv_name

- the service name -

sv_prog

- the number of the program -

nettcpconn

- the count of accepted TCP connections -

netcnt

- the count of received RPC requests -

rpcbadauth

- the count of requests drooped for authentication failure -

sv_nrthreads

- the number of concurrent threads -

sv_progname

- the name of the program -

rpcbadfmt

- the count of requests dropped for bad formats -

rpccnt

- the count of valid RPC requests -

diff --git a/tapsets/API-sunrpc-svc-drop.html b/tapsets/API-sunrpc-svc-drop.html deleted file mode 100644 index e85cd7a3..00000000 --- a/tapsets/API-sunrpc-svc-drop.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::sunrpc.svc.drop

Name

probe::sunrpc.svc.drop — - Drop RPC request -

Synopsis

sunrpc.svc.drop 

Values

rq_prot

- the IP protocol of the reqeust -

rq_proc

- the procedure number in the request -

rq_vers

- the program version in the request -

sv_name

- the service name -

rq_xid

- the transmission id in the request -

peer_ip

- the peer address where the request is from -

rq_prog

- the program number in the request -

diff --git a/tapsets/API-sunrpc-svc-process.html b/tapsets/API-sunrpc-svc-process.html deleted file mode 100644 index ef60f5d0..00000000 --- a/tapsets/API-sunrpc-svc-process.html +++ /dev/null @@ -1,21 +0,0 @@ -probe::sunrpc.svc.process

Name

probe::sunrpc.svc.process — - Process an RPC request -

Synopsis

sunrpc.svc.process 

Values

rq_prot

- the IP protocol of the reqeust -

rq_proc

- the procedure number in the request -

rq_vers

- the program version in the request -

sv_name

- the service name -

sv_prog

- the number of the program -

sv_nrthreads

- the number of concurrent threads -

rq_xid

- the transmission id in the request -

peer_ip

- the peer address where the request is from -

rq_prog

- the program number in the request -

diff --git a/tapsets/API-sunrpc-svc-recv.html b/tapsets/API-sunrpc-svc-recv.html deleted file mode 100644 index d1f11ec8..00000000 --- a/tapsets/API-sunrpc-svc-recv.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::sunrpc.svc.recv

Name

probe::sunrpc.svc.recv — - Listen for the next RPC request on any socket -

Synopsis

sunrpc.svc.recv 

Values

sv_name

- the service name -

sv_prog

- the number of the program -

timeout

- the timeout of waiting for data -

sv_nrthreads

- the number of concurrent threads -

diff --git a/tapsets/API-sunrpc-svc-register.html b/tapsets/API-sunrpc-svc-register.html deleted file mode 100644 index 0696a5aa..00000000 --- a/tapsets/API-sunrpc-svc-register.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::sunrpc.svc.register

Name

probe::sunrpc.svc.register — - Register an RPC service with the local portmapper -

Synopsis

sunrpc.svc.register 

Values

prog

- the number of the program -

progname

- the name of the program -

sv_name

- the service name -

port

- the port number -

prot

- the IP protocol number -

Description

- If proto and port are both 0, then unregister a service. -

diff --git a/tapsets/API-sunrpc-svc-send.html b/tapsets/API-sunrpc-svc-send.html deleted file mode 100644 index 8a3b1bc0..00000000 --- a/tapsets/API-sunrpc-svc-send.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::sunrpc.svc.send

Name

probe::sunrpc.svc.send — - Return reply to RPC client -

Synopsis

sunrpc.svc.send 

Values

rq_prot

- the IP protocol of the reqeust -

rq_proc

- the procedure number in the request -

rq_vers

- the program version in the request -

sv_name

- the service name -

rq_xid

- the transmission id in the request -

peer_ip

- the peer address where the request is from -

rq_prog

- the program number in the request -

diff --git a/tapsets/API-symdata.html b/tapsets/API-symdata.html deleted file mode 100644 index f7d9b042..00000000 --- a/tapsets/API-symdata.html +++ /dev/null @@ -1,15 +0,0 @@ -function::symdata

Name

function::symdata — - Return the kernel symbol and module offset for the address -

Synopsis

-    symdata:string(addr:long)
-

Arguments

addr

- The address to translate -

Description

- Returns the (function) symbol name associated with the - given address if known, the offset from the start and size of the - symbol, plus module name (between brackets). If symbol is unknown, - but module is known, the offset inside the module, plus the size of - the module is added. If any element is not known it will be - omitted and if the symbol name is unknown it will return the hex - string for the given address. -

diff --git a/tapsets/API-symname.html b/tapsets/API-symname.html deleted file mode 100644 index 47baba61..00000000 --- a/tapsets/API-symname.html +++ /dev/null @@ -1,11 +0,0 @@ -function::symname

Name

function::symname — - Return the kernel symbol associated with the given address -

Synopsis

-    symname:string(addr:long)
-

Arguments

addr

- The address to translate -

Description

- Returns the (function) symbol name associated with the - given address if known. If not known it will return the hex string - representation of addr. -

diff --git a/tapsets/API-system.html b/tapsets/API-system.html deleted file mode 100644 index e498e687..00000000 --- a/tapsets/API-system.html +++ /dev/null @@ -1,12 +0,0 @@ -function::system

Name

function::system — - Issue a command to the system -

Synopsis

-    system(cmd:string)
-

Arguments

cmd

- the command to issue to the system -

Description

- This function runs a command on the system. The - command is started in the background some time after the current - probe completes. The command is run with the same UID as the user - running the stap or staprun command. -

diff --git a/tapsets/API-target-set-pid.html b/tapsets/API-target-set-pid.html deleted file mode 100644 index 35df6af1..00000000 --- a/tapsets/API-target-set-pid.html +++ /dev/null @@ -1,11 +0,0 @@ -function::target_set_pid

Name

function::target_set_pid — - Does pid descend from target process? -

Synopsis

-    target_set_pid(pid:)
-

Arguments

pid

- The pid of the process to query -

Description

- This function returns whether the given process-id is - within the target set, that is whether it is a descendant of the - top-level target process. -

diff --git a/tapsets/API-target-set-report.html b/tapsets/API-target-set-report.html deleted file mode 100644 index 21a1d243..00000000 --- a/tapsets/API-target-set-report.html +++ /dev/null @@ -1,10 +0,0 @@ -function::target_set_report

Name

function::target_set_report — - Print a report about the target set -

Synopsis

-    target_set_report()
-

Arguments

- None -

Description

- This function prints a report about the processes in the - target set, and their ancestry. -

diff --git a/tapsets/API-target.html b/tapsets/API-target.html deleted file mode 100644 index 80037d43..00000000 --- a/tapsets/API-target.html +++ /dev/null @@ -1,20 +0,0 @@ -function::target

Name

function::target — - Return the process ID of the target process -

Synopsis

-    target:long()
-

Arguments

- None -

Description

- This function returns the process ID of the target - process. This is useful in conjunction with the -x PID or - -c CMD command-line options to stap. An example of its use is - to create scripts that filter on a specific process. -

- - -x <pid> - target returns the pid specified by -x -

- - -c <command> - target returns the pid for the executed command specified by -c -

diff --git a/tapsets/API-task-backtrace.html b/tapsets/API-task-backtrace.html deleted file mode 100644 index 2f3cf978..00000000 --- a/tapsets/API-task-backtrace.html +++ /dev/null @@ -1,12 +0,0 @@ -function::task_backtrace

Name

function::task_backtrace — - Hex backtrace of an arbitrary task -

Synopsis

-    task_backtrace:string(task:long)
-

Arguments

task

- pointer to task_struct -

Description

- This function returns a string of hex addresses - that are a backtrace of the stack of a particular task - Output may be truncated as per maximum string length. - Deprecated in SystemTap 1.6. -

diff --git a/tapsets/API-task-cpu.html b/tapsets/API-task-cpu.html deleted file mode 100644 index df78af8b..00000000 --- a/tapsets/API-task-cpu.html +++ /dev/null @@ -1,9 +0,0 @@ -function::task_cpu

Name

function::task_cpu — - The scheduled cpu of the task -

Synopsis

-    task_cpu:long(task:long)
-

Arguments

task

- task_struct pointer -

Description

- This function returns the scheduled cpu for the given task. -

diff --git a/tapsets/API-task-current.html b/tapsets/API-task-current.html deleted file mode 100644 index 98867072..00000000 --- a/tapsets/API-task-current.html +++ /dev/null @@ -1,11 +0,0 @@ -function::task_current

Name

function::task_current — - The current task_struct of the current task -

Synopsis

-    task_current:long()
-

Arguments

- None -

Description

- This function returns the task_struct representing the current process. - This address can be passed to the various task_*() functions to extract - more task-specific data. -

diff --git a/tapsets/API-task-dentry-path.html b/tapsets/API-task-dentry-path.html deleted file mode 100644 index 71e172b2..00000000 --- a/tapsets/API-task-dentry-path.html +++ /dev/null @@ -1,16 +0,0 @@ -function::task_dentry_path

Name

function::task_dentry_path — - get the full dentry path -

Synopsis

-    task_dentry_path:string(task:long,dentry:long,vfsmnt:long)
-

Arguments

task

- task_struct pointer. -

dentry

- direntry pointer. -

vfsmnt

- vfsmnt pointer. -

Description

-

- - Returns the full dirent name (full path to the root), like - the kernel d_path function. -

diff --git a/tapsets/API-task-egid.html b/tapsets/API-task-egid.html deleted file mode 100644 index 8c0e8094..00000000 --- a/tapsets/API-task-egid.html +++ /dev/null @@ -1,9 +0,0 @@ -function::task_egid

Name

function::task_egid — - The effective group identifier of the task -

Synopsis

-    task_egid:long(task:long)
-

Arguments

task

- task_struct pointer -

Description

- This function returns the effective group id of the given task. -

diff --git a/tapsets/API-task-euid.html b/tapsets/API-task-euid.html deleted file mode 100644 index 95b08428..00000000 --- a/tapsets/API-task-euid.html +++ /dev/null @@ -1,9 +0,0 @@ -function::task_euid

Name

function::task_euid — - The effective user identifier of the task -

Synopsis

-    task_euid:long(task:long)
-

Arguments

task

- task_struct pointer -

Description

- This function returns the effective user id of the given task. -

diff --git a/tapsets/API-task-execname.html b/tapsets/API-task-execname.html deleted file mode 100644 index 76643d3c..00000000 --- a/tapsets/API-task-execname.html +++ /dev/null @@ -1,9 +0,0 @@ -function::task_execname

Name

function::task_execname — - The name of the task -

Synopsis

-    task_execname:string(task:long)
-

Arguments

task

- task_struct pointer -

Description

- Return the name of the given task. -

diff --git a/tapsets/API-task-gid.html b/tapsets/API-task-gid.html deleted file mode 100644 index a8774b26..00000000 --- a/tapsets/API-task-gid.html +++ /dev/null @@ -1,9 +0,0 @@ -function::task_gid

Name

function::task_gid — - The group identifier of the task -

Synopsis

-    task_gid:long(task:long)
-

Arguments

task

- task_struct pointer -

Description

- This function returns the group id of the given task. -

diff --git a/tapsets/API-task-max-file-handles.html b/tapsets/API-task-max-file-handles.html deleted file mode 100644 index c9920cc2..00000000 --- a/tapsets/API-task-max-file-handles.html +++ /dev/null @@ -1,9 +0,0 @@ -function::task_max_file_handles

Name

function::task_max_file_handles — - The max number of open files for the task -

Synopsis

-    task_max_file_handles:long(task:long)
-

Arguments

task

- task_struct pointer -

Description

- This function returns the maximum number of file handlers for the given task. -

diff --git a/tapsets/API-task-nice.html b/tapsets/API-task-nice.html deleted file mode 100644 index b164a066..00000000 --- a/tapsets/API-task-nice.html +++ /dev/null @@ -1,9 +0,0 @@ -function::task_nice

Name

function::task_nice — - The nice value of the task -

Synopsis

-    task_nice:long(task:long)
-

Arguments

task

- task_struct pointer -

Description

- This function returns the nice value of the given task. -

diff --git a/tapsets/API-task-open-file-handles.html b/tapsets/API-task-open-file-handles.html deleted file mode 100644 index f76e7e1d..00000000 --- a/tapsets/API-task-open-file-handles.html +++ /dev/null @@ -1,9 +0,0 @@ -function::task_open_file_handles

Name

function::task_open_file_handles — - The number of open files of the task -

Synopsis

-    task_open_file_handles:long(task:long)
-

Arguments

task

- task_struct pointer -

Description

- This function returns the number of open file handlers for the given task. -

diff --git a/tapsets/API-task-parent.html b/tapsets/API-task-parent.html deleted file mode 100644 index 4cb19d97..00000000 --- a/tapsets/API-task-parent.html +++ /dev/null @@ -1,11 +0,0 @@ -function::task_parent

Name

function::task_parent — - The task_struct of the parent task -

Synopsis

-    task_parent:long(task:long)
-

Arguments

task

- task_struct pointer -

Description

- This function returns the parent task_struct of - the given task. This address can be passed to the various - task_*() functions to extract more task-specific data. -

diff --git a/tapsets/API-task-pid.html b/tapsets/API-task-pid.html deleted file mode 100644 index cb654881..00000000 --- a/tapsets/API-task-pid.html +++ /dev/null @@ -1,9 +0,0 @@ -function::task_pid

Name

function::task_pid — - The process identifier of the task -

Synopsis

-    task_pid:long(task:long)
-

Arguments

task

- task_struct pointer -

Description

- This fucntion returns the process id of the given task. -

diff --git a/tapsets/API-task-prio.html b/tapsets/API-task-prio.html deleted file mode 100644 index 2cd88eaf..00000000 --- a/tapsets/API-task-prio.html +++ /dev/null @@ -1,9 +0,0 @@ -function::task_prio

Name

function::task_prio — - The priority value of the task -

Synopsis

-    task_prio:long(task:long)
-

Arguments

task

- task_struct pointer -

Description

- This function returns the priority value of the given task. -

diff --git a/tapsets/API-task-state.html b/tapsets/API-task-state.html deleted file mode 100644 index b9db88c0..00000000 --- a/tapsets/API-task-state.html +++ /dev/null @@ -1,11 +0,0 @@ -function::task_state

Name

function::task_state — - The state of the task -

Synopsis

-    task_state:long(task:long)
-

Arguments

task

- task_struct pointer -

Description

- Return the state of the given task, one of: - TASK_RUNNING (0), TASK_INTERRUPTIBLE (1), TASK_UNINTERRUPTIBLE (2), - TASK_STOPPED (4), TASK_TRACED (8), EXIT_ZOMBIE (16), or EXIT_DEAD (32). -

diff --git a/tapsets/API-task-stime-tid.html b/tapsets/API-task-stime-tid.html deleted file mode 100644 index 08ea4463..00000000 --- a/tapsets/API-task-stime-tid.html +++ /dev/null @@ -1,12 +0,0 @@ -function::task_stime_tid

Name

function::task_stime_tid — - System time of the given task -

Synopsis

-    task_stime_tid:long(tid:long)
-

Arguments

tid

- Thread id of the given task -

Description

- Returns the system time of the given task in cputime, - or zero if the task doesn't exist. - Does not include any time used by other tasks in this process, nor - does it include any time of the children of this task. -

diff --git a/tapsets/API-task-stime.html b/tapsets/API-task-stime.html deleted file mode 100644 index 5b4fe294..00000000 --- a/tapsets/API-task-stime.html +++ /dev/null @@ -1,11 +0,0 @@ -function::task_stime

Name

function::task_stime — - System time of the current task -

Synopsis

-    task_stime:long()
-

Arguments

- None -

Description

- Returns the system time of the current task in cputime. - Does not include any time used by other tasks in this process, nor - does it include any time of the children of this task. -

diff --git a/tapsets/API-task-tid.html b/tapsets/API-task-tid.html deleted file mode 100644 index 49e05052..00000000 --- a/tapsets/API-task-tid.html +++ /dev/null @@ -1,9 +0,0 @@ -function::task_tid

Name

function::task_tid — - The thread identifier of the task -

Synopsis

-    task_tid:long(task:long)
-

Arguments

task

- task_struct pointer -

Description

- This function returns the thread id of the given task. -

diff --git a/tapsets/API-task-time-string-tid.html b/tapsets/API-task-time-string-tid.html deleted file mode 100644 index e0895737..00000000 --- a/tapsets/API-task-time-string-tid.html +++ /dev/null @@ -1,11 +0,0 @@ -function::task_time_string_tid

Name

function::task_time_string_tid — - Human readable string of task time usage -

Synopsis

-    task_time_string_tid:string(tid:long)
-

Arguments

tid

- Thread id of the given task -

Description

- Returns a human readable string showing the user and - system time the given task has used up to now. For example - usr: 0m12.908s, sys: 1m6.851s. -

diff --git a/tapsets/API-task-time-string.html b/tapsets/API-task-time-string.html deleted file mode 100644 index 72233a10..00000000 --- a/tapsets/API-task-time-string.html +++ /dev/null @@ -1,11 +0,0 @@ -function::task_time_string

Name

function::task_time_string — - Human readable string of task time usage -

Synopsis

-    task_time_string:string()
-

Arguments

- None -

Description

- Returns a human readable string showing the user and - system time the current task has used up to now. For example - usr: 0m12.908s, sys: 1m6.851s. -

diff --git a/tapsets/API-task-uid.html b/tapsets/API-task-uid.html deleted file mode 100644 index 9f2a5931..00000000 --- a/tapsets/API-task-uid.html +++ /dev/null @@ -1,9 +0,0 @@ -function::task_uid

Name

function::task_uid — - The user identifier of the task -

Synopsis

-    task_uid:long(task:long)
-

Arguments

task

- task_struct pointer -

Description

- This function returns the user id of the given task. -

diff --git a/tapsets/API-task-utime-tid.html b/tapsets/API-task-utime-tid.html deleted file mode 100644 index a513f451..00000000 --- a/tapsets/API-task-utime-tid.html +++ /dev/null @@ -1,12 +0,0 @@ -function::task_utime_tid

Name

function::task_utime_tid — - User time of the given task -

Synopsis

-    task_utime_tid:long(tid:long)
-

Arguments

tid

- Thread id of the given task -

Description

- Returns the user time of the given task in cputime, - or zero if the task doesn't exist. - Does not include any time used by other tasks in this process, nor - does it include any time of the children of this task. -

diff --git a/tapsets/API-task-utime.html b/tapsets/API-task-utime.html deleted file mode 100644 index 6914fe4c..00000000 --- a/tapsets/API-task-utime.html +++ /dev/null @@ -1,11 +0,0 @@ -function::task_utime

Name

function::task_utime — - User time of the current task -

Synopsis

-    task_utime:long()
-

Arguments

- None -

Description

- Returns the user time of the current task in cputime. - Does not include any time used by other tasks in this process, nor - does it include any time of the children of this task. -

diff --git a/tapsets/API-tcp-disconnect-return.html b/tapsets/API-tcp-disconnect-return.html deleted file mode 100644 index 34b4b412..00000000 --- a/tapsets/API-tcp-disconnect-return.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::tcp.disconnect.return

Name

probe::tcp.disconnect.return — - TCP socket disconnection complete -

Synopsis

tcp.disconnect.return 

Values

ret

- Error code (0: no error) -

name

- Name of this probe -

Context

- The process which disconnects tcp -

diff --git a/tapsets/API-tcp-disconnect.html b/tapsets/API-tcp-disconnect.html deleted file mode 100644 index 398ed052..00000000 --- a/tapsets/API-tcp-disconnect.html +++ /dev/null @@ -1,21 +0,0 @@ -probe::tcp.disconnect

Name

probe::tcp.disconnect — - TCP socket disconnection -

Synopsis

tcp.disconnect 

Values

flags

- TCP flags (e.g. FIN, etc) -

name

- Name of this probe -

dport

- TCP destination port -

saddr

- A string representing the source IP address -

daddr

- A string representing the destination IP address -

sport

- TCP source port -

family

- IP address family -

sock

- Network socket -

Context

- The process which disconnects tcp -

diff --git a/tapsets/API-tcp-receive.html b/tapsets/API-tcp-receive.html deleted file mode 100644 index 6fa98479..00000000 --- a/tapsets/API-tcp-receive.html +++ /dev/null @@ -1,31 +0,0 @@ -probe::tcp.receive

Name

probe::tcp.receive — - Called when a TCP packet is received -

Synopsis

tcp.receive 

Values

urg

- TCP URG flag -

protocol

- Packet protocol from driver -

psh

- TCP PSH flag -

name

- Name of the probe point -

rst

- TCP RST flag -

dport

- TCP destination port -

saddr

- A string representing the source IP address -

daddr

- A string representing the destination IP address -

ack

- TCP ACK flag -

fin

- TCP FIN flag -

syn

- TCP SYN flag -

sport

- TCP source port -

family

- IP address family -

iphdr

- IP header address -

diff --git a/tapsets/API-tcp-recvmsg-return.html b/tapsets/API-tcp-recvmsg-return.html deleted file mode 100644 index f0be45a8..00000000 --- a/tapsets/API-tcp-recvmsg-return.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::tcp.recvmsg.return

Name

probe::tcp.recvmsg.return — - Receiving TCP message complete -

Synopsis

tcp.recvmsg.return 

Values

name

- Name of this probe -

dport

- TCP destination port -

size

- Number of bytes received or error code if an error occurred. -

saddr

- A string representing the source IP address -

daddr

- A string representing the destination IP address -

sport

- TCP source port -

family

- IP address family -

Context

- The process which receives a tcp message -

diff --git a/tapsets/API-tcp-recvmsg.html b/tapsets/API-tcp-recvmsg.html deleted file mode 100644 index 85986d64..00000000 --- a/tapsets/API-tcp-recvmsg.html +++ /dev/null @@ -1,21 +0,0 @@ -probe::tcp.recvmsg

Name

probe::tcp.recvmsg — - Receiving TCP message -

Synopsis

tcp.recvmsg 

Values

name

- Name of this probe -

dport

- TCP destination port -

size

- Number of bytes to be received -

saddr

- A string representing the source IP address -

daddr

- A string representing the destination IP address -

sport

- TCP source port -

sock

- Network socket -

family

- IP address family -

Context

- The process which receives a tcp message -

diff --git a/tapsets/API-tcp-sendmsg-return.html b/tapsets/API-tcp-sendmsg-return.html deleted file mode 100644 index f89f208c..00000000 --- a/tapsets/API-tcp-sendmsg-return.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::tcp.sendmsg.return

Name

probe::tcp.sendmsg.return — - Sending TCP message is done -

Synopsis

tcp.sendmsg.return 

Values

name

- Name of this probe -

size

- Number of bytes sent or error code if an error occurred. -

Context

- The process which sends a tcp message -

diff --git a/tapsets/API-tcp-sendmsg.html b/tapsets/API-tcp-sendmsg.html deleted file mode 100644 index 9d9f59d0..00000000 --- a/tapsets/API-tcp-sendmsg.html +++ /dev/null @@ -1,13 +0,0 @@ -probe::tcp.sendmsg

Name

probe::tcp.sendmsg — - Sending a tcp message -

Synopsis

tcp.sendmsg 

Values

name

- Name of this probe -

size

- Number of bytes to send -

family

- IP address family -

sock

- Network socket -

Context

- The process which sends a tcp message -

diff --git a/tapsets/API-tcp-setsockopt-return.html b/tapsets/API-tcp-setsockopt-return.html deleted file mode 100644 index e9b5419e..00000000 --- a/tapsets/API-tcp-setsockopt-return.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::tcp.setsockopt.return

Name

probe::tcp.setsockopt.return — - Return from setsockopt -

Synopsis

tcp.setsockopt.return 

Values

ret

- Error code (0: no error) -

name

- Name of this probe -

Context

- The process which calls setsockopt -

diff --git a/tapsets/API-tcp-setsockopt.html b/tapsets/API-tcp-setsockopt.html deleted file mode 100644 index b1323245..00000000 --- a/tapsets/API-tcp-setsockopt.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::tcp.setsockopt

Name

probe::tcp.setsockopt — - Call to setsockopt -

Synopsis

tcp.setsockopt 

Values

optlen

- Used to access values for setsockopt -

name

- Name of this probe -

optname

- TCP socket options (e.g. TCP_NODELAY, TCP_MAXSEG, etc) -

optstr

- Resolves optname to a human-readable format -

level

- The level at which the socket options will be manipulated -

family

- IP address family -

sock

- Network socket -

Context

- The process which calls setsockopt -

diff --git a/tapsets/API-tcpmib-ActiveOpens.html b/tapsets/API-tcpmib-ActiveOpens.html deleted file mode 100644 index 7f497550..00000000 --- a/tapsets/API-tcpmib-ActiveOpens.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::tcpmib.ActiveOpens

Name

probe::tcpmib.ActiveOpens — - Count an active opening of a socket -

Synopsis

tcpmib.ActiveOpens 

Values

sk

- pointer to the struct sock being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - tcpmib_filter_key. If the packet passes the filter is is - counted in the global ActiveOpens (equivalent to SNMP's MIB - TCP_MIB_ACTIVEOPENS) -

diff --git a/tapsets/API-tcpmib-AttemptFails.html b/tapsets/API-tcpmib-AttemptFails.html deleted file mode 100644 index cca4ecb5..00000000 --- a/tapsets/API-tcpmib-AttemptFails.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::tcpmib.AttemptFails

Name

probe::tcpmib.AttemptFails — - Count a failed attempt to open a socket -

Synopsis

tcpmib.AttemptFails 

Values

sk

- pointer to the struct sock being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - tcpmib_filter_key. If the packet passes the filter is is - counted in the global AttemptFails (equivalent to SNMP's MIB - TCP_MIB_ATTEMPTFAILS) -

diff --git a/tapsets/API-tcpmib-CurrEstab.html b/tapsets/API-tcpmib-CurrEstab.html deleted file mode 100644 index fc0f5554..00000000 --- a/tapsets/API-tcpmib-CurrEstab.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::tcpmib.CurrEstab

Name

probe::tcpmib.CurrEstab — - Update the count of open sockets -

Synopsis

tcpmib.CurrEstab 

Values

sk

- pointer to the struct sock being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - tcpmib_filter_key. If the packet passes the filter is is - counted in the global CurrEstab (equivalent to SNMP's MIB - TCP_MIB_CURRESTAB) -

diff --git a/tapsets/API-tcpmib-EstabResets.html b/tapsets/API-tcpmib-EstabResets.html deleted file mode 100644 index 799b5bad..00000000 --- a/tapsets/API-tcpmib-EstabResets.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::tcpmib.EstabResets

Name

probe::tcpmib.EstabResets — - Count the reset of a socket -

Synopsis

tcpmib.EstabResets 

Values

sk

- pointer to the struct sock being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - tcpmib_filter_key. If the packet passes the filter is is - counted in the global EstabResets (equivalent to SNMP's MIB - TCP_MIB_ESTABRESETS) -

diff --git a/tapsets/API-tcpmib-InSegs.html b/tapsets/API-tcpmib-InSegs.html deleted file mode 100644 index 8817e944..00000000 --- a/tapsets/API-tcpmib-InSegs.html +++ /dev/null @@ -1,13 +0,0 @@ -probe::tcpmib.InSegs

Name

probe::tcpmib.InSegs — - Count an incoming tcp segment -

Synopsis

tcpmib.InSegs 

Values

sk

- pointer to the struct sock being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - tcpmib_filter_key (or ipmib_filter_key for tcp v4). - If the packet passes the filter is is - counted in the global InSegs (equivalent to SNMP's MIB - TCP_MIB_INSEGS) -

diff --git a/tapsets/API-tcpmib-OutRsts.html b/tapsets/API-tcpmib-OutRsts.html deleted file mode 100644 index 1cf7b912..00000000 --- a/tapsets/API-tcpmib-OutRsts.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::tcpmib.OutRsts

Name

probe::tcpmib.OutRsts — - Count the sending of a reset packet -

Synopsis

tcpmib.OutRsts 

Values

sk

- pointer to the struct sock being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - tcpmib_filter_key. If the packet passes the filter is is - counted in the global OutRsts (equivalent to SNMP's MIB - TCP_MIB_OUTRSTS) -

diff --git a/tapsets/API-tcpmib-OutSegs.html b/tapsets/API-tcpmib-OutSegs.html deleted file mode 100644 index af81fc14..00000000 --- a/tapsets/API-tcpmib-OutSegs.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::tcpmib.OutSegs

Name

probe::tcpmib.OutSegs — - Count the sending of a TCP segment -

Synopsis

tcpmib.OutSegs 

Values

sk

- pointer to the struct sock being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - tcpmib_filter_key. If the packet passes the filter is is - counted in the global OutSegs (equivalent to SNMP's MIB - TCP_MIB_OUTSEGS) -

diff --git a/tapsets/API-tcpmib-PassiveOpens.html b/tapsets/API-tcpmib-PassiveOpens.html deleted file mode 100644 index 1b29af7f..00000000 --- a/tapsets/API-tcpmib-PassiveOpens.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::tcpmib.PassiveOpens

Name

probe::tcpmib.PassiveOpens — - Count the passive creation of a socket -

Synopsis

tcpmib.PassiveOpens 

Values

sk

- pointer to the struct sock being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - tcpmib_filter_key. If the packet passes the filter is is - counted in the global PassiveOpens (equivalent to SNMP's MIB - TCP_MIB_PASSIVEOPENS) -

diff --git a/tapsets/API-tcpmib-RetransSegs.html b/tapsets/API-tcpmib-RetransSegs.html deleted file mode 100644 index 3ea721af..00000000 --- a/tapsets/API-tcpmib-RetransSegs.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::tcpmib.RetransSegs

Name

probe::tcpmib.RetransSegs — - Count the retransmission of a TCP segment -

Synopsis

tcpmib.RetransSegs 

Values

sk

- pointer to the struct sock being acted on -

op

- value to be added to the counter (default value of 1) -

Description

- The packet pointed to by skb is filtered by the function - tcpmib_filter_key. If the packet passes the filter is is - counted in the global RetransSegs (equivalent to SNMP's MIB - TCP_MIB_RETRANSSEGS) -

diff --git a/tapsets/API-tcpmib-filter-key.html b/tapsets/API-tcpmib-filter-key.html deleted file mode 100644 index 9a8aba76..00000000 --- a/tapsets/API-tcpmib-filter-key.html +++ /dev/null @@ -1,15 +0,0 @@ -function::tcpmib_filter_key

Name

function::tcpmib_filter_key — - Default filter function for tcpmib.* probes -

Synopsis

-    tcpmib_filter_key:long(sk:long,op:long)
-

Arguments

sk

- pointer to the struct sock being acted on -

op

- value to be counted if sk passes the filter -

Description

- This function is a default filter function. - The user can replace this function with their own. - The user-supplied filter function returns an index key based on the values - in sk. - A return value of 0 means this particular sk should be not be counted. -

diff --git a/tapsets/API-tcpmib-get-state.html b/tapsets/API-tcpmib-get-state.html deleted file mode 100644 index dbc10d5c..00000000 --- a/tapsets/API-tcpmib-get-state.html +++ /dev/null @@ -1,9 +0,0 @@ -function::tcpmib_get_state

Name

function::tcpmib_get_state — - Get a socket's state -

Synopsis

-    tcpmib_get_state:long(sk:long)
-

Arguments

sk

- pointer to a struct sock -

Description

- Returns the sk_state from a struct sock. -

diff --git a/tapsets/API-tcpmib-local-addr.html b/tapsets/API-tcpmib-local-addr.html deleted file mode 100644 index 760a1364..00000000 --- a/tapsets/API-tcpmib-local-addr.html +++ /dev/null @@ -1,9 +0,0 @@ -function::tcpmib_local_addr

Name

function::tcpmib_local_addr — - Get the source address -

Synopsis

-    tcpmib_local_addr:long(sk:long)
-

Arguments

sk

- pointer to a struct inet_sock -

Description

- Returns the saddr from a struct inet_sock in host order. -

diff --git a/tapsets/API-tcpmib-local-port.html b/tapsets/API-tcpmib-local-port.html deleted file mode 100644 index 2594bdf7..00000000 --- a/tapsets/API-tcpmib-local-port.html +++ /dev/null @@ -1,9 +0,0 @@ -function::tcpmib_local_port

Name

function::tcpmib_local_port — - Get the local port -

Synopsis

-    tcpmib_local_port:long(sk:long)
-

Arguments

sk

- pointer to a struct inet_sock -

Description

- Returns the sport from a struct inet_sock in host order. -

diff --git a/tapsets/API-tcpmib-remote-addr.html b/tapsets/API-tcpmib-remote-addr.html deleted file mode 100644 index dee93e54..00000000 --- a/tapsets/API-tcpmib-remote-addr.html +++ /dev/null @@ -1,9 +0,0 @@ -function::tcpmib_remote_addr

Name

function::tcpmib_remote_addr — - Get the remote address -

Synopsis

-    tcpmib_remote_addr:long(sk:long)
-

Arguments

sk

- pointer to a struct inet_sock -

Description

- Returns the daddr from a struct inet_sock in host order. -

diff --git a/tapsets/API-tcpmib-remote-port.html b/tapsets/API-tcpmib-remote-port.html deleted file mode 100644 index bf53b483..00000000 --- a/tapsets/API-tcpmib-remote-port.html +++ /dev/null @@ -1,9 +0,0 @@ -function::tcpmib_remote_port

Name

function::tcpmib_remote_port — - Get the remote port -

Synopsis

-    tcpmib_remote_port:long(sk:long)
-

Arguments

sk

- pointer to a struct inet_sock -

Description

- Returns the dport from a struct inet_sock in host order. -

diff --git a/tapsets/API-text-str.html b/tapsets/API-text-str.html deleted file mode 100644 index 57a56ea8..00000000 --- a/tapsets/API-text-str.html +++ /dev/null @@ -1,12 +0,0 @@ -function::text_str

Name

function::text_str — - Escape any non-printable chars in a string -

Synopsis

-    text_str:string(input:string)
-

Arguments

input

- the string to escape -

Description

- This function accepts a string argument, - and any ASCII characters that are not - printable are replaced by the corresponding escape sequence in the - returned string. -

diff --git a/tapsets/API-text-strn.html b/tapsets/API-text-strn.html deleted file mode 100644 index 0d32bf57..00000000 --- a/tapsets/API-text-strn.html +++ /dev/null @@ -1,17 +0,0 @@ -function::text_strn

Name

function::text_strn — - Escape any non-printable chars in a string -

Synopsis

-    text_strn:string(input:string,len:long,quoted:long)
-

Arguments

input

- the string to escape -

len

- maximum length of string to return (0 implies MAXSTRINGLEN) -

quoted

- put double quotes around the string. If input string is - truncated it will have ... after the second quote -

Description

- This function accepts a string of designated length, - and any ASCII characters that are not - printable are replaced by the corresponding escape sequence in the - returned string. -

diff --git a/tapsets/API-thread-indent.html b/tapsets/API-thread-indent.html deleted file mode 100644 index 28f1f947..00000000 --- a/tapsets/API-thread-indent.html +++ /dev/null @@ -1,14 +0,0 @@ -function::thread_indent

Name

function::thread_indent — - returns an amount of space with the current task information -

Synopsis

-    thread_indent:string(delta:long)
-

Arguments

delta

- the amount of space added/removed for each call -

Description

- This function returns a string with appropriate - indentation for a thread. Call it with a small positive or - matching negative delta. If this is the real outermost, - initial level of indentation, then the function resets the - relative timestamp base to zero. An example is shown at the - end of this file. -

diff --git a/tapsets/API-tid.html b/tapsets/API-tid.html deleted file mode 100644 index d6bdc54a..00000000 --- a/tapsets/API-tid.html +++ /dev/null @@ -1,9 +0,0 @@ -function::tid

Name

function::tid — - Returns the thread ID of a target process -

Synopsis

-    tid:long()
-

Arguments

- None -

Description

- This function returns the thread ID of the target process. -

diff --git a/tapsets/API-tokenize.html b/tapsets/API-tokenize.html deleted file mode 100644 index ce9e6e3b..00000000 --- a/tapsets/API-tokenize.html +++ /dev/null @@ -1,18 +0,0 @@ -function::tokenize

Name

function::tokenize — - Return the next non-empty token in a string -

Synopsis

-    tokenize:string(input:string,delim:string)
-

Arguments

input

- string to tokenize. If empty, returns the next non-empty token - in the string passed in the previous call to tokenize. -

delim

- set of characters that delimit the tokens -

Description

- This function returns the next non-empty token in the - given input string, where the tokens are delimited by characters in - the delim string. If the input string is non-empty, it returns the - first token. If the input string is empty, it returns the next - token in the string passed in the previous call to tokenize. - If no delimiter is found, the entire remaining input string is - returned. It returns empty when no more tokens are available. -

diff --git a/tapsets/API-tty-init.html b/tapsets/API-tty-init.html deleted file mode 100644 index b6d903af..00000000 --- a/tapsets/API-tty-init.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::tty.init

Name

probe::tty.init — - Called when a tty is being initalized -

Synopsis

tty.init 

Values

driver_name

- the driver name -

name

- the driver .dev_name name -

module

- the module name -

diff --git a/tapsets/API-tty-ioctl.html b/tapsets/API-tty-ioctl.html deleted file mode 100644 index ac68a41b..00000000 --- a/tapsets/API-tty-ioctl.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::tty.ioctl

Name

probe::tty.ioctl — - called when a ioctl is request to the tty -

Synopsis

tty.ioctl 

Values

cmd

- the ioctl command -

arg

- the ioctl argument -

name

- the file name -

diff --git a/tapsets/API-tty-open.html b/tapsets/API-tty-open.html deleted file mode 100644 index 00acedc0..00000000 --- a/tapsets/API-tty-open.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::tty.open

Name

probe::tty.open — - Called when a tty is opened -

Synopsis

tty.open 

Values

inode_state

- the inode state -

file_name

- the file name -

file_mode

- the file mode -

file_flags

- the file flags -

inode_number

- the inode number -

inode_flags

- the inode flags -

diff --git a/tapsets/API-tty-poll.html b/tapsets/API-tty-poll.html deleted file mode 100644 index e48e55db..00000000 --- a/tapsets/API-tty-poll.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::tty.poll

Name

probe::tty.poll — - Called when a tty device is being polled -

Synopsis

tty.poll 

Values

file_name

- the tty file name -

wait_key

- the wait queue key -

diff --git a/tapsets/API-tty-read.html b/tapsets/API-tty-read.html deleted file mode 100644 index 39f0c569..00000000 --- a/tapsets/API-tty-read.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::tty.read

Name

probe::tty.read — - called when a tty line will be read -

Synopsis

tty.read 

Values

driver_name

- the driver name -

buffer

- the buffer that will receive the characters -

file_name

- the file name lreated to the tty -

nr

- The amount of characters to be read -

diff --git a/tapsets/API-tty-receive.html b/tapsets/API-tty-receive.html deleted file mode 100644 index ff1281e4..00000000 --- a/tapsets/API-tty-receive.html +++ /dev/null @@ -1,17 +0,0 @@ -probe::tty.receive

Name

probe::tty.receive — - called when a tty receives a message -

Synopsis

tty.receive 

Values

driver_name

- the driver name -

count

- The amount of characters received -

name

- the name of the module file -

fp

- The flag buffer -

cp

- the buffer that was received -

index

- The tty Index -

id

- the tty id -

diff --git a/tapsets/API-tty-register.html b/tapsets/API-tty-register.html deleted file mode 100644 index db13b629..00000000 --- a/tapsets/API-tty-register.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::tty.register

Name

probe::tty.register — - Called when a tty device is registred -

Synopsis

tty.register 

Values

driver_name

- the driver name -

name

- the driver .dev_name name -

index

- the tty index requested -

module

- the module name -

diff --git a/tapsets/API-tty-release.html b/tapsets/API-tty-release.html deleted file mode 100644 index a1202d9c..00000000 --- a/tapsets/API-tty-release.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::tty.release

Name

probe::tty.release — - Called when the tty is closed -

Synopsis

tty.release 

Values

inode_state

- the inode state -

file_name

- the file name -

file_mode

- the file mode -

file_flags

- the file flags -

inode_number

- the inode number -

inode_flags

- the inode flags -

diff --git a/tapsets/API-tty-resize.html b/tapsets/API-tty-resize.html deleted file mode 100644 index 90b3c784..00000000 --- a/tapsets/API-tty-resize.html +++ /dev/null @@ -1,21 +0,0 @@ -probe::tty.resize

Name

probe::tty.resize — - Called when a terminal resize happens -

Synopsis

tty.resize 

Values

new_ypixel

- the new ypixel value -

old_col

- the old col value -

old_xpixel

- the old xpixel -

old_ypixel

- the old ypixel -

name

- the tty name -

old_row

- the old row value -

new_row

- the new row value -

new_xpixel

- the new xpixel value -

new_col

- the new col value -

diff --git a/tapsets/API-tty-unregister.html b/tapsets/API-tty-unregister.html deleted file mode 100644 index 541dd957..00000000 --- a/tapsets/API-tty-unregister.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::tty.unregister

Name

probe::tty.unregister — - Called when a tty device is being unregistered -

Synopsis

tty.unregister 

Values

driver_name

- the driver name -

name

- the driver .dev_name name -

index

- the tty index requested -

module

- the module name -

diff --git a/tapsets/API-tty-write.html b/tapsets/API-tty-write.html deleted file mode 100644 index c7ca9c96..00000000 --- a/tapsets/API-tty-write.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::tty.write

Name

probe::tty.write — - write to the tty line -

Synopsis

tty.write 

Values

driver_name

- the driver name -

buffer

- the buffer that will be written -

file_name

- the file name lreated to the tty -

nr

- The amount of characters -

diff --git a/tapsets/API-tz-ctime.html b/tapsets/API-tz-ctime.html deleted file mode 100644 index 85dc0a4a..00000000 --- a/tapsets/API-tz-ctime.html +++ /dev/null @@ -1,13 +0,0 @@ -function::tz_ctime

Name

function::tz_ctime — - Convert seconds since epoch into human readable date/time string, with local time zone -

Synopsis

-    tz_ctime(epochsecs:)
-

Arguments

epochsecs

- number of seconds since epoch (as returned by gettimeofday_s) -

Description

- Takes an argument of seconds since the epoch as returned by - gettimeofday_s. Returns a string of the same form as ctime, but - offsets the epoch time for the local time zone, and appends the name of the - local time zone. The string length may vary. The time zone information is - passed by staprun at script startup only. -

diff --git a/tapsets/API-tz-gmtoff.html b/tapsets/API-tz-gmtoff.html deleted file mode 100644 index 562afc9e..00000000 --- a/tapsets/API-tz-gmtoff.html +++ /dev/null @@ -1,10 +0,0 @@ -function::tz_gmtoff

Name

function::tz_gmtoff — - Return local time zone offset -

Synopsis

-    tz_gmtoff()
-

Arguments

- None -

Description

- Returns the local time zone offset (seconds west of UTC), as - passed by staprun at script startup only. -

diff --git a/tapsets/API-tz-name.html b/tapsets/API-tz-name.html deleted file mode 100644 index 6df55e02..00000000 --- a/tapsets/API-tz-name.html +++ /dev/null @@ -1,10 +0,0 @@ -function::tz_name

Name

function::tz_name — - Return local time zone name -

Synopsis

-    tz_name()
-

Arguments

- None -

Description

- Returns the local time zone name, as passed by staprun at - script startup only. -

diff --git a/tapsets/API-u-register.html b/tapsets/API-u-register.html deleted file mode 100644 index 76128488..00000000 --- a/tapsets/API-u-register.html +++ /dev/null @@ -1,10 +0,0 @@ -function::u_register

Name

function::u_register — - Return the unsigned value of the named CPU register -

Synopsis

-    u_register:long(name:string)
-

Arguments

name

- Name of the register to return -

Description

- Same as register(name), except that if the register - is 32 bits wide, it is zero-extended to 64 bits. -

diff --git a/tapsets/API-u32-arg.html b/tapsets/API-u32-arg.html deleted file mode 100644 index 2fb07455..00000000 --- a/tapsets/API-u32-arg.html +++ /dev/null @@ -1,10 +0,0 @@ -function::u32_arg

Name

function::u32_arg — - Return function argument as unsigned 32-bit value -

Synopsis

-    u32_arg:long(n:long)
-

Arguments

n

- index of argument to return -

Description

- Return the unsigned 32-bit value of argument n, - same as uint_arg. -

diff --git a/tapsets/API-u64-arg.html b/tapsets/API-u64-arg.html deleted file mode 100644 index 9f35e990..00000000 --- a/tapsets/API-u64-arg.html +++ /dev/null @@ -1,10 +0,0 @@ -function::u64_arg

Name

function::u64_arg — - Return function argument as unsigned 64-bit value -

Synopsis

-    u64_arg:long(n:long)
-

Arguments

n

- index of argument to return -

Description

- Return the unsigned 64-bit value of argument n, - same as ulonglong_arg. -

diff --git a/tapsets/API-uaddr.html b/tapsets/API-uaddr.html deleted file mode 100644 index f06e2c6c..00000000 --- a/tapsets/API-uaddr.html +++ /dev/null @@ -1,14 +0,0 @@ -function::uaddr

Name

function::uaddr — - User space address of current running task -

Synopsis

-    uaddr:long()
-

Arguments

- None -

Description

- Returns the address in userspace that the current - task was at when the probe occurred. When the current running task - isn't a user space thread, or the address cannot be found, zero - is returned. Can be used to see where the current task is combined - with usymname or usymdata. Often the task will be in the VDSO - where it entered the kernel. -

diff --git a/tapsets/API-ubacktrace.html b/tapsets/API-ubacktrace.html deleted file mode 100644 index e922718a..00000000 --- a/tapsets/API-ubacktrace.html +++ /dev/null @@ -1,18 +0,0 @@ -function::ubacktrace

Name

function::ubacktrace — - Hex backtrace of current user-space task stack. -

Synopsis

-    ubacktrace:string()
-

Arguments

- None -

Description

-

- - Return a string of hex addresses that are a backtrace of the - stack of the current task. Output may be truncated as per maximum - string length. Returns empty string when current probe point cannot - determine user backtrace. See backtrace for kernel traceback. -

Note

- To get (full) backtraces for user space applications and shared - shared libraries not mentioned in the current script run stap with - -d /path/to/exe-or-so and/or add --ldd to load all needed unwind data. -

diff --git a/tapsets/API-ucallers.html b/tapsets/API-ucallers.html deleted file mode 100644 index 7e5ecc0a..00000000 --- a/tapsets/API-ucallers.html +++ /dev/null @@ -1,16 +0,0 @@ -function::ucallers

Name

function::ucallers — - Return first n elements of user stack backtrace -

Synopsis

-    ucallers:string(n:long)
-

Arguments

n

- number of levels to descend in the stack (not counting the top - level). If n is -1, print the entire stack. -

Description

- This function returns a string of the first n hex - addresses from the backtrace of the user stack. Output may be - truncated as per maximum string length (MAXSTRINGLEN). -

Note

- To get (full) backtraces for user space applications and shared - shared libraries not mentioned in the current script run stap with - -d /path/to/exe-or-so and/or add --ldd to load all needed unwind data. -

diff --git a/tapsets/API-udelay.html b/tapsets/API-udelay.html deleted file mode 100644 index 6812a46c..00000000 --- a/tapsets/API-udelay.html +++ /dev/null @@ -1,10 +0,0 @@ -function::udelay

Name

function::udelay — - microsecond delay -

Synopsis

-    udelay(us:long)
-

Arguments

us

- Number of microseconds to delay. -

Description

- This function inserts a multi-microsecond busy-delay into a probe handler. - It requires guru mode. -

diff --git a/tapsets/API-udp-disconnect-return.html b/tapsets/API-udp-disconnect-return.html deleted file mode 100644 index 0f98e571..00000000 --- a/tapsets/API-udp-disconnect-return.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::udp.disconnect.return

Name

probe::udp.disconnect.return — - UDP has been disconnected successfully -

Synopsis

udp.disconnect.return 

Values

ret

- Error code (0: no error) -

name

- The name of this probe -

Context

- The process which requested a UDP disconnection -

diff --git a/tapsets/API-udp-disconnect.html b/tapsets/API-udp-disconnect.html deleted file mode 100644 index e5d5765a..00000000 --- a/tapsets/API-udp-disconnect.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::udp.disconnect

Name

probe::udp.disconnect — - Fires when a process requests for a UDP disconnection -

Synopsis

udp.disconnect 

Values

flags

- Flags (e.g. FIN, etc) -

name

- The name of this probe -

sock

- Network socket used by the process -

Context

- The process which requests a UDP disconnection -

diff --git a/tapsets/API-udp-recvmsg-return.html b/tapsets/API-udp-recvmsg-return.html deleted file mode 100644 index e1cad39c..00000000 --- a/tapsets/API-udp-recvmsg-return.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::udp.recvmsg.return

Name

probe::udp.recvmsg.return — - Fires whenever an attempt to receive a UDP message received is completed -

Synopsis

udp.recvmsg.return 

Values

name

- The name of this probe -

size

- Number of bytes received by the process -

Context

- The process which received a UDP message -

diff --git a/tapsets/API-udp-recvmsg.html b/tapsets/API-udp-recvmsg.html deleted file mode 100644 index 9981b7a8..00000000 --- a/tapsets/API-udp-recvmsg.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::udp.recvmsg

Name

probe::udp.recvmsg — - Fires whenever a UDP message is received -

Synopsis

udp.recvmsg 

Values

name

- The name of this probe -

size

- Number of bytes received by the process -

sock

- Network socket used by the process -

Context

- The process which received a UDP message -

diff --git a/tapsets/API-udp-sendmsg-return.html b/tapsets/API-udp-sendmsg-return.html deleted file mode 100644 index f79c99af..00000000 --- a/tapsets/API-udp-sendmsg-return.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::udp.sendmsg.return

Name

probe::udp.sendmsg.return — - Fires whenever an attempt to send a UDP message is completed -

Synopsis

udp.sendmsg.return 

Values

name

- The name of this probe -

size

- Number of bytes sent by the process -

Context

- The process which sent a UDP message -

diff --git a/tapsets/API-udp-sendmsg.html b/tapsets/API-udp-sendmsg.html deleted file mode 100644 index e6fa6a7a..00000000 --- a/tapsets/API-udp-sendmsg.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::udp.sendmsg

Name

probe::udp.sendmsg — - Fires whenever a process sends a UDP message -

Synopsis

udp.sendmsg 

Values

name

- The name of this probe -

size

- Number of bytes sent by the process -

sock

- Network socket used by the process -

Context

- The process which sent a UDP message -

diff --git a/tapsets/API-uid.html b/tapsets/API-uid.html deleted file mode 100644 index 8043a99f..00000000 --- a/tapsets/API-uid.html +++ /dev/null @@ -1,9 +0,0 @@ -function::uid

Name

function::uid — - Returns the user ID of a target process -

Synopsis

-    uid:long()
-

Arguments

- None -

Description

- This function returns the user ID of the target process. -

diff --git a/tapsets/API-uint-arg.html b/tapsets/API-uint-arg.html deleted file mode 100644 index 482c4559..00000000 --- a/tapsets/API-uint-arg.html +++ /dev/null @@ -1,10 +0,0 @@ -function::uint_arg

Name

function::uint_arg — - Return function argument as unsigned int -

Synopsis

-    uint_arg:long(n:long)
-

Arguments

n

- index of argument to return -

Description

- Return the value of argument n as an unsigned int - (i.e., a 32-bit integer zero-extended to 64 bits). -

diff --git a/tapsets/API-ulong-arg.html b/tapsets/API-ulong-arg.html deleted file mode 100644 index 0e3405b9..00000000 --- a/tapsets/API-ulong-arg.html +++ /dev/null @@ -1,11 +0,0 @@ -function::ulong_arg

Name

function::ulong_arg — - Return function argument as unsigned long -

Synopsis

-    ulong_arg:long(n:long)
-

Arguments

n

- index of argument to return -

Description

- Return the value of argument n as an unsigned long. - On architectures where a long is 32 bits, the value is zero-extended - to 64 bits. -

diff --git a/tapsets/API-ulonglong-arg.html b/tapsets/API-ulonglong-arg.html deleted file mode 100644 index 8b98c683..00000000 --- a/tapsets/API-ulonglong-arg.html +++ /dev/null @@ -1,10 +0,0 @@ -function::ulonglong_arg

Name

function::ulonglong_arg — - Return function argument as 64-bit value -

Synopsis

-    ulonglong_arg:long(n:long)
-

Arguments

n

- index of argument to return -

Description

- Return the value of argument n as a 64-bit value. - (Same as longlong_arg.) -

diff --git a/tapsets/API-umodname.html b/tapsets/API-umodname.html deleted file mode 100644 index 69bf5c90..00000000 --- a/tapsets/API-umodname.html +++ /dev/null @@ -1,11 +0,0 @@ -function::umodname

Name

function::umodname — - Returns the (short) name of the user module. -

Synopsis

-    umodname:string(addr:long)
-

Arguments

addr

- User-space address -

Description

- Returns the short name of the user space module for the current task that - that the given address is part of. Returns <unknown> when the address - isn't in a (mapped in) module, or the module cannot be found for some reason. -

diff --git a/tapsets/API-user-char-warn.html b/tapsets/API-user-char-warn.html deleted file mode 100644 index 361fcf96..00000000 --- a/tapsets/API-user-char-warn.html +++ /dev/null @@ -1,11 +0,0 @@ -function::user_char_warn

Name

function::user_char_warn — - Retrieves a char value stored in user space -

Synopsis

-    user_char_warn:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the char from -

Description

- Returns the char value from a given user space address. - Returns zero when user space and warns (but does not abort) about the - failure. -

diff --git a/tapsets/API-user-char.html b/tapsets/API-user-char.html deleted file mode 100644 index 36051a20..00000000 --- a/tapsets/API-user-char.html +++ /dev/null @@ -1,10 +0,0 @@ -function::user_char

Name

function::user_char — - Retrieves a char value stored in user space -

Synopsis

-    user_char:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the char from -

Description

- Returns the char value from a given user space address. - Returns zero when user space data is not accessible. -

diff --git a/tapsets/API-user-int-warn.html b/tapsets/API-user-int-warn.html deleted file mode 100644 index c1a083b1..00000000 --- a/tapsets/API-user-int-warn.html +++ /dev/null @@ -1,11 +0,0 @@ -function::user_int_warn

Name

function::user_int_warn — - Retrieves an int value stored in user space -

Synopsis

-    user_int_warn:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the int from -

Description

- Returns the int value from a given user space address. - Returns zero when user space and warns (but does not abort) about the - failure. -

diff --git a/tapsets/API-user-int.html b/tapsets/API-user-int.html deleted file mode 100644 index 187831f4..00000000 --- a/tapsets/API-user-int.html +++ /dev/null @@ -1,10 +0,0 @@ -function::user_int

Name

function::user_int — - Retrieves an int value stored in user space -

Synopsis

-    user_int:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the int from -

Description

- Returns the int value from a given user space address. - Returns zero when user space data is not accessible. -

diff --git a/tapsets/API-user-int16.html b/tapsets/API-user-int16.html deleted file mode 100644 index 2b60bdfe..00000000 --- a/tapsets/API-user-int16.html +++ /dev/null @@ -1,10 +0,0 @@ -function::user_int16

Name

function::user_int16 — - Retrieves a 16-bit integer value stored in user space -

Synopsis

-    user_int16:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the 16-bit integer from -

Description

- Returns the 16-bit integer value from a given user space - address. Returns zero when user space data is not accessible. -

diff --git a/tapsets/API-user-int32.html b/tapsets/API-user-int32.html deleted file mode 100644 index 981dd20a..00000000 --- a/tapsets/API-user-int32.html +++ /dev/null @@ -1,10 +0,0 @@ -function::user_int32

Name

function::user_int32 — - Retrieves a 32-bit integer value stored in user space -

Synopsis

-    user_int32:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the 32-bit integer from -

Description

- Returns the 32-bit integer value from a given user space - address. Returns zero when user space data is not accessible. -

diff --git a/tapsets/API-user-int64.html b/tapsets/API-user-int64.html deleted file mode 100644 index 37fda523..00000000 --- a/tapsets/API-user-int64.html +++ /dev/null @@ -1,10 +0,0 @@ -function::user_int64

Name

function::user_int64 — - Retrieves a 64-bit integer value stored in user space -

Synopsis

-    user_int64:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the 64-bit integer from -

Description

- Returns the 64-bit integer value from a given user space - address. Returns zero when user space data is not accessible. -

diff --git a/tapsets/API-user-int8.html b/tapsets/API-user-int8.html deleted file mode 100644 index f08fae98..00000000 --- a/tapsets/API-user-int8.html +++ /dev/null @@ -1,10 +0,0 @@ -function::user_int8

Name

function::user_int8 — - Retrieves a 8-bit integer value stored in user space -

Synopsis

-    user_int8:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the 8-bit integer from -

Description

- Returns the 8-bit integer value from a given user space - address. Returns zero when user space data is not accessible. -

diff --git a/tapsets/API-user-long-warn.html b/tapsets/API-user-long-warn.html deleted file mode 100644 index f0ca55d1..00000000 --- a/tapsets/API-user-long-warn.html +++ /dev/null @@ -1,13 +0,0 @@ -function::user_long_warn

Name

function::user_long_warn — - Retrieves a long value stored in user space -

Synopsis

-    user_long_warn:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the long from -

Description

- Returns the long value from a given user space address. - Returns zero when user space and warns (but does not abort) about the - failure. Note that the size of the long depends on the architecture - of the current user space task (for those architectures that support - both 64/32 bit compat tasks). -

diff --git a/tapsets/API-user-long.html b/tapsets/API-user-long.html deleted file mode 100644 index 1681c4ec..00000000 --- a/tapsets/API-user-long.html +++ /dev/null @@ -1,12 +0,0 @@ -function::user_long

Name

function::user_long — - Retrieves a long value stored in user space -

Synopsis

-    user_long:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the long from -

Description

- Returns the long value from a given user space address. - Returns zero when user space data is not accessible. Note that the - size of the long depends on the architecture of the current user space - task (for those architectures that support both 64/32 bit compat tasks). -

diff --git a/tapsets/API-user-mode.html b/tapsets/API-user-mode.html deleted file mode 100644 index d6defe37..00000000 --- a/tapsets/API-user-mode.html +++ /dev/null @@ -1,11 +0,0 @@ -function::user_mode

Name

function::user_mode — - Determines if probe point occurs in user-mode -

Synopsis

-    user_mode:long()
-

Arguments

- None -

Description

-

- - Return 1 if the probe point occurred in user-mode. -

diff --git a/tapsets/API-user-short-warn.html b/tapsets/API-user-short-warn.html deleted file mode 100644 index 877fcf53..00000000 --- a/tapsets/API-user-short-warn.html +++ /dev/null @@ -1,11 +0,0 @@ -function::user_short_warn

Name

function::user_short_warn — - Retrieves a short value stored in user space -

Synopsis

-    user_short_warn:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the short from -

Description

- Returns the short value from a given user space address. - Returns zero when user space and warns (but does not abort) about the - failure. -

diff --git a/tapsets/API-user-short.html b/tapsets/API-user-short.html deleted file mode 100644 index 2ef74912..00000000 --- a/tapsets/API-user-short.html +++ /dev/null @@ -1,10 +0,0 @@ -function::user_short

Name

function::user_short — - Retrieves a short value stored in user space -

Synopsis

-    user_short:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the short from -

Description

- Returns the short value from a given user space address. - Returns zero when user space data is not accessible. -

diff --git a/tapsets/API-user-string-n-quoted.html b/tapsets/API-user-string-n-quoted.html deleted file mode 100644 index 0b64b5b5..00000000 --- a/tapsets/API-user-string-n-quoted.html +++ /dev/null @@ -1,16 +0,0 @@ -function::user_string_n_quoted

Name

function::user_string_n_quoted — - Retrieves and quotes string from user space -

Synopsis

-    user_string_n_quoted:string(addr:long,n:long)
-

Arguments

addr

- the user space address to retrieve the string from -

n

- the maximum length of the string (if not null terminated) -

Description

- Returns up to n characters of a C string from the given - user space memory address where any ASCII characters that are not - printable are replaced by the corresponding escape sequence in the - returned string. Reports NULL for address zero. Returns <unknown> - on the rare cases when userspace data is not accessible at the given - address. -

diff --git a/tapsets/API-user-string-n-warn.html b/tapsets/API-user-string-n-warn.html deleted file mode 100644 index eb93ee6b..00000000 --- a/tapsets/API-user-string-n-warn.html +++ /dev/null @@ -1,14 +0,0 @@ -function::user_string_n_warn

Name

function::user_string_n_warn — - Retrieves string from user space -

Synopsis

-    user_string_n_warn:string(addr:long,n:long)
-

Arguments

addr

- the user space address to retrieve the string from -

n

- the maximum length of the string (if not null terminated) -

Description

- Returns up to n characters of a C string from a given - user space memory address. Reports <unknown> on the rare cases - when userspace data is not accessible and warns (but does not abort) - about the failure. -

diff --git a/tapsets/API-user-string-n.html b/tapsets/API-user-string-n.html deleted file mode 100644 index 06124a2a..00000000 --- a/tapsets/API-user-string-n.html +++ /dev/null @@ -1,13 +0,0 @@ -function::user_string_n

Name

function::user_string_n — - Retrieves string of given length from user space -

Synopsis

-    user_string_n:string(addr:long,n:long)
-

Arguments

addr

- the user space address to retrieve the string from -

n

- the maximum length of the string (if not null terminated) -

Description

- Returns the C string of a maximum given length from a - given user space address. Returns <unknown> on the rare cases - when userspace data is not accessible at the given address. -

diff --git a/tapsets/API-user-string-n2.html b/tapsets/API-user-string-n2.html deleted file mode 100644 index 8eef6b17..00000000 --- a/tapsets/API-user-string-n2.html +++ /dev/null @@ -1,16 +0,0 @@ -function::user_string_n2

Name

function::user_string_n2 — - Retrieves string of given length from user space -

Synopsis

-    user_string_n2:string(addr:long,n:long,err_msg:string)
-

Arguments

addr

- the user space address to retrieve the string from -

n

- the maximum length of the string (if not null terminated) -

err_msg

- the error message to return when data isn't available -

Description

- Returns the C string of a maximum given length from a - given user space address. Returns the given error message string on - the rare cases when userspace data is not accessible at the given - address. -

diff --git a/tapsets/API-user-string-quoted.html b/tapsets/API-user-string-quoted.html deleted file mode 100644 index 7957ea1d..00000000 --- a/tapsets/API-user-string-quoted.html +++ /dev/null @@ -1,13 +0,0 @@ -function::user_string_quoted

Name

function::user_string_quoted — - Retrieves and quotes string from user space -

Synopsis

-    user_string_quoted:string(addr:long)
-

Arguments

addr

- the user space address to retrieve the string from -

Description

- Returns the null terminated C string from a given user space - memory address where any ASCII characters that are not printable are - replaced by the corresponding escape sequence in the returned string. - Reports NULL for address zero. Returns <unknown> on the rare - cases when userspace data is not accessible at the given address. -

diff --git a/tapsets/API-user-string-utf16.html b/tapsets/API-user-string-utf16.html deleted file mode 100644 index d8dd052f..00000000 --- a/tapsets/API-user-string-utf16.html +++ /dev/null @@ -1,11 +0,0 @@ -function::user_string_utf16

Name

function::user_string_utf16 — - Retrieves UTF-16 string from user memory -

Synopsis

-    user_string_utf16:string(addr:long)
-

Arguments

addr

- The user address to retrieve the string from -

Description

- This function returns a null terminated UTF-8 string converted - from the UTF-16 string at a given user memory address. Reports an error on - string copy fault or conversion error. -

diff --git a/tapsets/API-user-string-utf32.html b/tapsets/API-user-string-utf32.html deleted file mode 100644 index 766f7aa3..00000000 --- a/tapsets/API-user-string-utf32.html +++ /dev/null @@ -1,11 +0,0 @@ -function::user_string_utf32

Name

function::user_string_utf32 — - Retrieves UTF-32 string from user memory -

Synopsis

-    user_string_utf32:string(addr:long)
-

Arguments

addr

- The user address to retrieve the string from -

Description

- This function returns a null terminated UTF-8 string converted - from the UTF-32 string at a given user memory address. Reports an error on - string copy fault or conversion error. -

diff --git a/tapsets/API-user-string-warn.html b/tapsets/API-user-string-warn.html deleted file mode 100644 index d272e051..00000000 --- a/tapsets/API-user-string-warn.html +++ /dev/null @@ -1,11 +0,0 @@ -function::user_string_warn

Name

function::user_string_warn — - Retrieves string from user space -

Synopsis

-    user_string_warn:string(addr:long)
-

Arguments

addr

- the user space address to retrieve the string from -

Description

- Returns the null terminated C string from a given user space - memory address. Reports <unknown> on the rare cases when userspace - data is not accessible and warns (but does not abort) about the failure. -

diff --git a/tapsets/API-user-string.html b/tapsets/API-user-string.html deleted file mode 100644 index 346a3be1..00000000 --- a/tapsets/API-user-string.html +++ /dev/null @@ -1,11 +0,0 @@ -function::user_string

Name

function::user_string — - Retrieves string from user space -

Synopsis

-    user_string:string(addr:long)
-

Arguments

addr

- the user space address to retrieve the string from -

Description

- Returns the null terminated C string from a given user space - memory address. Reports <unknown> on the rare cases when userspace - data is not accessible. -

diff --git a/tapsets/API-user-string2-utf16.html b/tapsets/API-user-string2-utf16.html deleted file mode 100644 index 8d0abbf5..00000000 --- a/tapsets/API-user-string2-utf16.html +++ /dev/null @@ -1,13 +0,0 @@ -function::user_string2_utf16

Name

function::user_string2_utf16 — - Retrieves UTF-16 string from user memory with alternative error string -

Synopsis

-    user_string2_utf16:string(addr:long,err_msg:string)
-

Arguments

addr

- The user address to retrieve the string from -

err_msg

- The error message to return when data isn't available -

Description

- This function returns a null terminated UTF-8 string converted - from the UTF-16 string at a given user memory address. Reports the given - error message on string copy fault or conversion error. -

diff --git a/tapsets/API-user-string2-utf32.html b/tapsets/API-user-string2-utf32.html deleted file mode 100644 index 7522a102..00000000 --- a/tapsets/API-user-string2-utf32.html +++ /dev/null @@ -1,13 +0,0 @@ -function::user_string2_utf32

Name

function::user_string2_utf32 — - Retrieves UTF-32 string from user memory with alternative error string -

Synopsis

-    user_string2_utf32:string(addr:long,err_msg:string)
-

Arguments

addr

- The user address to retrieve the string from -

err_msg

- The error message to return when data isn't available -

Description

- This function returns a null terminated UTF-8 string converted - from the UTF-32 string at a given user memory address. Reports the given - error message on string copy fault or conversion error. -

diff --git a/tapsets/API-user-string2.html b/tapsets/API-user-string2.html deleted file mode 100644 index 22782974..00000000 --- a/tapsets/API-user-string2.html +++ /dev/null @@ -1,13 +0,0 @@ -function::user_string2

Name

function::user_string2 — - Retrieves string from user space with alternative error string -

Synopsis

-    user_string2:string(addr:long,err_msg:string)
-

Arguments

addr

- the user space address to retrieve the string from -

err_msg

- the error message to return when data isn't available -

Description

- Returns the null terminated C string from a given user space - memory address. Reports the given error message on the rare cases when - userspace data is not accessible. -

diff --git a/tapsets/API-user-uint16.html b/tapsets/API-user-uint16.html deleted file mode 100644 index 3c225483..00000000 --- a/tapsets/API-user-uint16.html +++ /dev/null @@ -1,10 +0,0 @@ -function::user_uint16

Name

function::user_uint16 — - Retrieves an unsigned 16-bit integer value stored in user space -

Synopsis

-    user_uint16:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the unsigned 16-bit integer from -

Description

- Returns the unsigned 16-bit integer value from a given user - space address. Returns zero when user space data is not accessible. -

diff --git a/tapsets/API-user-uint32.html b/tapsets/API-user-uint32.html deleted file mode 100644 index e5926f7a..00000000 --- a/tapsets/API-user-uint32.html +++ /dev/null @@ -1,10 +0,0 @@ -function::user_uint32

Name

function::user_uint32 — - Retrieves an unsigned 32-bit integer value stored in user space -

Synopsis

-    user_uint32:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the unsigned 32-bit integer from -

Description

- Returns the unsigned 32-bit integer value from a given user - space address. Returns zero when user space data is not accessible. -

diff --git a/tapsets/API-user-uint64.html b/tapsets/API-user-uint64.html deleted file mode 100644 index 3202c9af..00000000 --- a/tapsets/API-user-uint64.html +++ /dev/null @@ -1,10 +0,0 @@ -function::user_uint64

Name

function::user_uint64 — - Retrieves an unsigned 64-bit integer value stored in user space -

Synopsis

-    user_uint64:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the unsigned 64-bit integer from -

Description

- Returns the unsigned 64-bit integer value from a given user - space address. Returns zero when user space data is not accessible. -

diff --git a/tapsets/API-user-uint8.html b/tapsets/API-user-uint8.html deleted file mode 100644 index 5ef216fb..00000000 --- a/tapsets/API-user-uint8.html +++ /dev/null @@ -1,10 +0,0 @@ -function::user_uint8

Name

function::user_uint8 — - Retrieves an unsigned 8-bit integer value stored in user space -

Synopsis

-    user_uint8:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the unsigned 8-bit integer from -

Description

- Returns the unsigned 8-bit integer value from a given user - space address. Returns zero when user space data is not accessible. -

diff --git a/tapsets/API-user-ushort-warn.html b/tapsets/API-user-ushort-warn.html deleted file mode 100644 index 7d5a28f6..00000000 --- a/tapsets/API-user-ushort-warn.html +++ /dev/null @@ -1,11 +0,0 @@ -function::user_ushort_warn

Name

function::user_ushort_warn — - Retrieves an unsigned short value stored in user space -

Synopsis

-    user_ushort_warn:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the unsigned short from -

Description

- Returns the unsigned short value from a given user - space address. Returns zero when user space and warns (but does - not abort) about the failure. -

diff --git a/tapsets/API-user-ushort.html b/tapsets/API-user-ushort.html deleted file mode 100644 index 36b11583..00000000 --- a/tapsets/API-user-ushort.html +++ /dev/null @@ -1,10 +0,0 @@ -function::user_ushort

Name

function::user_ushort — - Retrieves an unsigned short value stored in user space -

Synopsis

-    user_ushort:long(addr:long)
-

Arguments

addr

- the user space address to retrieve the unsigned short from -

Description

- Returns the unsigned short value from a given user - space address. Returns zero when user space data is not accessible. -

diff --git a/tapsets/API-usrdev2kerndev.html b/tapsets/API-usrdev2kerndev.html deleted file mode 100644 index 722a219d..00000000 --- a/tapsets/API-usrdev2kerndev.html +++ /dev/null @@ -1,7 +0,0 @@ -function::usrdev2kerndev

Name

function::usrdev2kerndev — - Converts a user-space device number into the format used in the kernel -

Synopsis

-    usrdev2kerndev:long(dev:long)
-

Arguments

dev

- Device number in user-space format. -

diff --git a/tapsets/API-ustack.html b/tapsets/API-ustack.html deleted file mode 100644 index 882c5176..00000000 --- a/tapsets/API-ustack.html +++ /dev/null @@ -1,12 +0,0 @@ -function::ustack

Name

function::ustack — - Return address at given depth of user stack backtrace -

Synopsis

-    ustack:long(n:long)
-

Arguments

n

- number of levels to descend in the stack. -

Description

- Performs a simple (user space) backtrace, and returns the - element at the specified position. The results of the backtrace itself - are cached, so that the backtrace computation is performed at most once - no matter how many times ustack is called, or in what order. -

diff --git a/tapsets/API-usymdata.html b/tapsets/API-usymdata.html deleted file mode 100644 index d7801c11..00000000 --- a/tapsets/API-usymdata.html +++ /dev/null @@ -1,15 +0,0 @@ -function::usymdata

Name

function::usymdata — - Return the symbol and module offset of an address. -

Synopsis

-    usymdata:string(addr:long)
-

Arguments

addr

- The address to translate. -

Description

- Returns the (function) symbol name associated with the - given address in the current task if known, the offset from the - start and the size of the symbol, plus the module name (between - brackets). If symbol is unknown, but module is known, the offset - inside the module, plus the size of the module is added. If any - element is not known it will be omitted and if the symbol name is - unknown it will return the hex string for the given address. -

diff --git a/tapsets/API-usymname.html b/tapsets/API-usymname.html deleted file mode 100644 index 071f3f0e..00000000 --- a/tapsets/API-usymname.html +++ /dev/null @@ -1,11 +0,0 @@ -function::usymname

Name

function::usymname — - Return the symbol of an address in the current task. -

Synopsis

-    usymname:string(addr:long)
-

Arguments

addr

- The address to translate. -

Description

- Returns the (function) symbol name associated with the - given address if known. If not known it will return the hex string - representation of addr. -

diff --git a/tapsets/API-vm-brk.html b/tapsets/API-vm-brk.html deleted file mode 100644 index 4aaf2482..00000000 --- a/tapsets/API-vm-brk.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::vm.brk

Name

probe::vm.brk — - Fires when a brk is requested (i.e. the heap will be resized) -

Synopsis

vm.brk 

Values

length

- the length of the memory segment -

name

- name of the probe point -

address

- the requested address -

Context

- The process calling brk. -

diff --git a/tapsets/API-vm-fault-contains.html b/tapsets/API-vm-fault-contains.html deleted file mode 100644 index 98a1fc56..00000000 --- a/tapsets/API-vm-fault-contains.html +++ /dev/null @@ -1,9 +0,0 @@ -function::vm_fault_contains

Name

function::vm_fault_contains — - Test return value for page fault reason -

Synopsis

-    vm_fault_contains:long(value:long,test:long)
-

Arguments

value

- the fault_type returned by vm.page_fault.return -

test

- the type of fault to test for (VM_FAULT_OOM or similar) -

diff --git a/tapsets/API-vm-kfree.html b/tapsets/API-vm-kfree.html deleted file mode 100644 index b528f247..00000000 --- a/tapsets/API-vm-kfree.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::vm.kfree

Name

probe::vm.kfree — - Fires when kfree is requested -

Synopsis

vm.kfree 

Values

ptr

- pointer to the kmemory allocated which is returned by kmalloc -

caller_function

- name of the caller function. -

call_site

- address of the function calling this kmemory function -

name

- name of the probe point -

diff --git a/tapsets/API-vm-kmalloc-node.html b/tapsets/API-vm-kmalloc-node.html deleted file mode 100644 index e7b42b78..00000000 --- a/tapsets/API-vm-kmalloc-node.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::vm.kmalloc_node

Name

probe::vm.kmalloc_node — - Fires when kmalloc_node is requested -

Synopsis

vm.kmalloc_node 

Values

ptr

- pointer to the kmemory allocated -

caller_function

- name of the caller function -

call_site

- address of the function caling this kmemory function -

gfp_flag_name

- type of kmemory to allocate(in string format) -

name

- name of the probe point -

bytes_req

- requested Bytes -

bytes_alloc

- allocated Bytes -

gfp_flags

- type of kmemory to allocate -

diff --git a/tapsets/API-vm-kmalloc.html b/tapsets/API-vm-kmalloc.html deleted file mode 100644 index 7fa78243..00000000 --- a/tapsets/API-vm-kmalloc.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::vm.kmalloc

Name

probe::vm.kmalloc — - Fires when kmalloc is requested -

Synopsis

vm.kmalloc 

Values

ptr

- pointer to the kmemory allocated -

caller_function

- name of the caller function -

call_site

- address of the kmemory function -

gfp_flag_name

- type of kmemory to allocate (in String format) -

name

- name of the probe point -

bytes_req

- requested Bytes -

bytes_alloc

- allocated Bytes -

gfp_flags

- type of kmemory to allocate -

diff --git a/tapsets/API-vm-kmem-cache-alloc-node.html b/tapsets/API-vm-kmem-cache-alloc-node.html deleted file mode 100644 index 236ddda6..00000000 --- a/tapsets/API-vm-kmem-cache-alloc-node.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::vm.kmem_cache_alloc_node

Name

probe::vm.kmem_cache_alloc_node — - Fires when kmem_cache_alloc_node is requested -

Synopsis

vm.kmem_cache_alloc_node 

Values

ptr

- pointer to the kmemory allocated -

caller_function

- name of the caller function -

call_site

- address of the function calling this kmemory function -

gfp_flag_name

- type of kmemory to allocate(in string format) -

name

- name of the probe point -

bytes_req

- requested Bytes -

bytes_alloc

- allocated Bytes -

gfp_flags

- type of kmemory to allocate -

diff --git a/tapsets/API-vm-kmem-cache-alloc.html b/tapsets/API-vm-kmem-cache-alloc.html deleted file mode 100644 index f7129de9..00000000 --- a/tapsets/API-vm-kmem-cache-alloc.html +++ /dev/null @@ -1,19 +0,0 @@ -probe::vm.kmem_cache_alloc

Name

probe::vm.kmem_cache_alloc — - Fires when kmem_cache_alloc is requested -

Synopsis

vm.kmem_cache_alloc 

Values

ptr

- pointer to the kmemory allocated -

caller_function

- name of the caller function. -

call_site

- address of the function calling this kmemory function. -

gfp_flag_name

- type of kmemory to allocate(in string format) -

name

- name of the probe point -

bytes_req

- requested Bytes -

bytes_alloc

- allocated Bytes -

gfp_flags

- type of kmemory to allocate -

diff --git a/tapsets/API-vm-kmem-cache-free.html b/tapsets/API-vm-kmem-cache-free.html deleted file mode 100644 index beae01fb..00000000 --- a/tapsets/API-vm-kmem-cache-free.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::vm.kmem_cache_free

Name

probe::vm.kmem_cache_free — - Fires when kmem_cache_free is requested -

Synopsis

vm.kmem_cache_free 

Values

ptr

- Pointer to the kmemory allocated which is returned by kmem_cache -

caller_function

- Name of the caller function. -

call_site

- Address of the function calling this kmemory function -

name

- Name of the probe point -

diff --git a/tapsets/API-vm-mmap.html b/tapsets/API-vm-mmap.html deleted file mode 100644 index 6e63227b..00000000 --- a/tapsets/API-vm-mmap.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::vm.mmap

Name

probe::vm.mmap — - Fires when an mmap is requested -

Synopsis

vm.mmap 

Values

length

- the length of the memory segment -

name

- name of the probe point -

address

- the requested address -

Context

- The process calling mmap. -

diff --git a/tapsets/API-vm-munmap.html b/tapsets/API-vm-munmap.html deleted file mode 100644 index 7ba23c24..00000000 --- a/tapsets/API-vm-munmap.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::vm.munmap

Name

probe::vm.munmap — - Fires when an munmap is requested -

Synopsis

vm.munmap 

Values

length

- the length of the memory segment -

name

- name of the probe point -

address

- the requested address -

Context

- The process calling munmap. -

diff --git a/tapsets/API-vm-oom-kill.html b/tapsets/API-vm-oom-kill.html deleted file mode 100644 index d097b42a..00000000 --- a/tapsets/API-vm-oom-kill.html +++ /dev/null @@ -1,10 +0,0 @@ -probe::vm.oom_kill

Name

probe::vm.oom_kill — - Fires when a thread is selected for termination by the OOM killer -

Synopsis

vm.oom_kill 

Values

name

- name of the probe point -

task

- the task being killed -

Context

- The process that tried to consume excessive memory, and thus - triggered the OOM. -

diff --git a/tapsets/API-vm-pagefault-return.html b/tapsets/API-vm-pagefault-return.html deleted file mode 100644 index 9443e09d..00000000 --- a/tapsets/API-vm-pagefault-return.html +++ /dev/null @@ -1,11 +0,0 @@ -probe::vm.pagefault.return

Name

probe::vm.pagefault.return — - Indicates what type of fault occurred -

Synopsis

vm.pagefault.return 

Values

name

- name of the probe point -

fault_type

- returns either - 0 (VM_FAULT_OOM) for out of memory faults, - 2 (VM_FAULT_MINOR) for minor faults, 3 (VM_FAULT_MAJOR) for - major faults, or 1 (VM_FAULT_SIGBUS) if the fault was neither OOM, minor fault, - nor major fault. -

diff --git a/tapsets/API-vm-pagefault.html b/tapsets/API-vm-pagefault.html deleted file mode 100644 index 1fd224a7..00000000 --- a/tapsets/API-vm-pagefault.html +++ /dev/null @@ -1,12 +0,0 @@ -probe::vm.pagefault

Name

probe::vm.pagefault — - Records that a page fault occurred -

Synopsis

vm.pagefault 

Values

write_access

- indicates whether this was a write or read access; 1 indicates a write, - while 0 indicates a read -

name

- name of the probe point -

address

- the address of the faulting memory access; i.e. the address that caused the page fault -

Context

- The process which triggered the fault -

diff --git a/tapsets/API-vm-write-shared-copy.html b/tapsets/API-vm-write-shared-copy.html deleted file mode 100644 index c5e9279b..00000000 --- a/tapsets/API-vm-write-shared-copy.html +++ /dev/null @@ -1,15 +0,0 @@ -probe::vm.write_shared_copy

Name

probe::vm.write_shared_copy — - Page copy for shared page write -

Synopsis

vm.write_shared_copy 

Values

name

- Name of the probe point -

zero

- boolean indicating whether it is a zero page - (can do a clear instead of a copy) -

address

- The address of the shared write -

Context

- The process attempting the write. -

Description

- Fires when a write to a shared page requires a page copy. This is - always preceded by a vm.shared_write. -

diff --git a/tapsets/API-vm-write-shared.html b/tapsets/API-vm-write-shared.html deleted file mode 100644 index 22517ac2..00000000 --- a/tapsets/API-vm-write-shared.html +++ /dev/null @@ -1,13 +0,0 @@ -probe::vm.write_shared

Name

probe::vm.write_shared — - Attempts at writing to a shared page -

Synopsis

vm.write_shared 

Values

name

- name of the probe point -

address

- the address of the shared write -

Context

- The context is the process attempting the write. -

Description

- Fires when a process attempts to write to a shared page. - If a copy is necessary, this will be followed by a - vm.write_shared_copy. -

diff --git a/tapsets/API-warn.html b/tapsets/API-warn.html deleted file mode 100644 index aa746112..00000000 --- a/tapsets/API-warn.html +++ /dev/null @@ -1,11 +0,0 @@ -function::warn

Name

function::warn — - Send a line to the warning stream -

Synopsis

-    warn(msg:string)
-

Arguments

msg

- The formatted message string -

Description

- This function sends a warning message immediately to - staprun. It is also sent over the bulk transport (relayfs) if it is - being used. If the last characater is not a newline, the one is added. -

diff --git a/tapsets/API-workqueue-create.html b/tapsets/API-workqueue-create.html deleted file mode 100644 index 08fd109f..00000000 --- a/tapsets/API-workqueue-create.html +++ /dev/null @@ -1,7 +0,0 @@ -probe::workqueue.create

Name

probe::workqueue.create — - Creating a new workqueue -

Synopsis

workqueue.create 

Values

wq_thread

- task_struct of the workqueue thread -

cpu

- cpu for which the worker thread is created -

diff --git a/tapsets/API-workqueue-destroy.html b/tapsets/API-workqueue-destroy.html deleted file mode 100644 index 9c13c499..00000000 --- a/tapsets/API-workqueue-destroy.html +++ /dev/null @@ -1,5 +0,0 @@ -probe::workqueue.destroy

Name

probe::workqueue.destroy — - Destroying workqueue -

Synopsis

workqueue.destroy 

Values

wq_thread

- task_struct of the workqueue thread -

diff --git a/tapsets/API-workqueue-execute.html b/tapsets/API-workqueue-execute.html deleted file mode 100644 index b5cfc30a..00000000 --- a/tapsets/API-workqueue-execute.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::workqueue.execute

Name

probe::workqueue.execute — - Executing deferred work -

Synopsis

workqueue.execute 

Values

wq_thread

- task_struct of the workqueue thread -

work_func

- pointer to handler function -

work

- work_struct* being executed -

diff --git a/tapsets/API-workqueue-insert.html b/tapsets/API-workqueue-insert.html deleted file mode 100644 index f5bf4038..00000000 --- a/tapsets/API-workqueue-insert.html +++ /dev/null @@ -1,9 +0,0 @@ -probe::workqueue.insert

Name

probe::workqueue.insert — - Queuing work on a workqueue -

Synopsis

workqueue.insert 

Values

wq_thread

- task_struct of the workqueue thread -

work_func

- pointer to handler function -

work

- work_struct* being queued -

diff --git a/tapsets/ansi.stp.html b/tapsets/ansi.stp.html deleted file mode 100644 index 03faa681..00000000 --- a/tapsets/ansi.stp.html +++ /dev/null @@ -1,31 +0,0 @@ -Chapter 28. Utility functions for using ansi control chars in logs

Chapter 28. Utility functions for using ansi control chars in logs

Table of Contents

function::ansi_clear_screen — - Move cursor to top left and clear screen. -
function::ansi_cursor_hide — - Hides the cursor. -
function::ansi_cursor_move — - Move cursor to new coordinates. -
function::ansi_cursor_restore — - Restores a previously saved cursor position. -
function::ansi_cursor_save — - Saves the cursor position. -
function::ansi_cursor_show — - Shows the cursor. -
function::ansi_new_line — - Move cursor to new line. -
function::ansi_reset_color — - Resets Select Graphic Rendition mode. -
function::ansi_set_color — - Set the ansi Select Graphic Rendition mode. -
function::ansi_set_color2 — - Set the ansi Select Graphic Rendition mode. -
function::ansi_set_color3 — - Set the ansi Select Graphic Rendition mode. -
function::indent — - returns an amount of space to indent -
function::thread_indent — - returns an amount of space with the current task information -

- Utility functions for logging using ansi control characters. This - lets you manipulate the cursor position and character color output - and attributes of log messages. -

diff --git a/tapsets/context_stp.html b/tapsets/context_stp.html deleted file mode 100644 index 6c0cc906..00000000 --- a/tapsets/context_stp.html +++ /dev/null @@ -1,207 +0,0 @@ -Chapter 2. Context Functions

Chapter 2. Context Functions

Table of Contents

function::addr — - Address of the current probe point. -
function::asmlinkage — - Mark function as declared asmlinkage -
function::backtrace — - Hex backtrace of current kernel stack -
function::caller — - Return name and address of calling function -
function::caller_addr — - Return caller address -
function::callers — - Return first n elements of kernel stack backtrace -
function::cmdline_arg — - Fetch a command line argument -
function::cmdline_args — - Fetch command line arguments from current process -
function::cmdline_str — - Fetch all command line arguments from current process -
function::cpu — - Returns the current cpu number -
function::cpuid — - Returns the current cpu number -
function::egid — - Returns the effective gid of a target process -
function::env_var — - Fetch environment variable from current process -
function::euid — - Return the effective uid of a target process -
function::execname — - Returns the execname of a target process (or group of processes) -
function::fastcall — - Mark function as declared fastcall -
function::gid — - Returns the group ID of a target process -
function::int_arg — - Return function argument as signed int -
function::is_myproc — - Determines if the current probe point has occurred in the user's own process -
function::is_return — - Whether the current probe context is a return probe -
function::long_arg — - Return function argument as signed long -
function::longlong_arg — - Return function argument as 64-bit value -
function::modname — - Return the kernel module name loaded at the address -
function::module_name — - The module name of the current script -
function::pexecname — - Returns the execname of a target process's parent process -
function::pgrp — - Returns the process group ID of the current process -
function::pid — - Returns the ID of a target process -
function::pid2execname — - The name of the given process identifier -
function::pid2task — - The task_struct of the given process identifier -
function::pn — - Returns the active probe name -
function::pointer_arg — - Return function argument as pointer value -
function::pp — - Returns the active probe point -
function::ppfunc — - Returns the function name parsed from pp -
function::ppid — - Returns the process ID of a target process's parent process -
function::print_backtrace — - Print kernel stack back trace -
function::print_regs — - Print a register dump -
function::print_stack — - Print out kernel stack from string -
function::print_syms — - Print out kernel stack from string -
function::print_ubacktrace — - Print stack back trace for current user-space task. -
function::print_ubacktrace_brief — - Print stack back trace for current user-space task. -
function::print_ustack — - Print out stack for the current task from string. -
function::print_usyms — - Print out user stack from string -
function::probe_type — - The low level probe handler type of the current probe. -
function::probefunc — - Return the probe point's function name, if known -
function::probemod — - Return the probe point's kernel module name -
function::pstrace — - Chain of processes and pids back to init(1) -
function::register — - Return the signed value of the named CPU register -
function::registers_valid — - Determines validity of register and u_register in current context -
function::regparm — - Specify regparm value used to compile function -
function::remote_id — - The index of this instance in a remote execution. -
function::remote_uri — - The name of this instance in a remote execution. -
function::s32_arg — - Return function argument as signed 32-bit value -
function::s64_arg — - Return function argument as signed 64-bit value -
function::sid — - Returns the session ID of the current process -
function::sprint_backtrace — - Return stack back trace as string -
function::sprint_stack — - Return stack for kernel addresses from string -
function::sprint_syms — - Return stack for kernel addresses from string -
function::sprint_ubacktrace — - Return stack back trace for current user-space task as string. -
function::sprint_ustack — - Return stack for the current task from string. -
function::sprint_usyms — - Return stack for user addresses from string -
function::stack — - Return address at given depth of kernel stack backtrace -
function::stack_size — - Return the size of the kernel stack -
function::stack_unused — - Returns the amount of kernel stack currently available -
function::stack_used — - Returns the amount of kernel stack used -
function::stp_pid — - The process id of the stapio process -
function::symdata — - Return the kernel symbol and module offset for the address -
function::symname — - Return the kernel symbol associated with the given address -
function::target — - Return the process ID of the target process -
function::task_backtrace — - Hex backtrace of an arbitrary task -
function::task_cpu — - The scheduled cpu of the task -
function::task_current — - The current task_struct of the current task -
function::task_egid — - The effective group identifier of the task -
function::task_euid — - The effective user identifier of the task -
function::task_execname — - The name of the task -
function::task_gid — - The group identifier of the task -
function::task_max_file_handles — - The max number of open files for the task -
function::task_nice — - The nice value of the task -
function::task_open_file_handles — - The number of open files of the task -
function::task_parent — - The task_struct of the parent task -
function::task_pid — - The process identifier of the task -
function::task_prio — - The priority value of the task -
function::task_state — - The state of the task -
function::task_tid — - The thread identifier of the task -
function::task_uid — - The user identifier of the task -
function::tid — - Returns the thread ID of a target process -
function::u32_arg — - Return function argument as unsigned 32-bit value -
function::u64_arg — - Return function argument as unsigned 64-bit value -
function::u_register — - Return the unsigned value of the named CPU register -
function::uaddr — - User space address of current running task -
function::ubacktrace — - Hex backtrace of current user-space task stack. -
function::ucallers — - Return first n elements of user stack backtrace -
function::uid — - Returns the user ID of a target process -
function::uint_arg — - Return function argument as unsigned int -
function::ulong_arg — - Return function argument as unsigned long -
function::ulonglong_arg — - Return function argument as 64-bit value -
function::umodname — - Returns the (short) name of the user module. -
function::user_mode — - Determines if probe point occurs in user-mode -
function::ustack — - Return address at given depth of user stack backtrace -
function::usymdata — - Return the symbol and module offset of an address. -
function::usymname — - Return the symbol of an address in the current task. -

- The context functions provide additional information about where - an event occurred. - These functions can provide information such as a backtrace to - where the event occurred - and the current register values for the processor. -

diff --git a/tapsets/conversions-guru.stp.html b/tapsets/conversions-guru.stp.html deleted file mode 100644 index fd4d6c03..00000000 --- a/tapsets/conversions-guru.stp.html +++ /dev/null @@ -1,22 +0,0 @@ -Chapter 25. String and data writing functions Tapset

Chapter 25. String and data writing functions Tapset

Table of Contents

function::set_kernel_char — - Writes a char value to kernel memory -
function::set_kernel_int — - Writes an int value to kernel memory -
function::set_kernel_long — - Writes a long value to kernel memory -
function::set_kernel_pointer — - Writes a pointer value to kernel memory. -
function::set_kernel_short — - Writes a short value to kernel memory -
function::set_kernel_string — - Writes a string to kernel memory -
function::set_kernel_string_n — - Writes a string of given length to kernel memory -

- The SystemTap guru mode can be used to test error handling - in kernel code by simulating faults. The functions in the - this tapset provide - standard methods of writing to primitive types in the kernel's - memory. All the functions in this tapset require the use of - guru mode (-g). -

diff --git a/tapsets/conversions.stp.html b/tapsets/conversions.stp.html deleted file mode 100644 index 65a2fbd1..00000000 --- a/tapsets/conversions.stp.html +++ /dev/null @@ -1,93 +0,0 @@ -Chapter 24. String and data retrieving functions Tapset

Chapter 24. String and data retrieving functions Tapset

Table of Contents

function::atomic_long_read — - Retrieves an atomic long variable from kernel memory -
function::atomic_read — - Retrieves an atomic variable from kernel memory -
function::kernel_char — - Retrieves a char value stored in kernel memory -
function::kernel_int — - Retrieves an int value stored in kernel memory -
function::kernel_long — - Retrieves a long value stored in kernel memory -
function::kernel_pointer — - Retrieves a pointer value stored in kernel memory -
function::kernel_short — - Retrieves a short value stored in kernel memory -
function::kernel_string — - Retrieves string from kernel memory -
function::kernel_string2 — - Retrieves string from kernel memory with alternative error string -
function::kernel_string2_utf16 — - Retrieves UTF-16 string from kernel memory with alternative error string -
function::kernel_string2_utf32 — - Retrieves UTF-32 string from kernel memory with alternative error string -
function::kernel_string_n — - Retrieves string of given length from kernel memory -
function::kernel_string_utf16 — - Retrieves UTF-16 string from kernel memory -
function::kernel_string_utf32 — - Retrieves UTF-32 string from kernel memory -
function::user_char — - Retrieves a char value stored in user space -
function::user_char_warn — - Retrieves a char value stored in user space -
function::user_int — - Retrieves an int value stored in user space -
function::user_int16 — - Retrieves a 16-bit integer value stored in user space -
function::user_int32 — - Retrieves a 32-bit integer value stored in user space -
function::user_int64 — - Retrieves a 64-bit integer value stored in user space -
function::user_int8 — - Retrieves a 8-bit integer value stored in user space -
function::user_int_warn — - Retrieves an int value stored in user space -
function::user_long — - Retrieves a long value stored in user space -
function::user_long_warn — - Retrieves a long value stored in user space -
function::user_short — - Retrieves a short value stored in user space -
function::user_short_warn — - Retrieves a short value stored in user space -
function::user_string — - Retrieves string from user space -
function::user_string2 — - Retrieves string from user space with alternative error string -
function::user_string2_utf16 — - Retrieves UTF-16 string from user memory with alternative error string -
function::user_string2_utf32 — - Retrieves UTF-32 string from user memory with alternative error string -
function::user_string_n — - Retrieves string of given length from user space -
function::user_string_n2 — - Retrieves string of given length from user space -
function::user_string_n_quoted — - Retrieves and quotes string from user space -
function::user_string_n_warn — - Retrieves string from user space -
function::user_string_quoted — - Retrieves and quotes string from user space -
function::user_string_utf16 — - Retrieves UTF-16 string from user memory -
function::user_string_utf32 — - Retrieves UTF-32 string from user memory -
function::user_string_warn — - Retrieves string from user space -
function::user_uint16 — - Retrieves an unsigned 16-bit integer value stored in user space -
function::user_uint32 — - Retrieves an unsigned 32-bit integer value stored in user space -
function::user_uint64 — - Retrieves an unsigned 64-bit integer value stored in user space -
function::user_uint8 — - Retrieves an unsigned 8-bit integer value stored in user space -
function::user_ushort — - Retrieves an unsigned short value stored in user space -
function::user_ushort_warn — - Retrieves an unsigned short value stored in user space -

- Functions to retrieve strings and other primitive types from - the kernel or a user space programs based on addresses. All - strings are of a maximum length given by MAXSTRINGLEN. -

diff --git a/tapsets/ctime.stp.html b/tapsets/ctime.stp.html deleted file mode 100644 index 942fac40..00000000 --- a/tapsets/ctime.stp.html +++ /dev/null @@ -1,13 +0,0 @@ -Chapter 4. Time utility functions

Chapter 4. Time utility functions

Table of Contents

function::ctime — - Convert seconds since epoch into human readable date/time string -
function::tz_ctime — - Convert seconds since epoch into human readable date/time string, with local time zone -
function::tz_gmtoff — - Return local time zone offset -
function::tz_name — - Return local time zone name -

- Utility functions to turn seconds since the epoch (as returned by - the timestamp function gettimeofday_s()) into a human readable - date/time strings. -

diff --git a/tapsets/dentry.stp.html b/tapsets/dentry.stp.html deleted file mode 100644 index fb55a36e..00000000 --- a/tapsets/dentry.stp.html +++ /dev/null @@ -1,16 +0,0 @@ -Chapter 20. Directory-entry (dentry) Tapset

Chapter 20. Directory-entry (dentry) Tapset

Table of Contents

function::d_name — - get the dirent name -
function::d_path — - get the full nameidata path -
function::inode_name — - get the inode name -
function::real_mount — - get the 'struct mount' pointer -
function::reverse_path_walk — - get the full dirent path -
function::task_dentry_path — - get the full dentry path -

- This family of functions is used to map kernel VFS - directory entry pointers to file or full path names. -

diff --git a/tapsets/dev.stp.html b/tapsets/dev.stp.html deleted file mode 100644 index 40078ce1..00000000 --- a/tapsets/dev.stp.html +++ /dev/null @@ -1,12 +0,0 @@ -Chapter 19. Device Tapset

Chapter 19. Device Tapset

Table of Contents

function::MAJOR — - Extract major device number from a kernel device number (kdev_t) -
function::MINOR — - Extract minor device number from a kernel device number (kdev_t) -
function::MKDEV — - Creates a value that can be compared to a kernel device number (kdev_t) -
function::usrdev2kerndev — - Converts a user-space device number into the format used in the kernel -

- This set of functions is used to handle kernel and userspace device numbers. - It contains the following functions: -

diff --git a/tapsets/errno.stp.html b/tapsets/errno.stp.html deleted file mode 100644 index d52b774c..00000000 --- a/tapsets/errno.stp.html +++ /dev/null @@ -1,12 +0,0 @@ -Chapter 18. Errno Tapset

Chapter 18. Errno Tapset

Table of Contents

function::errno_str — - Symbolic string associated with error code -
function::return_str — - Formats the return value as a string -
function::returnstr — - Formats the return value as a string -
function::returnval — - Possible return value of probed function -

- This set of functions is used to handle errno number values. - It contains the following functions: -

diff --git a/tapsets/guru-delay.stp.html b/tapsets/guru-delay.stp.html deleted file mode 100644 index e5d592b7..00000000 --- a/tapsets/guru-delay.stp.html +++ /dev/null @@ -1,12 +0,0 @@ -Chapter 26. Guru tapsets

Chapter 26. Guru tapsets

Table of Contents

function::mdelay — - millisecond delay -
function::panic — - trigger a panic -
function::udelay — - microsecond delay -

- Functions to deliberately interfere with the system's behavior, in - order to inject faults or improve observability. - All the functions in this tapset require the use of - guru mode (-g). -

diff --git a/tapsets/index.html b/tapsets/index.html deleted file mode 100644 index 2f9b4bf1..00000000 --- a/tapsets/index.html +++ /dev/null @@ -1,1206 +0,0 @@ -SystemTap Tapset Reference Manual

SystemTap Tapset Reference Manual

SystemTap

Hackers 

- This documentation is free software; you can redistribute - it and/or modify it under the terms of the GNU General Public - License version 2 as published by the Free Software Foundation. -

- This program is distributed in the hope that it will be - useful, but WITHOUT ANY WARRANTY; without even the implied - warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. -

- You should have received a copy of the GNU General Public - License along with this program; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301 USA. -

- For more details see the file COPYING in the source - distribution of Linux. -


Table of Contents

1. Introduction
2. Context Functions
function::addr — - Address of the current probe point. -
function::asmlinkage — - Mark function as declared asmlinkage -
function::backtrace — - Hex backtrace of current kernel stack -
function::caller — - Return name and address of calling function -
function::caller_addr — - Return caller address -
function::callers — - Return first n elements of kernel stack backtrace -
function::cmdline_arg — - Fetch a command line argument -
function::cmdline_args — - Fetch command line arguments from current process -
function::cmdline_str — - Fetch all command line arguments from current process -
function::cpu — - Returns the current cpu number -
function::cpuid — - Returns the current cpu number -
function::egid — - Returns the effective gid of a target process -
function::env_var — - Fetch environment variable from current process -
function::euid — - Return the effective uid of a target process -
function::execname — - Returns the execname of a target process (or group of processes) -
function::fastcall — - Mark function as declared fastcall -
function::gid — - Returns the group ID of a target process -
function::int_arg — - Return function argument as signed int -
function::is_myproc — - Determines if the current probe point has occurred in the user's own process -
function::is_return — - Whether the current probe context is a return probe -
function::long_arg — - Return function argument as signed long -
function::longlong_arg — - Return function argument as 64-bit value -
function::modname — - Return the kernel module name loaded at the address -
function::module_name — - The module name of the current script -
function::pexecname — - Returns the execname of a target process's parent process -
function::pgrp — - Returns the process group ID of the current process -
function::pid — - Returns the ID of a target process -
function::pid2execname — - The name of the given process identifier -
function::pid2task — - The task_struct of the given process identifier -
function::pn — - Returns the active probe name -
function::pointer_arg — - Return function argument as pointer value -
function::pp — - Returns the active probe point -
function::ppfunc — - Returns the function name parsed from pp -
function::ppid — - Returns the process ID of a target process's parent process -
function::print_backtrace — - Print kernel stack back trace -
function::print_regs — - Print a register dump -
function::print_stack — - Print out kernel stack from string -
function::print_syms — - Print out kernel stack from string -
function::print_ubacktrace — - Print stack back trace for current user-space task. -
function::print_ubacktrace_brief — - Print stack back trace for current user-space task. -
function::print_ustack — - Print out stack for the current task from string. -
function::print_usyms — - Print out user stack from string -
function::probe_type — - The low level probe handler type of the current probe. -
function::probefunc — - Return the probe point's function name, if known -
function::probemod — - Return the probe point's kernel module name -
function::pstrace — - Chain of processes and pids back to init(1) -
function::register — - Return the signed value of the named CPU register -
function::registers_valid — - Determines validity of register and u_register in current context -
function::regparm — - Specify regparm value used to compile function -
function::remote_id — - The index of this instance in a remote execution. -
function::remote_uri — - The name of this instance in a remote execution. -
function::s32_arg — - Return function argument as signed 32-bit value -
function::s64_arg — - Return function argument as signed 64-bit value -
function::sid — - Returns the session ID of the current process -
function::sprint_backtrace — - Return stack back trace as string -
function::sprint_stack — - Return stack for kernel addresses from string -
function::sprint_syms — - Return stack for kernel addresses from string -
function::sprint_ubacktrace — - Return stack back trace for current user-space task as string. -
function::sprint_ustack — - Return stack for the current task from string. -
function::sprint_usyms — - Return stack for user addresses from string -
function::stack — - Return address at given depth of kernel stack backtrace -
function::stack_size — - Return the size of the kernel stack -
function::stack_unused — - Returns the amount of kernel stack currently available -
function::stack_used — - Returns the amount of kernel stack used -
function::stp_pid — - The process id of the stapio process -
function::symdata — - Return the kernel symbol and module offset for the address -
function::symname — - Return the kernel symbol associated with the given address -
function::target — - Return the process ID of the target process -
function::task_backtrace — - Hex backtrace of an arbitrary task -
function::task_cpu — - The scheduled cpu of the task -
function::task_current — - The current task_struct of the current task -
function::task_egid — - The effective group identifier of the task -
function::task_euid — - The effective user identifier of the task -
function::task_execname — - The name of the task -
function::task_gid — - The group identifier of the task -
function::task_max_file_handles — - The max number of open files for the task -
function::task_nice — - The nice value of the task -
function::task_open_file_handles — - The number of open files of the task -
function::task_parent — - The task_struct of the parent task -
function::task_pid — - The process identifier of the task -
function::task_prio — - The priority value of the task -
function::task_state — - The state of the task -
function::task_tid — - The thread identifier of the task -
function::task_uid — - The user identifier of the task -
function::tid — - Returns the thread ID of a target process -
function::u32_arg — - Return function argument as unsigned 32-bit value -
function::u64_arg — - Return function argument as unsigned 64-bit value -
function::u_register — - Return the unsigned value of the named CPU register -
function::uaddr — - User space address of current running task -
function::ubacktrace — - Hex backtrace of current user-space task stack. -
function::ucallers — - Return first n elements of user stack backtrace -
function::uid — - Returns the user ID of a target process -
function::uint_arg — - Return function argument as unsigned int -
function::ulong_arg — - Return function argument as unsigned long -
function::ulonglong_arg — - Return function argument as 64-bit value -
function::umodname — - Returns the (short) name of the user module. -
function::user_mode — - Determines if probe point occurs in user-mode -
function::ustack — - Return address at given depth of user stack backtrace -
function::usymdata — - Return the symbol and module offset of an address. -
function::usymname — - Return the symbol of an address in the current task. -
3. Timestamp Functions
function::HZ — - Kernel HZ -
function::cpu_clock_ms — - Number of milliseconds on the given cpu's clock -
function::cpu_clock_ns — - Number of nanoseconds on the given cpu's clock -
function::cpu_clock_s — - Number of seconds on the given cpu's clock -
function::cpu_clock_us — - Number of microseconds on the given cpu's clock -
function::delete_stopwatch — - Remove an existing stopwatch -
function::get_cycles — - Processor cycle count -
function::gettimeofday_ms — - Number of milliseconds since UNIX epoch -
function::gettimeofday_ns — - Number of nanoseconds since UNIX epoch -
function::gettimeofday_s — - Number of seconds since UNIX epoch -
function::gettimeofday_us — - Number of microseconds since UNIX epoch -
function::jiffies — - Kernel jiffies count -
function::local_clock_ms — - Number of milliseconds on the local cpu's clock -
function::local_clock_ns — - Number of nanoseconds on the local cpu's clock -
function::local_clock_s — - Number of seconds on the local cpu's clock -
function::local_clock_us — - Number of microseconds on the local cpu's clock -
function::read_stopwatch_ms — - Reads the time in milliseconds for a stopwatch -
function::read_stopwatch_ns — - Reads the time in nanoseconds for a stopwatch -
function::read_stopwatch_s — - Reads the time in seconds for a stopwatch -
function::read_stopwatch_us — - Reads the time in microseconds for a stopwatch -
function::start_stopwatch — - Start a stopwatch -
function::stop_stopwatch — - Stop a stopwatch -
4. Time utility functions
function::ctime — - Convert seconds since epoch into human readable date/time string -
function::tz_ctime — - Convert seconds since epoch into human readable date/time string, with local time zone -
function::tz_gmtoff — - Return local time zone offset -
function::tz_name — - Return local time zone name -
5. Shell command functions
function::system — - Issue a command to the system -
6. Memory Tapset
function::addr_to_node — - Returns which node a given address belongs to within a NUMA system -
function::bytes_to_string — - Human readable string for given bytes -
function::mem_page_size — - Number of bytes in a page for this architecture -
function::pages_to_string — - Turns pages into a human readable string -
function::proc_mem_data — - Program data size (data + stack) in pages -
function::proc_mem_data_pid — - Program data size (data + stack) in pages -
function::proc_mem_rss — - Program resident set size in pages -
function::proc_mem_rss_pid — - Program resident set size in pages -
function::proc_mem_shr — - Program shared pages (from shared mappings) -
function::proc_mem_shr_pid — - Program shared pages (from shared mappings) -
function::proc_mem_size — - Total program virtual memory size in pages -
function::proc_mem_size_pid — - Total program virtual memory size in pages -
function::proc_mem_string — - Human readable string of current proc memory usage -
function::proc_mem_string_pid — - Human readable string of process memory usage -
function::proc_mem_txt — - Program text (code) size in pages -
function::proc_mem_txt_pid — - Program text (code) size in pages -
function::vm_fault_contains — - Test return value for page fault reason -
probe::vm.brk — - Fires when a brk is requested (i.e. the heap will be resized) -
probe::vm.kfree — - Fires when kfree is requested -
probe::vm.kmalloc — - Fires when kmalloc is requested -
probe::vm.kmalloc_node — - Fires when kmalloc_node is requested -
probe::vm.kmem_cache_alloc — - Fires when kmem_cache_alloc is requested -
probe::vm.kmem_cache_alloc_node — - Fires when kmem_cache_alloc_node is requested -
probe::vm.kmem_cache_free — - Fires when kmem_cache_free is requested -
probe::vm.mmap — - Fires when an mmap is requested -
probe::vm.munmap — - Fires when an munmap is requested -
probe::vm.oom_kill — - Fires when a thread is selected for termination by the OOM killer -
probe::vm.pagefault — - Records that a page fault occurred -
probe::vm.pagefault.return — - Indicates what type of fault occurred -
probe::vm.write_shared — - Attempts at writing to a shared page -
probe::vm.write_shared_copy — - Page copy for shared page write -
7. Task Time Tapset
function::cputime_to_msecs — - Translates the given cputime into milliseconds -
function::cputime_to_string — - Human readable string for given cputime -
function::msecs_to_string — - Human readable string for given milliseconds -
function::task_stime — - System time of the current task -
function::task_stime_tid — - System time of the given task -
function::task_time_string — - Human readable string of task time usage -
function::task_time_string_tid — - Human readable string of task time usage -
function::task_utime — - User time of the current task -
function::task_utime_tid — - User time of the given task -
8. Scheduler Tapset
probe::scheduler.balance — - A cpu attempting to find more work. -
probe::scheduler.cpu_off — - Process is about to stop running on a cpu -
probe::scheduler.cpu_on — - Process is beginning execution on a cpu -
probe::scheduler.ctxswitch — - A context switch is occuring. -
probe::scheduler.kthread_stop — - A thread created by kthread_create is being stopped -
probe::scheduler.kthread_stop.return — - A kthread is stopped and gets the return value -
probe::scheduler.migrate — - Task migrating across cpus -
probe::scheduler.process_exit — - Process exiting -
probe::scheduler.process_fork — - Process forked -
probe::scheduler.process_free — - Scheduler freeing a data structure for a process -
probe::scheduler.process_wait — - Scheduler starting to wait on a process -
probe::scheduler.signal_send — - Sending a signal -
probe::scheduler.tick — - Schedulers internal tick, a processes timeslice accounting is updated -
probe::scheduler.wait_task — - Waiting on a task to unschedule (become inactive) -
probe::scheduler.wakeup — - Task is woken up -
probe::scheduler.wakeup_new — - Newly created task is woken up for the first time -
9. IO Scheduler and block IO Tapset
probe::ioblock.end — - Fires whenever a block I/O transfer is complete. -
probe::ioblock.request — - Fires whenever making a generic block I/O request. -
probe::ioblock_trace.bounce — - Fires whenever a buffer bounce is needed for at least one page of a block IO request. -
probe::ioblock_trace.end — - Fires whenever a block I/O transfer is complete. -
probe::ioblock_trace.request — - Fires just as a generic block I/O request is created for a bio. -
probe::ioscheduler.elv_add_request — - probe to indicate request is added to the request queue. -
probe::ioscheduler.elv_add_request.kp — - kprobe based probe to indicate that a request was added to the request queue -
probe::ioscheduler.elv_add_request.tp — - tracepoint based probe to indicate a request is added to the request queue. -
probe::ioscheduler.elv_completed_request — - Fires when a request is completed -
probe::ioscheduler.elv_next_request — - Fires when a request is retrieved from the request queue -
probe::ioscheduler.elv_next_request.return — - Fires when a request retrieval issues a return signal -
probe::ioscheduler_trace.elv_abort_request — - Fires when a request is aborted. -
probe::ioscheduler_trace.elv_completed_request — - Fires when a request is -
probe::ioscheduler_trace.elv_issue_request — - Fires when a request is -
probe::ioscheduler_trace.elv_requeue_request — - Fires when a request is -
probe::ioscheduler_trace.plug — - Fires when a request queue is plugged; -
probe::ioscheduler_trace.unplug_io — - Fires when a request queue is unplugged; -
probe::ioscheduler_trace.unplug_timer — - Fires when unplug timer associated -
10. SCSI Tapset
probe::scsi.iocompleted — - SCSI mid-layer running the completion processing for block device I/O requests -
probe::scsi.iodispatching — - SCSI mid-layer dispatched low-level SCSI command -
probe::scsi.iodone — - SCSI command completed by low level driver and enqueued into the done queue. -
probe::scsi.ioentry — - Prepares a SCSI mid-layer request -
probe::scsi.ioexecute — - Create mid-layer SCSI request and wait for the result -
probe::scsi.set_state — - Order SCSI device state change -
11. TTY Tapset
probe::tty.init — - Called when a tty is being initalized -
probe::tty.ioctl — - called when a ioctl is request to the tty -
probe::tty.open — - Called when a tty is opened -
probe::tty.poll — - Called when a tty device is being polled -
probe::tty.read — - called when a tty line will be read -
probe::tty.receive — - called when a tty receives a message -
probe::tty.register — - Called when a tty device is registred -
probe::tty.release — - Called when the tty is closed -
probe::tty.resize — - Called when a terminal resize happens -
probe::tty.unregister — - Called when a tty device is being unregistered -
probe::tty.write — - write to the tty line -
12. Interrupt Request (IRQ) Tapset
probe::irq_handler.entry — - Execution of interrupt handler starting -
probe::irq_handler.exit — - Execution of interrupt handler completed -
probe::softirq.entry — - Execution of handler for a pending softirq starting -
probe::softirq.exit — - Execution of handler for a pending softirq completed -
probe::workqueue.create — - Creating a new workqueue -
probe::workqueue.destroy — - Destroying workqueue -
probe::workqueue.execute — - Executing deferred work -
probe::workqueue.insert — - Queuing work on a workqueue -
13. Networking Tapset
function::format_ipaddr — - Returns a string representation for an IP address -
function::htonl — - Convert 32-bit long from host to network order -
function::htonll — - Convert 64-bit long long from host to network order -
function::htons — - Convert 16-bit short from host to network order -
function::ip_ntop — - Returns a string representation for an IPv4 address -
function::ntohl — - Convert 32-bit long from network to host order -
function::ntohll — - Convert 64-bit long long from network to host order -
function::ntohs — - Convert 16-bit short from network to host order -
probe::netdev.change_mac — - Called when the netdev_name has the MAC changed -
probe::netdev.change_mtu — - Called when the netdev MTU is changed -
probe::netdev.change_rx_flag — - Called when the device RX flag will be changed -
probe::netdev.close — - Called when the device is closed -
probe::netdev.get_stats — - Called when someone asks the device statistics -
probe::netdev.hard_transmit — - Called when the devices is going to TX (hard) -
probe::netdev.ioctl — - Called when the device suffers an IOCTL -
probe::netdev.open — - Called when the device is opened -
probe::netdev.receive — - Data received from network device. -
probe::netdev.register — - Called when the device is registered -
probe::netdev.rx — - Called when the device is going to receive a packet -
probe::netdev.set_promiscuity — - Called when the device enters/leaves promiscuity -
probe::netdev.transmit — - Network device transmitting buffer -
probe::netdev.unregister — - Called when the device is being unregistered -
probe::netfilter.arp.forward — - - Called for each ARP packet to be forwarded -
probe::netfilter.arp.in — - - Called for each incoming ARP packet -
probe::netfilter.arp.out — - - Called for each outgoing ARP packet -
probe::netfilter.bridge.forward — - Called on an incoming bridging packet destined for some other computer -
probe::netfilter.bridge.local_in — - Called on a bridging packet destined for the local computer -
probe::netfilter.bridge.local_out — - Called on a bridging packet coming from a local process -
probe::netfilter.bridge.post_routing — - - Called before a bridging packet hits the wire -
probe::netfilter.bridge.pre_routing — - - Called before a bridging packet is routed -
probe::netfilter.ip.forward — - Called on an incoming IP packet addressed to some other computer -
probe::netfilter.ip.local_in — - Called on an incoming IP packet addressed to the local computer -
probe::netfilter.ip.local_out — - Called on an outgoing IP packet -
probe::netfilter.ip.post_routing — - Called immediately before an outgoing IP packet leaves the computer -
probe::netfilter.ip.pre_routing — - Called before an IP packet is routed -
probe::sunrpc.clnt.bind_new_program — - Bind a new RPC program to an existing client -
probe::sunrpc.clnt.call_async — - Make an asynchronous RPC call -
probe::sunrpc.clnt.call_sync — - Make a synchronous RPC call -
probe::sunrpc.clnt.clone_client — - Clone an RPC client structure -
probe::sunrpc.clnt.create_client — - Create an RPC client -
probe::sunrpc.clnt.restart_call — - Restart an asynchronous RPC call -
probe::sunrpc.clnt.shutdown_client — - Shutdown an RPC client -
probe::sunrpc.sched.delay — - Delay an RPC task -
probe::sunrpc.sched.execute — - Execute the RPC `scheduler' -
probe::sunrpc.sched.new_task — - Create new task for the specified client -
probe::sunrpc.sched.release_task — - Release all resources associated with a task -
probe::sunrpc.svc.create — - Create an RPC service -
probe::sunrpc.svc.destroy — - Destroy an RPC service -
probe::sunrpc.svc.drop — - Drop RPC request -
probe::sunrpc.svc.process — - Process an RPC request -
probe::sunrpc.svc.recv — - Listen for the next RPC request on any socket -
probe::sunrpc.svc.register — - Register an RPC service with the local portmapper -
probe::sunrpc.svc.send — - Return reply to RPC client -
probe::tcp.disconnect — - TCP socket disconnection -
probe::tcp.disconnect.return — - TCP socket disconnection complete -
probe::tcp.receive — - Called when a TCP packet is received -
probe::tcp.recvmsg — - Receiving TCP message -
probe::tcp.recvmsg.return — - Receiving TCP message complete -
probe::tcp.sendmsg — - Sending a tcp message -
probe::tcp.sendmsg.return — - Sending TCP message is done -
probe::tcp.setsockopt — - Call to setsockopt -
probe::tcp.setsockopt.return — - Return from setsockopt -
probe::udp.disconnect — - Fires when a process requests for a UDP disconnection -
probe::udp.disconnect.return — - UDP has been disconnected successfully -
probe::udp.recvmsg — - Fires whenever a UDP message is received -
probe::udp.recvmsg.return — - Fires whenever an attempt to receive a UDP message received is completed -
probe::udp.sendmsg — - Fires whenever a process sends a UDP message -
probe::udp.sendmsg.return — - Fires whenever an attempt to send a UDP message is completed -
14. Socket Tapset
function::inet_get_ip_source — - Provide IP source address string for a kernel socket -
function::inet_get_local_port — - Provide local port number for a kernel socket -
function::sock_fam_num2str — - Given a protocol family number, return a string representation -
function::sock_fam_str2num — - Given a protocol family name (string), return the corresponding protocol family number -
function::sock_prot_num2str — - Given a protocol number, return a string representation -
function::sock_prot_str2num — - Given a protocol name (string), return the corresponding protocol number -
function::sock_state_num2str — - Given a socket state number, return a string representation -
function::sock_state_str2num — - Given a socket state string, return the corresponding state number -
probe::socket.aio_read — - Receiving message via sock_aio_read -
probe::socket.aio_read.return — - Conclusion of message received via sock_aio_read -
probe::socket.aio_write — - Message send via sock_aio_write -
probe::socket.aio_write.return — - Conclusion of message send via sock_aio_write -
probe::socket.close — - Close a socket -
probe::socket.close.return — - Return from closing a socket -
probe::socket.create — - Creation of a socket -
probe::socket.create.return — - Return from Creation of a socket -
probe::socket.readv — - Receiving a message via sock_readv -
probe::socket.readv.return — - Conclusion of receiving a message via sock_readv -
probe::socket.receive — - Message received on a socket. -
probe::socket.recvmsg — - Message being received on socket -
probe::socket.recvmsg.return — - Return from Message being received on socket -
probe::socket.send — - Message sent on a socket. -
probe::socket.sendmsg — - Message is currently being sent on a socket. -
probe::socket.sendmsg.return — - Return from socket.sendmsg. -
probe::socket.writev — - Message sent via socket_writev -
probe::socket.writev.return — - Conclusion of message sent via socket_writev -
15. SNMP Information Tapset
function::ipmib_filter_key — - Default filter function for ipmib.* probes -
function::ipmib_get_proto — - Get the protocol value -
function::ipmib_local_addr — - Get the local ip address -
function::ipmib_remote_addr — - Get the remote ip address -
function::ipmib_tcp_local_port — - Get the local tcp port -
function::ipmib_tcp_remote_port — - Get the remote tcp port -
function::linuxmib_filter_key — - Default filter function for linuxmib.* probes -
function::tcpmib_filter_key — - Default filter function for tcpmib.* probes -
function::tcpmib_get_state — - Get a socket's state -
function::tcpmib_local_addr — - Get the source address -
function::tcpmib_local_port — - Get the local port -
function::tcpmib_remote_addr — - Get the remote address -
function::tcpmib_remote_port — - Get the remote port -
probe::ipmib.ForwDatagrams — - Count forwarded packet -
probe::ipmib.FragFails — - Count datagram fragmented unsuccessfully -
probe::ipmib.FragOKs — - Count datagram fragmented successfully -
probe::ipmib.InAddrErrors — - Count arriving packets with an incorrect address -
probe::ipmib.InDiscards — - Count discarded inbound packets -
probe::ipmib.InNoRoutes — - Count an arriving packet with no matching socket -
probe::ipmib.InReceives — - Count an arriving packet -
probe::ipmib.InUnknownProtos — - Count arriving packets with an unbound proto -
probe::ipmib.OutRequests — - Count a request to send a packet -
probe::ipmib.ReasmReqds — - Count number of packet fragments reassembly requests -
probe::ipmib.ReasmTimeout — - Count Reassembly Timeouts -
probe::linuxmib.DelayedACKs — - Count of delayed acks -
probe::linuxmib.ListenDrops — - Count of times conn request that were dropped -
probe::linuxmib.ListenOverflows — - Count of times a listen queue overflowed -
probe::linuxmib.TCPMemoryPressures — - Count of times memory pressure was used -
probe::tcpmib.ActiveOpens — - Count an active opening of a socket -
probe::tcpmib.AttemptFails — - Count a failed attempt to open a socket -
probe::tcpmib.CurrEstab — - Update the count of open sockets -
probe::tcpmib.EstabResets — - Count the reset of a socket -
probe::tcpmib.InSegs — - Count an incoming tcp segment -
probe::tcpmib.OutRsts — - Count the sending of a reset packet -
probe::tcpmib.OutSegs — - Count the sending of a TCP segment -
probe::tcpmib.PassiveOpens — - Count the passive creation of a socket -
probe::tcpmib.RetransSegs — - Count the retransmission of a TCP segment -
16. Kernel Process Tapset
function::target_set_pid — - Does pid descend from target process? -
function::target_set_report — - Print a report about the target set -
probe::kprocess.create — - Fires whenever a new process or thread is successfully created -
probe::kprocess.exec — - Attempt to exec to a new program -
probe::kprocess.exec_complete — - Return from exec to a new program -
probe::kprocess.exit — - Exit from process -
probe::kprocess.release — - Process released -
probe::kprocess.start — - Starting new process -
17. Signal Tapset
function::get_sa_flags — - Returns the numeric value of sa_flags -
function::get_sa_handler — - Returns the numeric value of sa_handler -
function::is_sig_blocked — - Returns 1 if the signal is currently blocked, or 0 if it is not -
function::sa_flags_str — - Returns the string representation of sa_flags -
function::sa_handler_str — - Returns the string representation of an sa_handler -
function::signal_str — - Returns the string representation of a signal number -
function::sigset_mask_str — - Returns the string representation of a sigset -
probe::signal.check_ignored — - Checking to see signal is ignored -
probe::signal.check_ignored.return — - Check to see signal is ignored completed -
probe::signal.checkperm — - Check being performed on a sent signal -
probe::signal.checkperm.return — - Check performed on a sent signal completed -
probe::signal.do_action — - Examining or changing a signal action -
probe::signal.do_action.return — - Examining or changing a signal action completed -
probe::signal.flush — - Flushing all pending signals for a task -
probe::signal.force_segv — - Forcing send of SIGSEGV -
probe::signal.force_segv.return — - Forcing send of SIGSEGV complete -
probe::signal.handle — - Signal handler being invoked -
probe::signal.handle.return — - Signal handler invocation completed -
probe::signal.pending — - Examining pending signal -
probe::signal.pending.return — - Examination of pending signal completed -
probe::signal.procmask — - Examining or changing blocked signals -
probe::signal.procmask.return — - Examining or changing blocked signals completed -
probe::signal.send — - Signal being sent to a process -
probe::signal.send.return — - Signal being sent to a process completed (deprecated in SystemTap 2.1) -
probe::signal.send_sig_queue — - Queuing a signal to a process -
probe::signal.send_sig_queue.return — - Queuing a signal to a process completed -
probe::signal.sys_tgkill — - Sending kill signal to a thread group -
probe::signal.sys_tgkill.return — - Sending kill signal to a thread group completed -
probe::signal.sys_tkill — - Sending a kill signal to a thread -
probe::signal.syskill — - Sending kill signal to a process -
probe::signal.syskill.return — - Sending kill signal completed -
probe::signal.systkill.return — - Sending kill signal to a thread completed -
probe::signal.wakeup — - Sleeping process being wakened for signal -
18. Errno Tapset
function::errno_str — - Symbolic string associated with error code -
function::return_str — - Formats the return value as a string -
function::returnstr — - Formats the return value as a string -
function::returnval — - Possible return value of probed function -
19. Device Tapset
function::MAJOR — - Extract major device number from a kernel device number (kdev_t) -
function::MINOR — - Extract minor device number from a kernel device number (kdev_t) -
function::MKDEV — - Creates a value that can be compared to a kernel device number (kdev_t) -
function::usrdev2kerndev — - Converts a user-space device number into the format used in the kernel -
20. Directory-entry (dentry) Tapset
function::d_name — - get the dirent name -
function::d_path — - get the full nameidata path -
function::inode_name — - get the inode name -
function::real_mount — - get the 'struct mount' pointer -
function::reverse_path_walk — - get the full dirent path -
function::task_dentry_path — - get the full dentry path -
21. Logging Tapset
function::error — - Send an error message -
function::exit — - Start shutting down probing script. -
function::ftrace — - Send a message to the ftrace ring-buffer -
function::log — - Send a line to the common trace buffer -
function::printk — - Send a message to the kernel trace buffer -
function::warn — - Send a line to the warning stream -
22. Queue Statistics Tapset
function::qs_done — - Function to record finishing request -
function::qs_run — - Function to record being moved from wait queue to being serviced -
function::qs_wait — - Function to record enqueue requests -
function::qsq_blocked — - Returns the time reqest was on the wait queue -
function::qsq_print — - Prints a line of statistics for the given queue -
function::qsq_service_time — - Amount of time per request service -
function::qsq_start — - Function to reset the stats for a queue -
function::qsq_throughput — - Number of requests served per unit time -
function::qsq_utilization — - Fraction of time that any request was being serviced -
function::qsq_wait_queue_length — - length of wait queue -
function::qsq_wait_time — - Amount of time in queue + service per request -
23. Random functions Tapset
function::randint — - Return a random number between [0,n) -
24. String and data retrieving functions Tapset
function::atomic_long_read — - Retrieves an atomic long variable from kernel memory -
function::atomic_read — - Retrieves an atomic variable from kernel memory -
function::kernel_char — - Retrieves a char value stored in kernel memory -
function::kernel_int — - Retrieves an int value stored in kernel memory -
function::kernel_long — - Retrieves a long value stored in kernel memory -
function::kernel_pointer — - Retrieves a pointer value stored in kernel memory -
function::kernel_short — - Retrieves a short value stored in kernel memory -
function::kernel_string — - Retrieves string from kernel memory -
function::kernel_string2 — - Retrieves string from kernel memory with alternative error string -
function::kernel_string2_utf16 — - Retrieves UTF-16 string from kernel memory with alternative error string -
function::kernel_string2_utf32 — - Retrieves UTF-32 string from kernel memory with alternative error string -
function::kernel_string_n — - Retrieves string of given length from kernel memory -
function::kernel_string_utf16 — - Retrieves UTF-16 string from kernel memory -
function::kernel_string_utf32 — - Retrieves UTF-32 string from kernel memory -
function::user_char — - Retrieves a char value stored in user space -
function::user_char_warn — - Retrieves a char value stored in user space -
function::user_int — - Retrieves an int value stored in user space -
function::user_int16 — - Retrieves a 16-bit integer value stored in user space -
function::user_int32 — - Retrieves a 32-bit integer value stored in user space -
function::user_int64 — - Retrieves a 64-bit integer value stored in user space -
function::user_int8 — - Retrieves a 8-bit integer value stored in user space -
function::user_int_warn — - Retrieves an int value stored in user space -
function::user_long — - Retrieves a long value stored in user space -
function::user_long_warn — - Retrieves a long value stored in user space -
function::user_short — - Retrieves a short value stored in user space -
function::user_short_warn — - Retrieves a short value stored in user space -
function::user_string — - Retrieves string from user space -
function::user_string2 — - Retrieves string from user space with alternative error string -
function::user_string2_utf16 — - Retrieves UTF-16 string from user memory with alternative error string -
function::user_string2_utf32 — - Retrieves UTF-32 string from user memory with alternative error string -
function::user_string_n — - Retrieves string of given length from user space -
function::user_string_n2 — - Retrieves string of given length from user space -
function::user_string_n_quoted — - Retrieves and quotes string from user space -
function::user_string_n_warn — - Retrieves string from user space -
function::user_string_quoted — - Retrieves and quotes string from user space -
function::user_string_utf16 — - Retrieves UTF-16 string from user memory -
function::user_string_utf32 — - Retrieves UTF-32 string from user memory -
function::user_string_warn — - Retrieves string from user space -
function::user_uint16 — - Retrieves an unsigned 16-bit integer value stored in user space -
function::user_uint32 — - Retrieves an unsigned 32-bit integer value stored in user space -
function::user_uint64 — - Retrieves an unsigned 64-bit integer value stored in user space -
function::user_uint8 — - Retrieves an unsigned 8-bit integer value stored in user space -
function::user_ushort — - Retrieves an unsigned short value stored in user space -
function::user_ushort_warn — - Retrieves an unsigned short value stored in user space -
25. String and data writing functions Tapset
function::set_kernel_char — - Writes a char value to kernel memory -
function::set_kernel_int — - Writes an int value to kernel memory -
function::set_kernel_long — - Writes a long value to kernel memory -
function::set_kernel_pointer — - Writes a pointer value to kernel memory. -
function::set_kernel_short — - Writes a short value to kernel memory -
function::set_kernel_string — - Writes a string to kernel memory -
function::set_kernel_string_n — - Writes a string of given length to kernel memory -
26. Guru tapsets
function::mdelay — - millisecond delay -
function::panic — - trigger a panic -
function::udelay — - microsecond delay -
27. A collection of standard string functions
function::isdigit — - Checks for a digit -
function::isinstr — - Returns whether a string is a substring of another string -
function::str_replace — - str_replace Replaces all instances of a substring with another -
function::stringat — - Returns the char at a given position in the string -
function::strlen — - Returns the length of a string -
function::strtol — - strtol - Convert a string to a long -
function::substr — - Returns a substring -
function::text_str — - Escape any non-printable chars in a string -
function::text_strn — - Escape any non-printable chars in a string -
function::tokenize — - Return the next non-empty token in a string -
28. Utility functions for using ansi control chars in logs
function::ansi_clear_screen — - Move cursor to top left and clear screen. -
function::ansi_cursor_hide — - Hides the cursor. -
function::ansi_cursor_move — - Move cursor to new coordinates. -
function::ansi_cursor_restore — - Restores a previously saved cursor position. -
function::ansi_cursor_save — - Saves the cursor position. -
function::ansi_cursor_show — - Shows the cursor. -
function::ansi_new_line — - Move cursor to new line. -
function::ansi_reset_color — - Resets Select Graphic Rendition mode. -
function::ansi_set_color — - Set the ansi Select Graphic Rendition mode. -
function::ansi_set_color2 — - Set the ansi Select Graphic Rendition mode. -
function::ansi_set_color3 — - Set the ansi Select Graphic Rendition mode. -
function::indent — - returns an amount of space to indent -
function::thread_indent — - returns an amount of space with the current task information -
29. SystemTap Translator Tapset
probe::stap.cache_add_mod — - Adding kernel instrumentation module to cache -
probe::stap.cache_add_nss — - Add NSS (Network Security Services) information to cache -
probe::stap.cache_add_src — - Adding C code translation to cache -
probe::stap.cache_clean — - Removing file from stap cache -
probe::stap.cache_get — - Found item in stap cache -
probe::stap.pass0 — - Starting stap pass0 (parsing command line arguments) -
probe::stap.pass0.end — - Finished stap pass0 (parsing command line arguments) -
probe::stap.pass1.end — - Finished stap pass1 (parsing scripts) -
probe::stap.pass1a — - Starting stap pass1 (parsing user script) -
probe::stap.pass1b — - Starting stap pass1 (parsing library scripts) -
probe::stap.pass2 — - Starting stap pass2 (elaboration) -
probe::stap.pass2.end — - Finished stap pass2 (elaboration) -
probe::stap.pass3 — - Starting stap pass3 (translation to C) -
probe::stap.pass3.end — - Finished stap pass3 (translation to C) -
probe::stap.pass4 — - Starting stap pass4 (compile C code into kernel module) -
probe::stap.pass4.end — - Finished stap pass4 (compile C code into kernel module) -
probe::stap.pass5 — - Starting stap pass5 (running the instrumentation) -
probe::stap.pass5.end — - Finished stap pass5 (running the instrumentation) -
probe::stap.pass6 — - Starting stap pass6 (cleanup) -
probe::stap.pass6.end — - Finished stap pass6 (cleanup) -
probe::stap.system — - Starting a command from stap -
probe::stap.system.return — - Finished a command from stap -
probe::stap.system.spawn — - stap spawned new process -
probe::stapio.receive_control_message — - Received a control message -
probe::staprun.insert_module — - Inserting SystemTap instrumentation module -
probe::staprun.remove_module — - Removing SystemTap instrumentation module -
probe::staprun.send_control_message — - Sending a control message -
30. Network File Storage Tapsets
function::nfsderror — - Convert nfsd error number into string -
probe::nfs.aop.readpage — - NFS client synchronously reading a page -
probe::nfs.aop.readpages — - NFS client reading multiple pages -
probe::nfs.aop.release_page — - NFS client releasing page -
probe::nfs.aop.set_page_dirty — - NFS client marking page as dirty -
probe::nfs.aop.write_begin — - NFS client begin to write data -
probe::nfs.aop.write_end — - NFS client complete writing data -
probe::nfs.aop.writepage — - NFS client writing a mapped page to the NFS server -
probe::nfs.aop.writepages — - NFS client writing several dirty pages to the NFS server -
probe::nfs.fop.aio_read — - NFS client aio_read file operation -
probe::nfs.fop.aio_write — - NFS client aio_write file operation -
probe::nfs.fop.check_flags — - NFS client checking flag operation -
probe::nfs.fop.flush — - NFS client flush file operation -
probe::nfs.fop.fsync — - NFS client fsync operation -
probe::nfs.fop.llseek — - NFS client llseek operation -
probe::nfs.fop.lock — - NFS client file lock operation -
probe::nfs.fop.mmap — - NFS client mmap operation -
probe::nfs.fop.open — - NFS client file open operation -
probe::nfs.fop.read — - NFS client read operation -
probe::nfs.fop.release — - NFS client release page operation -
probe::nfs.fop.sendfile — - NFS client send file operation -
probe::nfs.fop.write — - NFS client write operation -
probe::nfs.proc.commit — - NFS client committing data on server -
probe::nfs.proc.commit_done — - NFS client response to a commit RPC task -
probe::nfs.proc.commit_setup — - NFS client setting up a commit RPC task -
probe::nfs.proc.create — - NFS client creating file on server -
probe::nfs.proc.handle_exception — - NFS client handling an NFSv4 exception -
probe::nfs.proc.lookup — - NFS client opens/searches a file on server -
probe::nfs.proc.open — - NFS client allocates file read/write context information -
probe::nfs.proc.read — - NFS client synchronously reads file from server -
probe::nfs.proc.read_done — - NFS client response to a read RPC task -
probe::nfs.proc.read_setup — - NFS client setting up a read RPC task -
probe::nfs.proc.release — - NFS client releases file read/write context information -
probe::nfs.proc.remove — - NFS client removes a file on server -
probe::nfs.proc.rename — - NFS client renames a file on server -
probe::nfs.proc.write — - NFS client synchronously writes file to server -
probe::nfs.proc.write_done — - NFS client response to a write RPC task -
probe::nfs.proc.write_setup — - NFS client setting up a write RPC task -
probe::nfsd.close — - NFS server closing a file for client -
probe::nfsd.commit — - NFS server committing all pending writes to stable storage -
probe::nfsd.create — - NFS server creating a file(regular,dir,device,fifo) for client -
probe::nfsd.createv3 — - NFS server creating a regular file or set file attributes for client -
probe::nfsd.dispatch — - NFS server receives an operation from client -
probe::nfsd.lookup — - NFS server opening or searching file for a file for client -
probe::nfsd.open — - NFS server opening a file for client -
probe::nfsd.proc.commit — - NFS server performing a commit operation for client -
probe::nfsd.proc.create — - NFS server creating a file for client -
probe::nfsd.proc.lookup — - NFS server opening or searching for a file for client -
probe::nfsd.proc.read — - NFS server reading file for client -
probe::nfsd.proc.remove — - NFS server removing a file for client -
probe::nfsd.proc.rename — - NFS Server renaming a file for client -
probe::nfsd.proc.write — - NFS server writing data to file for client -
probe::nfsd.read — - NFS server reading data from a file for client -
probe::nfsd.rename — - NFS server renaming a file for client -
probe::nfsd.unlink — - NFS server removing a file or a directory for client -
probe::nfsd.write — - NFS server writing data to a file for client -
31. Speculation
function::commit — - Write out all output related to a speculation buffer -
function::discard — - Discard all output related to a speculation buffer -
function::speculate — - Store a string for possible output later -
function::speculation — - Allocate a new id for speculative output -
diff --git a/tapsets/introduction.html b/tapsets/introduction.html deleted file mode 100644 index 0cd65d2a..00000000 --- a/tapsets/introduction.html +++ /dev/null @@ -1,14 +0,0 @@ -Chapter 1. Introduction

Chapter 1. Introduction

- SystemTap provides free software (GPL) infrastructure to simplify the - gathering of information about the running Linux system. This assists - diagnosis of a performance or functional problem. SystemTap eliminates the - need for the developer to go through the tedious and disruptive instrument, - recompile, install, and reboot sequence that may be otherwise required to - collect data. -

- SystemTap provides a simple command line interface and scripting language - for writing instrumentation for a live running kernel. The instrumentation - makes extensive use of the probe points and functions provided in the - tapset library. This document describes the various - probe points and functions. -

diff --git a/tapsets/iosched.stp.html b/tapsets/iosched.stp.html deleted file mode 100644 index c0b985d9..00000000 --- a/tapsets/iosched.stp.html +++ /dev/null @@ -1,40 +0,0 @@ -Chapter 9. IO Scheduler and block IO Tapset

Chapter 9. IO Scheduler and block IO Tapset

Table of Contents

probe::ioblock.end — - Fires whenever a block I/O transfer is complete. -
probe::ioblock.request — - Fires whenever making a generic block I/O request. -
probe::ioblock_trace.bounce — - Fires whenever a buffer bounce is needed for at least one page of a block IO request. -
probe::ioblock_trace.end — - Fires whenever a block I/O transfer is complete. -
probe::ioblock_trace.request — - Fires just as a generic block I/O request is created for a bio. -
probe::ioscheduler.elv_add_request — - probe to indicate request is added to the request queue. -
probe::ioscheduler.elv_add_request.kp — - kprobe based probe to indicate that a request was added to the request queue -
probe::ioscheduler.elv_add_request.tp — - tracepoint based probe to indicate a request is added to the request queue. -
probe::ioscheduler.elv_completed_request — - Fires when a request is completed -
probe::ioscheduler.elv_next_request — - Fires when a request is retrieved from the request queue -
probe::ioscheduler.elv_next_request.return — - Fires when a request retrieval issues a return signal -
probe::ioscheduler_trace.elv_abort_request — - Fires when a request is aborted. -
probe::ioscheduler_trace.elv_completed_request — - Fires when a request is -
probe::ioscheduler_trace.elv_issue_request — - Fires when a request is -
probe::ioscheduler_trace.elv_requeue_request — - Fires when a request is -
probe::ioscheduler_trace.plug — - Fires when a request queue is plugged; -
probe::ioscheduler_trace.unplug_io — - Fires when a request queue is unplugged; -
probe::ioscheduler_trace.unplug_timer — - Fires when unplug timer associated -

- This family of probe points is used to probe block IO layer and IO scheduler activities. - It contains the following probe points: -

diff --git a/tapsets/irq.stp.html b/tapsets/irq.stp.html deleted file mode 100644 index f2f91ff9..00000000 --- a/tapsets/irq.stp.html +++ /dev/null @@ -1,21 +0,0 @@ -Chapter 12. Interrupt Request (IRQ) Tapset

Chapter 12. Interrupt Request (IRQ) Tapset

Table of Contents

probe::irq_handler.entry — - Execution of interrupt handler starting -
probe::irq_handler.exit — - Execution of interrupt handler completed -
probe::softirq.entry — - Execution of handler for a pending softirq starting -
probe::softirq.exit — - Execution of handler for a pending softirq completed -
probe::workqueue.create — - Creating a new workqueue -
probe::workqueue.destroy — - Destroying workqueue -
probe::workqueue.execute — - Executing deferred work -
probe::workqueue.insert — - Queuing work on a workqueue -

- This family of probe points is used to probe interrupt request - (IRQ) activities. - It contains the following probe points: -

diff --git a/tapsets/kprocess.stp.html b/tapsets/kprocess.stp.html deleted file mode 100644 index a7c99a73..00000000 --- a/tapsets/kprocess.stp.html +++ /dev/null @@ -1,20 +0,0 @@ -Chapter 16. Kernel Process Tapset

Chapter 16. Kernel Process Tapset

Table of Contents

function::target_set_pid — - Does pid descend from target process? -
function::target_set_report — - Print a report about the target set -
probe::kprocess.create — - Fires whenever a new process or thread is successfully created -
probe::kprocess.exec — - Attempt to exec to a new program -
probe::kprocess.exec_complete — - Return from exec to a new program -
probe::kprocess.exit — - Exit from process -
probe::kprocess.release — - Process released -
probe::kprocess.start — - Starting new process -

- This family of probe points is used to probe process-related activities. - It contains the following probe points: -

diff --git a/tapsets/logging.stp.html b/tapsets/logging.stp.html deleted file mode 100644 index bd8c7c8b..00000000 --- a/tapsets/logging.stp.html +++ /dev/null @@ -1,16 +0,0 @@ -Chapter 21. Logging Tapset

Chapter 21. Logging Tapset

Table of Contents

function::error — - Send an error message -
function::exit — - Start shutting down probing script. -
function::ftrace — - Send a message to the ftrace ring-buffer -
function::log — - Send a line to the common trace buffer -
function::printk — - Send a message to the kernel trace buffer -
function::warn — - Send a line to the warning stream -

- This family of functions is used to send simple - message strings to various destinations. -

diff --git a/tapsets/memory_stp.html b/tapsets/memory_stp.html deleted file mode 100644 index 57f4dbd2..00000000 --- a/tapsets/memory_stp.html +++ /dev/null @@ -1,67 +0,0 @@ -Chapter 6. Memory Tapset

Chapter 6. Memory Tapset

Table of Contents

function::addr_to_node — - Returns which node a given address belongs to within a NUMA system -
function::bytes_to_string — - Human readable string for given bytes -
function::mem_page_size — - Number of bytes in a page for this architecture -
function::pages_to_string — - Turns pages into a human readable string -
function::proc_mem_data — - Program data size (data + stack) in pages -
function::proc_mem_data_pid — - Program data size (data + stack) in pages -
function::proc_mem_rss — - Program resident set size in pages -
function::proc_mem_rss_pid — - Program resident set size in pages -
function::proc_mem_shr — - Program shared pages (from shared mappings) -
function::proc_mem_shr_pid — - Program shared pages (from shared mappings) -
function::proc_mem_size — - Total program virtual memory size in pages -
function::proc_mem_size_pid — - Total program virtual memory size in pages -
function::proc_mem_string — - Human readable string of current proc memory usage -
function::proc_mem_string_pid — - Human readable string of process memory usage -
function::proc_mem_txt — - Program text (code) size in pages -
function::proc_mem_txt_pid — - Program text (code) size in pages -
function::vm_fault_contains — - Test return value for page fault reason -
probe::vm.brk — - Fires when a brk is requested (i.e. the heap will be resized) -
probe::vm.kfree — - Fires when kfree is requested -
probe::vm.kmalloc — - Fires when kmalloc is requested -
probe::vm.kmalloc_node — - Fires when kmalloc_node is requested -
probe::vm.kmem_cache_alloc — - Fires when kmem_cache_alloc is requested -
probe::vm.kmem_cache_alloc_node — - Fires when kmem_cache_alloc_node is requested -
probe::vm.kmem_cache_free — - Fires when kmem_cache_free is requested -
probe::vm.mmap — - Fires when an mmap is requested -
probe::vm.munmap — - Fires when an munmap is requested -
probe::vm.oom_kill — - Fires when a thread is selected for termination by the OOM killer -
probe::vm.pagefault — - Records that a page fault occurred -
probe::vm.pagefault.return — - Indicates what type of fault occurred -
probe::vm.write_shared — - Attempts at writing to a shared page -
probe::vm.write_shared_copy — - Page copy for shared page write -

- This family of probe points is used to probe memory-related events - or query the memory usage of the current process. - It contains the following probe points: -

diff --git a/tapsets/networking.stp.html b/tapsets/networking.stp.html deleted file mode 100644 index ee3705a5..00000000 --- a/tapsets/networking.stp.html +++ /dev/null @@ -1,140 +0,0 @@ -Chapter 13. Networking Tapset

Chapter 13. Networking Tapset

Table of Contents

function::format_ipaddr — - Returns a string representation for an IP address -
function::htonl — - Convert 32-bit long from host to network order -
function::htonll — - Convert 64-bit long long from host to network order -
function::htons — - Convert 16-bit short from host to network order -
function::ip_ntop — - Returns a string representation for an IPv4 address -
function::ntohl — - Convert 32-bit long from network to host order -
function::ntohll — - Convert 64-bit long long from network to host order -
function::ntohs — - Convert 16-bit short from network to host order -
probe::netdev.change_mac — - Called when the netdev_name has the MAC changed -
probe::netdev.change_mtu — - Called when the netdev MTU is changed -
probe::netdev.change_rx_flag — - Called when the device RX flag will be changed -
probe::netdev.close — - Called when the device is closed -
probe::netdev.get_stats — - Called when someone asks the device statistics -
probe::netdev.hard_transmit — - Called when the devices is going to TX (hard) -
probe::netdev.ioctl — - Called when the device suffers an IOCTL -
probe::netdev.open — - Called when the device is opened -
probe::netdev.receive — - Data received from network device. -
probe::netdev.register — - Called when the device is registered -
probe::netdev.rx — - Called when the device is going to receive a packet -
probe::netdev.set_promiscuity — - Called when the device enters/leaves promiscuity -
probe::netdev.transmit — - Network device transmitting buffer -
probe::netdev.unregister — - Called when the device is being unregistered -
probe::netfilter.arp.forward — - - Called for each ARP packet to be forwarded -
probe::netfilter.arp.in — - - Called for each incoming ARP packet -
probe::netfilter.arp.out — - - Called for each outgoing ARP packet -
probe::netfilter.bridge.forward — - Called on an incoming bridging packet destined for some other computer -
probe::netfilter.bridge.local_in — - Called on a bridging packet destined for the local computer -
probe::netfilter.bridge.local_out — - Called on a bridging packet coming from a local process -
probe::netfilter.bridge.post_routing — - - Called before a bridging packet hits the wire -
probe::netfilter.bridge.pre_routing — - - Called before a bridging packet is routed -
probe::netfilter.ip.forward — - Called on an incoming IP packet addressed to some other computer -
probe::netfilter.ip.local_in — - Called on an incoming IP packet addressed to the local computer -
probe::netfilter.ip.local_out — - Called on an outgoing IP packet -
probe::netfilter.ip.post_routing — - Called immediately before an outgoing IP packet leaves the computer -
probe::netfilter.ip.pre_routing — - Called before an IP packet is routed -
probe::sunrpc.clnt.bind_new_program — - Bind a new RPC program to an existing client -
probe::sunrpc.clnt.call_async — - Make an asynchronous RPC call -
probe::sunrpc.clnt.call_sync — - Make a synchronous RPC call -
probe::sunrpc.clnt.clone_client — - Clone an RPC client structure -
probe::sunrpc.clnt.create_client — - Create an RPC client -
probe::sunrpc.clnt.restart_call — - Restart an asynchronous RPC call -
probe::sunrpc.clnt.shutdown_client — - Shutdown an RPC client -
probe::sunrpc.sched.delay — - Delay an RPC task -
probe::sunrpc.sched.execute — - Execute the RPC `scheduler' -
probe::sunrpc.sched.new_task — - Create new task for the specified client -
probe::sunrpc.sched.release_task — - Release all resources associated with a task -
probe::sunrpc.svc.create — - Create an RPC service -
probe::sunrpc.svc.destroy — - Destroy an RPC service -
probe::sunrpc.svc.drop — - Drop RPC request -
probe::sunrpc.svc.process — - Process an RPC request -
probe::sunrpc.svc.recv — - Listen for the next RPC request on any socket -
probe::sunrpc.svc.register — - Register an RPC service with the local portmapper -
probe::sunrpc.svc.send — - Return reply to RPC client -
probe::tcp.disconnect — - TCP socket disconnection -
probe::tcp.disconnect.return — - TCP socket disconnection complete -
probe::tcp.receive — - Called when a TCP packet is received -
probe::tcp.recvmsg — - Receiving TCP message -
probe::tcp.recvmsg.return — - Receiving TCP message complete -
probe::tcp.sendmsg — - Sending a tcp message -
probe::tcp.sendmsg.return — - Sending TCP message is done -
probe::tcp.setsockopt — - Call to setsockopt -
probe::tcp.setsockopt.return — - Return from setsockopt -
probe::udp.disconnect — - Fires when a process requests for a UDP disconnection -
probe::udp.disconnect.return — - UDP has been disconnected successfully -
probe::udp.recvmsg — - Fires whenever a UDP message is received -
probe::udp.recvmsg.return — - Fires whenever an attempt to receive a UDP message received is completed -
probe::udp.sendmsg — - Fires whenever a process sends a UDP message -
probe::udp.sendmsg.return — - Fires whenever an attempt to send a UDP message is completed -

- This family of probe points is used to probe the activities of - the network device and protocol layers. -

diff --git a/tapsets/nfsd.stp.html b/tapsets/nfsd.stp.html deleted file mode 100644 index 66b485ad..00000000 --- a/tapsets/nfsd.stp.html +++ /dev/null @@ -1,116 +0,0 @@ -Chapter 30. Network File Storage Tapsets

Chapter 30. Network File Storage Tapsets

Table of Contents

function::nfsderror — - Convert nfsd error number into string -
probe::nfs.aop.readpage — - NFS client synchronously reading a page -
probe::nfs.aop.readpages — - NFS client reading multiple pages -
probe::nfs.aop.release_page — - NFS client releasing page -
probe::nfs.aop.set_page_dirty — - NFS client marking page as dirty -
probe::nfs.aop.write_begin — - NFS client begin to write data -
probe::nfs.aop.write_end — - NFS client complete writing data -
probe::nfs.aop.writepage — - NFS client writing a mapped page to the NFS server -
probe::nfs.aop.writepages — - NFS client writing several dirty pages to the NFS server -
probe::nfs.fop.aio_read — - NFS client aio_read file operation -
probe::nfs.fop.aio_write — - NFS client aio_write file operation -
probe::nfs.fop.check_flags — - NFS client checking flag operation -
probe::nfs.fop.flush — - NFS client flush file operation -
probe::nfs.fop.fsync — - NFS client fsync operation -
probe::nfs.fop.llseek — - NFS client llseek operation -
probe::nfs.fop.lock — - NFS client file lock operation -
probe::nfs.fop.mmap — - NFS client mmap operation -
probe::nfs.fop.open — - NFS client file open operation -
probe::nfs.fop.read — - NFS client read operation -
probe::nfs.fop.release — - NFS client release page operation -
probe::nfs.fop.sendfile — - NFS client send file operation -
probe::nfs.fop.write — - NFS client write operation -
probe::nfs.proc.commit — - NFS client committing data on server -
probe::nfs.proc.commit_done — - NFS client response to a commit RPC task -
probe::nfs.proc.commit_setup — - NFS client setting up a commit RPC task -
probe::nfs.proc.create — - NFS client creating file on server -
probe::nfs.proc.handle_exception — - NFS client handling an NFSv4 exception -
probe::nfs.proc.lookup — - NFS client opens/searches a file on server -
probe::nfs.proc.open — - NFS client allocates file read/write context information -
probe::nfs.proc.read — - NFS client synchronously reads file from server -
probe::nfs.proc.read_done — - NFS client response to a read RPC task -
probe::nfs.proc.read_setup — - NFS client setting up a read RPC task -
probe::nfs.proc.release — - NFS client releases file read/write context information -
probe::nfs.proc.remove — - NFS client removes a file on server -
probe::nfs.proc.rename — - NFS client renames a file on server -
probe::nfs.proc.write — - NFS client synchronously writes file to server -
probe::nfs.proc.write_done — - NFS client response to a write RPC task -
probe::nfs.proc.write_setup — - NFS client setting up a write RPC task -
probe::nfsd.close — - NFS server closing a file for client -
probe::nfsd.commit — - NFS server committing all pending writes to stable storage -
probe::nfsd.create — - NFS server creating a file(regular,dir,device,fifo) for client -
probe::nfsd.createv3 — - NFS server creating a regular file or set file attributes for client -
probe::nfsd.dispatch — - NFS server receives an operation from client -
probe::nfsd.lookup — - NFS server opening or searching file for a file for client -
probe::nfsd.open — - NFS server opening a file for client -
probe::nfsd.proc.commit — - NFS server performing a commit operation for client -
probe::nfsd.proc.create — - NFS server creating a file for client -
probe::nfsd.proc.lookup — - NFS server opening or searching for a file for client -
probe::nfsd.proc.read — - NFS server reading file for client -
probe::nfsd.proc.remove — - NFS server removing a file for client -
probe::nfsd.proc.rename — - NFS Server renaming a file for client -
probe::nfsd.proc.write — - NFS server writing data to file for client -
probe::nfsd.read — - NFS server reading data from a file for client -
probe::nfsd.rename — - NFS server renaming a file for client -
probe::nfsd.unlink — - NFS server removing a file or a directory for client -
probe::nfsd.write — - NFS server writing data to a file for client -

- This family of probe points is used to probe network file storage - functions and operations. -

diff --git a/tapsets/queue_stats.stp.html b/tapsets/queue_stats.stp.html deleted file mode 100644 index c09205b4..00000000 --- a/tapsets/queue_stats.stp.html +++ /dev/null @@ -1,25 +0,0 @@ -Chapter 22. Queue Statistics Tapset

Chapter 22. Queue Statistics Tapset

Table of Contents

function::qs_done — - Function to record finishing request -
function::qs_run — - Function to record being moved from wait queue to being serviced -
function::qs_wait — - Function to record enqueue requests -
function::qsq_blocked — - Returns the time reqest was on the wait queue -
function::qsq_print — - Prints a line of statistics for the given queue -
function::qsq_service_time — - Amount of time per request service -
function::qsq_start — - Function to reset the stats for a queue -
function::qsq_throughput — - Number of requests served per unit time -
function::qsq_utilization — - Fraction of time that any request was being serviced -
function::qsq_wait_queue_length — - length of wait queue -
function::qsq_wait_time — - Amount of time in queue + service per request -

- This family of functions is used to track performance of queuing systems. -

diff --git a/tapsets/random.stp.html b/tapsets/random.stp.html deleted file mode 100644 index 81dd306e..00000000 --- a/tapsets/random.stp.html +++ /dev/null @@ -1,5 +0,0 @@ -Chapter 23. Random functions Tapset

Chapter 23. Random functions Tapset

Table of Contents

function::randint — - Return a random number between [0,n) -

- These functions deal with random number generation. -

diff --git a/tapsets/sched.stp.html b/tapsets/sched.stp.html deleted file mode 100644 index 937f14f0..00000000 --- a/tapsets/sched.stp.html +++ /dev/null @@ -1,36 +0,0 @@ -Chapter 8. Scheduler Tapset

Chapter 8. Scheduler Tapset

Table of Contents

probe::scheduler.balance — - A cpu attempting to find more work. -
probe::scheduler.cpu_off — - Process is about to stop running on a cpu -
probe::scheduler.cpu_on — - Process is beginning execution on a cpu -
probe::scheduler.ctxswitch — - A context switch is occuring. -
probe::scheduler.kthread_stop — - A thread created by kthread_create is being stopped -
probe::scheduler.kthread_stop.return — - A kthread is stopped and gets the return value -
probe::scheduler.migrate — - Task migrating across cpus -
probe::scheduler.process_exit — - Process exiting -
probe::scheduler.process_fork — - Process forked -
probe::scheduler.process_free — - Scheduler freeing a data structure for a process -
probe::scheduler.process_wait — - Scheduler starting to wait on a process -
probe::scheduler.signal_send — - Sending a signal -
probe::scheduler.tick — - Schedulers internal tick, a processes timeslice accounting is updated -
probe::scheduler.wait_task — - Waiting on a task to unschedule (become inactive) -
probe::scheduler.wakeup — - Task is woken up -
probe::scheduler.wakeup_new — - Newly created task is woken up for the first time -

- This family of probe points is used to probe the task scheduler activities. - It contains the following probe points: -

diff --git a/tapsets/scsi.stp.html b/tapsets/scsi.stp.html deleted file mode 100644 index 36a0ab0f..00000000 --- a/tapsets/scsi.stp.html +++ /dev/null @@ -1,16 +0,0 @@ -Chapter 10. SCSI Tapset

Chapter 10. SCSI Tapset

Table of Contents

probe::scsi.iocompleted — - SCSI mid-layer running the completion processing for block device I/O requests -
probe::scsi.iodispatching — - SCSI mid-layer dispatched low-level SCSI command -
probe::scsi.iodone — - SCSI command completed by low level driver and enqueued into the done queue. -
probe::scsi.ioentry — - Prepares a SCSI mid-layer request -
probe::scsi.ioexecute — - Create mid-layer SCSI request and wait for the result -
probe::scsi.set_state — - Order SCSI device state change -

- This family of probe points is used to probe SCSI activities. - It contains the following probe points: -

diff --git a/tapsets/signal.stp.html b/tapsets/signal.stp.html deleted file mode 100644 index 02ae65a4..00000000 --- a/tapsets/signal.stp.html +++ /dev/null @@ -1,70 +0,0 @@ -Chapter 17. Signal Tapset

Chapter 17. Signal Tapset

Table of Contents

function::get_sa_flags — - Returns the numeric value of sa_flags -
function::get_sa_handler — - Returns the numeric value of sa_handler -
function::is_sig_blocked — - Returns 1 if the signal is currently blocked, or 0 if it is not -
function::sa_flags_str — - Returns the string representation of sa_flags -
function::sa_handler_str — - Returns the string representation of an sa_handler -
function::signal_str — - Returns the string representation of a signal number -
function::sigset_mask_str — - Returns the string representation of a sigset -
probe::signal.check_ignored — - Checking to see signal is ignored -
probe::signal.check_ignored.return — - Check to see signal is ignored completed -
probe::signal.checkperm — - Check being performed on a sent signal -
probe::signal.checkperm.return — - Check performed on a sent signal completed -
probe::signal.do_action — - Examining or changing a signal action -
probe::signal.do_action.return — - Examining or changing a signal action completed -
probe::signal.flush — - Flushing all pending signals for a task -
probe::signal.force_segv — - Forcing send of SIGSEGV -
probe::signal.force_segv.return — - Forcing send of SIGSEGV complete -
probe::signal.handle — - Signal handler being invoked -
probe::signal.handle.return — - Signal handler invocation completed -
probe::signal.pending — - Examining pending signal -
probe::signal.pending.return — - Examination of pending signal completed -
probe::signal.procmask — - Examining or changing blocked signals -
probe::signal.procmask.return — - Examining or changing blocked signals completed -
probe::signal.send — - Signal being sent to a process -
probe::signal.send.return — - Signal being sent to a process completed (deprecated in SystemTap 2.1) -
probe::signal.send_sig_queue — - Queuing a signal to a process -
probe::signal.send_sig_queue.return — - Queuing a signal to a process completed -
probe::signal.sys_tgkill — - Sending kill signal to a thread group -
probe::signal.sys_tgkill.return — - Sending kill signal to a thread group completed -
probe::signal.sys_tkill — - Sending a kill signal to a thread -
probe::signal.syskill — - Sending kill signal to a process -
probe::signal.syskill.return — - Sending kill signal completed -
probe::signal.systkill.return — - Sending kill signal to a thread completed -
probe::signal.wakeup — - Sleeping process being wakened for signal -

- This family of probe points is used to probe signal activities. - It contains the following probe points: -

diff --git a/tapsets/snmp.stp.html b/tapsets/snmp.stp.html deleted file mode 100644 index 82ba016e..00000000 --- a/tapsets/snmp.stp.html +++ /dev/null @@ -1,79 +0,0 @@ -Chapter 15. SNMP Information Tapset

Chapter 15. SNMP Information Tapset

Table of Contents

function::ipmib_filter_key — - Default filter function for ipmib.* probes -
function::ipmib_get_proto — - Get the protocol value -
function::ipmib_local_addr — - Get the local ip address -
function::ipmib_remote_addr — - Get the remote ip address -
function::ipmib_tcp_local_port — - Get the local tcp port -
function::ipmib_tcp_remote_port — - Get the remote tcp port -
function::linuxmib_filter_key — - Default filter function for linuxmib.* probes -
function::tcpmib_filter_key — - Default filter function for tcpmib.* probes -
function::tcpmib_get_state — - Get a socket's state -
function::tcpmib_local_addr — - Get the source address -
function::tcpmib_local_port — - Get the local port -
function::tcpmib_remote_addr — - Get the remote address -
function::tcpmib_remote_port — - Get the remote port -
probe::ipmib.ForwDatagrams — - Count forwarded packet -
probe::ipmib.FragFails — - Count datagram fragmented unsuccessfully -
probe::ipmib.FragOKs — - Count datagram fragmented successfully -
probe::ipmib.InAddrErrors — - Count arriving packets with an incorrect address -
probe::ipmib.InDiscards — - Count discarded inbound packets -
probe::ipmib.InNoRoutes — - Count an arriving packet with no matching socket -
probe::ipmib.InReceives — - Count an arriving packet -
probe::ipmib.InUnknownProtos — - Count arriving packets with an unbound proto -
probe::ipmib.OutRequests — - Count a request to send a packet -
probe::ipmib.ReasmReqds — - Count number of packet fragments reassembly requests -
probe::ipmib.ReasmTimeout — - Count Reassembly Timeouts -
probe::linuxmib.DelayedACKs — - Count of delayed acks -
probe::linuxmib.ListenDrops — - Count of times conn request that were dropped -
probe::linuxmib.ListenOverflows — - Count of times a listen queue overflowed -
probe::linuxmib.TCPMemoryPressures — - Count of times memory pressure was used -
probe::tcpmib.ActiveOpens — - Count an active opening of a socket -
probe::tcpmib.AttemptFails — - Count a failed attempt to open a socket -
probe::tcpmib.CurrEstab — - Update the count of open sockets -
probe::tcpmib.EstabResets — - Count the reset of a socket -
probe::tcpmib.InSegs — - Count an incoming tcp segment -
probe::tcpmib.OutRsts — - Count the sending of a reset packet -
probe::tcpmib.OutSegs — - Count the sending of a TCP segment -
probe::tcpmib.PassiveOpens — - Count the passive creation of a socket -
probe::tcpmib.RetransSegs — - Count the retransmission of a TCP segment -

- This family of probe points is used to probe socket activities to - provide SNMP type information. It contains the following functions - and probe points: -

diff --git a/tapsets/socket.stp.html b/tapsets/socket.stp.html deleted file mode 100644 index 6e284368..00000000 --- a/tapsets/socket.stp.html +++ /dev/null @@ -1,56 +0,0 @@ -Chapter 14. Socket Tapset

Chapter 14. Socket Tapset

Table of Contents

function::inet_get_ip_source — - Provide IP source address string for a kernel socket -
function::inet_get_local_port — - Provide local port number for a kernel socket -
function::sock_fam_num2str — - Given a protocol family number, return a string representation -
function::sock_fam_str2num — - Given a protocol family name (string), return the corresponding protocol family number -
function::sock_prot_num2str — - Given a protocol number, return a string representation -
function::sock_prot_str2num — - Given a protocol name (string), return the corresponding protocol number -
function::sock_state_num2str — - Given a socket state number, return a string representation -
function::sock_state_str2num — - Given a socket state string, return the corresponding state number -
probe::socket.aio_read — - Receiving message via sock_aio_read -
probe::socket.aio_read.return — - Conclusion of message received via sock_aio_read -
probe::socket.aio_write — - Message send via sock_aio_write -
probe::socket.aio_write.return — - Conclusion of message send via sock_aio_write -
probe::socket.close — - Close a socket -
probe::socket.close.return — - Return from closing a socket -
probe::socket.create — - Creation of a socket -
probe::socket.create.return — - Return from Creation of a socket -
probe::socket.readv — - Receiving a message via sock_readv -
probe::socket.readv.return — - Conclusion of receiving a message via sock_readv -
probe::socket.receive — - Message received on a socket. -
probe::socket.recvmsg — - Message being received on socket -
probe::socket.recvmsg.return — - Return from Message being received on socket -
probe::socket.send — - Message sent on a socket. -
probe::socket.sendmsg — - Message is currently being sent on a socket. -
probe::socket.sendmsg.return — - Return from socket.sendmsg. -
probe::socket.writev — - Message sent via socket_writev -
probe::socket.writev.return — - Conclusion of message sent via socket_writev -

- This family of probe points is used to probe socket activities. - It contains the following probe points: -

diff --git a/tapsets/speculation.stp.html b/tapsets/speculation.stp.html deleted file mode 100644 index f19c7efc..00000000 --- a/tapsets/speculation.stp.html +++ /dev/null @@ -1,13 +0,0 @@ -Chapter 31. Speculation

Chapter 31. Speculation

Table of Contents

function::commit — - Write out all output related to a speculation buffer -
function::discard — - Discard all output related to a speculation buffer -
function::speculate — - Store a string for possible output later -
function::speculation — - Allocate a new id for speculative output -

- This family of functions provides the ability to speculative record - information and then at a later point in the SystemTap script either - commit the information or discard it. -

diff --git a/tapsets/stap_staticmarkers.stp.html b/tapsets/stap_staticmarkers.stp.html deleted file mode 100644 index fa51cb09..00000000 --- a/tapsets/stap_staticmarkers.stp.html +++ /dev/null @@ -1,62 +0,0 @@ -Chapter 29. SystemTap Translator Tapset

Chapter 29. SystemTap Translator Tapset

Table of Contents

probe::stap.cache_add_mod — - Adding kernel instrumentation module to cache -
probe::stap.cache_add_nss — - Add NSS (Network Security Services) information to cache -
probe::stap.cache_add_src — - Adding C code translation to cache -
probe::stap.cache_clean — - Removing file from stap cache -
probe::stap.cache_get — - Found item in stap cache -
probe::stap.pass0 — - Starting stap pass0 (parsing command line arguments) -
probe::stap.pass0.end — - Finished stap pass0 (parsing command line arguments) -
probe::stap.pass1.end — - Finished stap pass1 (parsing scripts) -
probe::stap.pass1a — - Starting stap pass1 (parsing user script) -
probe::stap.pass1b — - Starting stap pass1 (parsing library scripts) -
probe::stap.pass2 — - Starting stap pass2 (elaboration) -
probe::stap.pass2.end — - Finished stap pass2 (elaboration) -
probe::stap.pass3 — - Starting stap pass3 (translation to C) -
probe::stap.pass3.end — - Finished stap pass3 (translation to C) -
probe::stap.pass4 — - Starting stap pass4 (compile C code into kernel module) -
probe::stap.pass4.end — - Finished stap pass4 (compile C code into kernel module) -
probe::stap.pass5 — - Starting stap pass5 (running the instrumentation) -
probe::stap.pass5.end — - Finished stap pass5 (running the instrumentation) -
probe::stap.pass6 — - Starting stap pass6 (cleanup) -
probe::stap.pass6.end — - Finished stap pass6 (cleanup) -
probe::stap.system — - Starting a command from stap -
probe::stap.system.return — - Finished a command from stap -
probe::stap.system.spawn — - stap spawned new process -
probe::stapio.receive_control_message — - Received a control message -
probe::staprun.insert_module — - Inserting SystemTap instrumentation module -
probe::staprun.remove_module — - Removing SystemTap instrumentation module -
probe::staprun.send_control_message — - Sending a control message -

- This family of user-space probe points is used to probe the operation of - the SystemTap translator (stap) and run command - (staprun). - The tapset includes probes to watch the various phases of SystemTap - and SystemTap's management of instrumentation cache. - It contains the following probe points: -

diff --git a/tapsets/string.stp.html b/tapsets/string.stp.html deleted file mode 100644 index 14668b80..00000000 --- a/tapsets/string.stp.html +++ /dev/null @@ -1,25 +0,0 @@ -Chapter 27. A collection of standard string functions

Chapter 27. A collection of standard string functions

Table of Contents

function::isdigit — - Checks for a digit -
function::isinstr — - Returns whether a string is a substring of another string -
function::str_replace — - str_replace Replaces all instances of a substring with another -
function::stringat — - Returns the char at a given position in the string -
function::strlen — - Returns the length of a string -
function::strtol — - strtol - Convert a string to a long -
function::substr — - Returns a substring -
function::text_str — - Escape any non-printable chars in a string -
function::text_strn — - Escape any non-printable chars in a string -
function::tokenize — - Return the next non-empty token in a string -

- Functions to get the length, a substring, getting at individual - characters, string seaching, escaping, tokenizing, and converting - strings to longs. -

diff --git a/tapsets/system.stp.html b/tapsets/system.stp.html deleted file mode 100644 index 0cb54c51..00000000 --- a/tapsets/system.stp.html +++ /dev/null @@ -1,5 +0,0 @@ -Chapter 5. Shell command functions

Chapter 5. Shell command functions

Table of Contents

function::system — - Issue a command to the system -

- Utility functions to enqueue shell commands. -

diff --git a/tapsets/task_time_stp.html b/tapsets/task_time_stp.html deleted file mode 100644 index f3292bc1..00000000 --- a/tapsets/task_time_stp.html +++ /dev/null @@ -1,23 +0,0 @@ -Chapter 7. Task Time Tapset

Chapter 7. Task Time Tapset

Table of Contents

function::cputime_to_msecs — - Translates the given cputime into milliseconds -
function::cputime_to_string — - Human readable string for given cputime -
function::msecs_to_string — - Human readable string for given milliseconds -
function::task_stime — - System time of the current task -
function::task_stime_tid — - System time of the given task -
function::task_time_string — - Human readable string of task time usage -
function::task_time_string_tid — - Human readable string of task time usage -
function::task_utime — - User time of the current task -
function::task_utime_tid — - User time of the given task -

- This tapset defines utility functions to query time related - properties of the current tasks, translate those in miliseconds - and human readable strings. -

diff --git a/tapsets/timestamp_stp.html b/tapsets/timestamp_stp.html deleted file mode 100644 index 920b55ab..00000000 --- a/tapsets/timestamp_stp.html +++ /dev/null @@ -1,51 +0,0 @@ -Chapter 3. Timestamp Functions

Chapter 3. Timestamp Functions

Table of Contents

function::HZ — - Kernel HZ -
function::cpu_clock_ms — - Number of milliseconds on the given cpu's clock -
function::cpu_clock_ns — - Number of nanoseconds on the given cpu's clock -
function::cpu_clock_s — - Number of seconds on the given cpu's clock -
function::cpu_clock_us — - Number of microseconds on the given cpu's clock -
function::delete_stopwatch — - Remove an existing stopwatch -
function::get_cycles — - Processor cycle count -
function::gettimeofday_ms — - Number of milliseconds since UNIX epoch -
function::gettimeofday_ns — - Number of nanoseconds since UNIX epoch -
function::gettimeofday_s — - Number of seconds since UNIX epoch -
function::gettimeofday_us — - Number of microseconds since UNIX epoch -
function::jiffies — - Kernel jiffies count -
function::local_clock_ms — - Number of milliseconds on the local cpu's clock -
function::local_clock_ns — - Number of nanoseconds on the local cpu's clock -
function::local_clock_s — - Number of seconds on the local cpu's clock -
function::local_clock_us — - Number of microseconds on the local cpu's clock -
function::read_stopwatch_ms — - Reads the time in milliseconds for a stopwatch -
function::read_stopwatch_ns — - Reads the time in nanoseconds for a stopwatch -
function::read_stopwatch_s — - Reads the time in seconds for a stopwatch -
function::read_stopwatch_us — - Reads the time in microseconds for a stopwatch -
function::start_stopwatch — - Start a stopwatch -
function::stop_stopwatch — - Stop a stopwatch -

- Each timestamp function returns a value to indicate when - a function is executed. - These returned values can then be used to indicate - when an event occurred, provide an ordering for events, or compute - the amount of time elapsed between two time stamps. -

diff --git a/tapsets/tty.stp.html b/tapsets/tty.stp.html deleted file mode 100644 index b71b7036..00000000 --- a/tapsets/tty.stp.html +++ /dev/null @@ -1,26 +0,0 @@ -Chapter 11. TTY Tapset

Chapter 11. TTY Tapset

Table of Contents

probe::tty.init — - Called when a tty is being initalized -
probe::tty.ioctl — - called when a ioctl is request to the tty -
probe::tty.open — - Called when a tty is opened -
probe::tty.poll — - Called when a tty device is being polled -
probe::tty.read — - called when a tty line will be read -
probe::tty.receive — - called when a tty receives a message -
probe::tty.register — - Called when a tty device is registred -
probe::tty.release — - Called when the tty is closed -
probe::tty.resize — - Called when a terminal resize happens -
probe::tty.unregister — - Called when a tty device is being unregistered -
probe::tty.write — - write to the tty line -

- This family of probe points is used to probe TTY (Teletype) activities. - It contains the following probe points: -

diff --git a/tutorial.pdf b/tutorial.pdf index 468520657ba20cf539ff8cc2eaa045a20fc3cbf7..24f340e3685329980fd81cf9ab7f7ceb5c82fe43 100644 GIT binary patch delta 69777 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ℜ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 M8bLu79aWnD2m5n=yZ`_I delta 73511 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 P00TiQB&4RZpZ5O)#q}9a diff --git a/tutorial/A_Glossary.html b/tutorial/A_Glossary.html index 91ddb628..e62dedbc 100644 --- a/tutorial/A_Glossary.html +++ b/tutorial/A_Glossary.html @@ -1,6 +1,6 @@ -