관리-도구
편집 파일: stap_staticmarkers.stp
// stap/staprun/stapio static probes tapset // // Copyright (C) 2009 Red Hat Inc. // // This file is part of systemtap, and is free software. You can // redistribute it and/or modify it under the terms of the GNU General // Public License (GPL); either version 2, or (at your option) any // later version. /** * probe stap.pass0 - Starting stap pass0 (parsing command line arguments) * * @session: the systemtap_session variable s * * pass0 fires after command line arguments have been parsed. */ probe stap.pass0 = process("stap").mark("pass0__start") { session = $arg1 } /** * probe stap.pass0.end - Finished stap pass0 (parsing command line arguments) * @session: the systemtap_session variable s * * pass0.end fires just before the gettimeofday() call for pass1. */ probe stap.pass0.end = process("stap").mark("pass0__end") { session = $arg1 } /** * probe stap.pass1a - Starting stap pass1 (parsing user script) * @session: the systemtap_session variable s * * pass1a fires just after the call to gettimeofday(), before the * user script is parsed. */ probe stap.pass1a = process("stap").mark("pass1a__start") { session = $arg1 } /** * probe stap.pass1b - Starting stap pass1 (parsing library scripts) * @session: the systemtap_session variable s * * pass1b fires just before the library scripts are parsed. */ probe stap.pass1b = process("stap").mark("pass1b__start") { session = $arg1 } /** * probe stap.pass1.end - Finished stap pass1 (parsing scripts) * @session: the systemtap_session variable s * * pass1.end fires just before the jump to cleanup if s.last_pass = 1. */ probe stap.pass1.end = process("stap").mark("pass1__end") { session = $arg1 } /** * probe stap.pass2 - Starting stap pass2 (elaboration) * @session: the systemtap_session variable s * * pass2 fires just after the call to gettimeofday(), just before the * call to semantic_pass. */ probe stap.pass2 = process("stap").mark("pass2__start") { session = $arg1 } /** * probe stap.pass2.end - Finished stap pass2 (elaboration) * @session: the systemtap_session variable s * * pass2.end fires just before the jump to cleanup if s.last_pass = 2 */ probe stap.pass2.end = process("stap").mark("pass2__end") { session = $arg1 } /** * probe stap.pass3 - Starting stap pass3 (translation to C) * @session: the systemtap_session variable s * * pass3 fires just after the call to gettimeofday(), just before the * call to translate_pass. */ probe stap.pass3 = process("stap").mark("pass3__start") { session = $arg1 } /** * probe stap.pass3.end - Finished stap pass3 (translation to C) * @session: the systemtap_session variable s * * pass3.end fires just before the jump to cleanup if s.last_pass = 3 */ probe stap.pass3.end = process("stap").mark("pass3__end") { session = $arg1 } /** * probe stap.pass4 - Starting stap pass4 (compile C code into kernel module) * @session: the systemtap_session variable s * * pass4 fires just after the call to gettimeofday(), just before the * call to compile_pass. */ probe stap.pass4 = process("stap").mark("pass4__start") { session = $arg1 } /** * probe stap.pass4.end - Finished stap pass4 (compile C code into kernel module) * @session: the systemtap_session variable s * * pass4.end fires just before the jump to cleanup if s.last_pass = 4 */ probe stap.pass4.end = process("stap").mark("pass4__end") { session = $arg1 } /** * probe stap.pass5 - Starting stap pass5 (running the instrumentation) * @session: the systemtap_session variable s * * pass5 fires just after the call to gettimeofday(), just before the * call to run_pass. */ probe stap.pass5 = process("stap").mark("pass5__start") { session = $arg1 } /** * probe stap.pass5.end - Finished stap pass5 (running the instrumentation) * @session: the systemtap_session variable s * * pass5.end fires just before the cleanup label */ probe stap.pass5.end = process("stap").mark("pass5__end") { session = $arg1 } /** * probe stap.pass6 - Starting stap pass6 (cleanup) * @session: the systemtap_session variable s * * pass6 fires just after the cleanup label, essentially the same spot * as pass5.end */ probe stap.pass6 = process("stap").mark("pass6__start") { session = $arg1 } /** * probe stap.pass6.end - Finished stap pass6 (cleanup) * @session: the systemtap_session variable s * * pass6.end fires just before main's return. */ probe stap.pass6.end = process("stap").mark("pass6__end") { session = $arg1 } /** * probe stap.cache_clean - Removing file from stap cache * @path: the path to the .ko/.c file being removed * * Fires just before the call to unlink the module/source file. */ probe stap.cache_clean = process("stap").mark("cache__clean") { path = user_string_quoted($arg1) } /** * probe stap.cache_add_mod - Adding kernel instrumentation module to cache * @source_path: the path the .ko file is coming from (incl filename) * @dest_path: the path the .ko file is going to (incl filename) * * Fires just before the file is actually moved. Note: if moving fails, * cache_add_src and cache_add_nss will not fire. */ probe stap.cache_add_mod = process("stap").mark("cache__add__module") { source_path = user_string_quoted($arg1) dest_path = user_string_quoted($arg2) } /** * probe stap.cache_add_src - Adding C code translation to cache * @source_path: the path the .c file is coming from (incl filename) * @dest_path: the path the .c file is going to (incl filename) * * Fires just before the file is actually moved. Note: if moving the * kernel module fails, this probe will not fire. */ probe stap.cache_add_src = process("stap").mark("cache__add__source") { source_path = user_string_quoted($arg1) dest_path = user_string_quoted($arg2) } /** * probe stap.cache_add_nss - Add NSS (Network Security Services) information to cache * @source_path: the path the .sgn file is coming from (incl filename) * @dest_path: the path the .sgn file is coming from (incl filename) * * 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. */ probe stap.cache_add_nss = process("stap").mark("cache__add__nss") ? { source_path = user_string_quoted($arg1) dest_path = user_string_quoted($arg2) } /** * probe stap.cache_get - Found item in stap cache * @source_path: the path of the .c source file * @module_path: the path of the .ko kernel module file * * Fires just before the return of get_from_cache, when the cache grab * is successful. */ probe stap.cache_get = process("stap").mark("cache__get") { source_path = user_string_quoted($arg1) module_path = user_string_quoted($arg2) } /** * probe stap.system - Starting a command from stap * @command: the command string to be run by posix_spawn (as sh -c <str>) * * Fires at the entry of the stap_system command. */ probe stap.system = process("stap").mark("stap_system__start") { command = user_string_quoted($arg1) } /** * probe stap.system.spawn - stap spawned new process * @ret: the return value from posix_spawn * @pid: the pid of the spawned process * * Fires just after the call to posix_spawn. */ probe stap.system.spawn = process("stap").mark("stap_system__spawn") { /* posix_spawn(3p) for meaning of ret */ ret = $arg1 pid = $arg2 } /** * probe stap.system.return - Finished a command from stap * @ret: a return code associated with running waitpid on the spawned process; * a non-zero value indicates error * * Fires just before the return of the stap_system function, after waitpid. */ probe stap.system.return = process("stap").mark("stap_system__complete") { ret = $arg1 } /** * probe staprun.insert_module - Inserting SystemTap instrumentation module * @path: the full path to the .ko kernel module about to be inserted * * Fires just before the call to insert the module. */ probe staprun.insert_module = process("staprun").mark("insert__module") { path = user_string_quoted($arg1) } /** * probe staprun.remove_module - Removing SystemTap instrumentation module * @name: the stap module name to be removed (without the .ko extension) * * Fires just before the call to remove the module. */ probe staprun.remove_module = process("staprun").mark("remove__module") { name = user_string_quoted($arg1) } /** * probe staprun.send_control_message - Sending a control message * @type: type of message being send; defined in runtime/transport/transport_msgs.h * @data: a ptr to a binary blob of data sent as the control message * @len: the length (in bytes) of the data blob * * Fires at the beginning of the send_request function. */ probe staprun.send_control_message = process("staprun").mark("send__ctlmsg") { type = $arg1 data = $arg2 len = $arg3 } /** * probe stapio.receive_control_message - Received a control message * @type: type of message being send; defined in runtime/transport/transport_msgs.h * @data: a ptr to a binary blob of data sent as the control message * @len: the length (in bytes) of the data blob * * Fires just after a message was receieved and before it's processed. */ /* *** Due to stapio not being in a user's PATH and the build environment of *** *** stap, there is no immediate 'good' way to insert the correct path here *** *** so comment out this probe. Note however, the static marker is still *** *** present in source. *** probe stapio.receive_control_message = process("@libexecdir@/systemtap/stapio").mark("recv__ctlmsg") { type = $arg1 data = $arg2 len = $arg3 } */