From 1c0f18a9730f1fa5990c79debfc1960b08c8b7cf Mon Sep 17 00:00:00 2001 From: William Cohen Date: Wed, 10 Dec 2008 14:49:46 -0500 Subject: Edit useful script examples. Clean up formating para-call-graph-simple.stp --- .../en-US/Useful_Scripts-iotime.xml | 15 +++++---- .../en-US/Useful_Scripts-nettop.xml | 13 +++++--- .../en-US/extras/para-callgraph-simple.stp | 36 +++++++++++----------- 3 files changed, 33 insertions(+), 31 deletions(-) (limited to 'doc/SystemTap_Beginners_Guide/en-US') diff --git a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-iotime.xml b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-iotime.xml index 21b6db9d..7a1633aa 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-iotime.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-iotime.xml @@ -68,13 +68,12 @@ <xref linkend="iotime"/> Sample Output [...] -3123380 2460 (pcscd) access /dev/bus/usb/005/001 read: 0 write: 0 -825946 3364 (NetworkManager) access /sys/class/net/eth0/carrier read: 8190 write: 0 -825955 3364 (NetworkManager) iotime /sys/class/net/eth0/carrier time: 9 -117061 2460 (pcscd) access /dev/bus/usb/003/001 read: 43 write: 0 -117065 2460 (pcscd) iotime /dev/bus/usb/003/001 time: 7 -3973737 2886 (sendmail) access /proc/loadavg read: 4096 write: 0 -3973744 2886 (sendmail) iotime /proc/loadavg time: 11 +825946 3364 (NetworkManager) access /sys/class/net/eth0/carrier read: 8190 write: 0 +825955 3364 (NetworkManager) iotime /sys/class/net/eth0/carrier time: 9 +117061 2460 (pcscd) access /dev/bus/usb/003/001 read: 43 write: 0 +117065 2460 (pcscd) iotime /dev/bus/usb/003/001 time: 7 +3973737 2886 (sendmail) access /proc/loadavg read: 4096 write: 0 +3973744 2886 (sendmail) iotime /proc/loadavg time: 11 [...] @@ -137,4 +136,4 @@ print("\n") } --> - \ No newline at end of file + diff --git a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-nettop.xml b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-nettop.xml index c51d4b66..2d7e3595 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-nettop.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-nettop.xml @@ -63,20 +63,23 @@ if/else conditionals, alternative syntax examples of SystemTap scripts -Note that function print_activity() uses the following constructs: +Note that function print_activity() uses the following +expressions: -n_xmit ? @sum(ifxmit[pid, dev, exec, uid])/1024 : 0, +n_xmit ? @sum(ifxmit[pid, dev, exec, uid])/1024 : 0 n_recv ? @sum(ifrecv[pid, dev, exec, uid])/1024 : 0 -These constructs are if/else conditionals. The first statement is simply a more concise way of writing: +These expressions are if/else conditionals. +The first statement is simply a more concise way of writing the following +psuedo code: if n_recv != 0 then - @sum(ifrecv[pid, dev, exec, uid])/1024 + @sum(ifrecv[pid, dev, exec, uid])/1024 else - 0 + 0 tracks which processes are generating network traffic on the system, and provides the following information about each process: diff --git a/doc/SystemTap_Beginners_Guide/en-US/extras/para-callgraph-simple.stp b/doc/SystemTap_Beginners_Guide/en-US/extras/para-callgraph-simple.stp index 17cf50a5..1a3e2e03 100755 --- a/doc/SystemTap_Beginners_Guide/en-US/extras/para-callgraph-simple.stp +++ b/doc/SystemTap_Beginners_Guide/en-US/extras/para-callgraph-simple.stp @@ -1,39 +1,39 @@ function trace(entry_p) { - if(tid() in trace) - printf("%s%s%s\n",thread_indent(entry_p), - (entry_p>0?"->":"<-"), - probefunc()) + if(tid() in trace) + printf("%s%s%s\n",thread_indent(entry_p), + (entry_p>0?"->":"<-"), + probefunc()) } global trace probe kernel.function(@1).call { - if (execname() == "stapio") next # skip our own helper process - trace[tid()] = 1 - trace(1) + if (execname() == "stapio") next # skip our own helper process + trace[tid()] = 1 + trace(1) } probe kernel.function(@1).return { - trace(-1) - delete trace[tid()] + trace(-1) + delete trace[tid()] } probe kernel.function(@2).call { trace(1) } probe kernel.function(@2).return { trace(-1) } function trace(entry_p) { - if(tid() in trace) - printf("%s%s%s\n",thread_indent(entry_p), - (entry_p>0?"->":"<-"), - probefunc()) + if(tid() in trace) + printf("%s%s%s\n",thread_indent(entry_p), + (entry_p>0?"->":"<-"), + probefunc()) } global trace probe kernel.function(@1).call { - if (execname() == "stapio") next # skip our own helper process - trace[tid()] = 1 - trace(1) + if (execname() == "stapio") next # skip our own helper process + trace[tid()] = 1 + trace(1) } probe kernel.function(@1).return { - trace(-1) - delete trace[tid()] + trace(-1) + delete trace[tid()] } probe kernel.function(@2).call { trace(1) } -- cgit From 9a701ca695c885e9524a5f9488e1fc952d325f54 Mon Sep 17 00:00:00 2001 From: William Cohen Date: Wed, 10 Dec 2008 14:54:14 -0500 Subject: Clean up formatting iotime-simple.stp --- doc/SystemTap_Beginners_Guide/en-US/extras/iotime-simple.stp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'doc/SystemTap_Beginners_Guide/en-US') diff --git a/doc/SystemTap_Beginners_Guide/en-US/extras/iotime-simple.stp b/doc/SystemTap_Beginners_Guide/en-US/extras/iotime-simple.stp index a14f7731..a16ee4a2 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/extras/iotime-simple.stp +++ b/doc/SystemTap_Beginners_Guide/en-US/extras/iotime-simple.stp @@ -68,10 +68,10 @@ probe syscall.write.return { probe syscall.close { if (filehandles[pid(), $fd] != "") { printf("%d %s access %s read: %d write: %d\n", timestamp(), proc(), - filehandles[pid(), $fd], fileread[pid(), $fd], filewrite[pid(), $fd]) + filehandles[pid(), $fd], fileread[pid(), $fd], filewrite[pid(), $fd]) if (@count(time_io[pid(), $fd])) printf("%d %s iotime %s time: %d\n", timestamp(), proc(), - filehandles[pid(), $fd], @sum(time_io[pid(), $fd])) + filehandles[pid(), $fd], @sum(time_io[pid(), $fd])) } delete fileread[pid(), $fd] delete filewrite[pid(), $fd] @@ -79,4 +79,4 @@ probe syscall.close { delete fd_io[pid()] delete entry_io[pid()] delete time_io[pid(),$fd] -} \ No newline at end of file +} -- cgit From 744cf3ab2a4735510874646ac720b4b28701f16f Mon Sep 17 00:00:00 2001 From: William Cohen Date: Wed, 10 Dec 2008 15:22:53 -0500 Subject: Add information about default MAXNESTING and MAXACTION allowed. --- doc/SystemTap_Beginners_Guide/en-US/Errors.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'doc/SystemTap_Beginners_Guide/en-US') diff --git a/doc/SystemTap_Beginners_Guide/en-US/Errors.xml b/doc/SystemTap_Beginners_Guide/en-US/Errors.xml index ffb70470..910ff510 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Errors.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Errors.xml @@ -807,6 +807,7 @@ An array containing aggregate values contains too many distinct key pairs at thi Too many levels of function call nesting were attempted. + The default nesting of function calls allowed is 10. @@ -843,7 +844,9 @@ An array containing aggregate values contains too many distinct key pairs at thi understainding SystemTap errors - The probe handler attempted to execute too many statements in the probe handler. + The probe handler attempted to execute too many statements in the + probe handler. The default number of actions allow in a probe handler + is 1000. -- cgit From c8c12f3cc2181a1964611af79d69b3ffef4e0d34 Mon Sep 17 00:00:00 2001 From: ddomingo Date: Thu, 11 Dec 2008 15:12:45 +1000 Subject: edited index terms as per wcohen --- .../en-US/Array-Operations.xml | 42 +- doc/SystemTap_Beginners_Guide/en-US/Arrays.xml | 24 +- .../en-US/ScriptConstructs.xml | 18 +- doc/SystemTap_Beginners_Guide/en-US/Scripts.xml | 1141 ++++++++++---------- .../en-US/Useful_Scripts-disktop.xml | 19 +- .../en-US/Useful_Scripts-iotime.xml | 22 + .../en-US/Useful_Scripts-traceio.xml | 17 + 7 files changed, 681 insertions(+), 602 deletions(-) (limited to 'doc/SystemTap_Beginners_Guide/en-US') diff --git a/doc/SystemTap_Beginners_Guide/en-US/Array-Operations.xml b/doc/SystemTap_Beginners_Guide/en-US/Array-Operations.xml index 789bf607..bf496321 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Array-Operations.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Array-Operations.xml @@ -962,23 +962,23 @@ probe vfs.read array operations computing for statistical aggregates -count (integer extractor) +@count (integer extractor) operations computing for statistical aggregates -count (integer extractor) +@count (integer extractor) computing for statistical aggregates array operations -count (integer extractor) +@count (integer extractor) -count (integer extractor) + @count (integer extractor) computing for statistical aggregates array operations @@ -997,23 +997,23 @@ probe vfs.read array operations computing for statistical aggregates -sum (integer extractor) +@sum (integer extractor) operations computing for statistical aggregates -sum (integer extractor) +@sum (integer extractor) computing for statistical aggregates array operations -sum (integer extractor) +@sum (integer extractor) -sum (integer extractor) + @sum (integer extractor) computing for statistical aggregates array operations @@ -1033,23 +1033,23 @@ probe vfs.read array operations computing for statistical aggregates -min (integer extractor) +@min (integer extractor) operations computing for statistical aggregates -min (integer extractor) +@min (integer extractor) computing for statistical aggregates array operations -min (integer extractor) +@min (integer extractor) -min (integer extractor) + @min (integer extractor) computing for statistical aggregates array operations @@ -1069,23 +1069,23 @@ probe vfs.read array operations computing for statistical aggregates -max (integer extractor) +@max (integer extractor) operations computing for statistical aggregates -max (integer extractor) +@max (integer extractor) computing for statistical aggregates array operations -max (integer extractor) +@max (integer extractor) -max (integer extractor) + @max (integer extractor) computing for statistical aggregates array operations @@ -1105,23 +1105,23 @@ probe vfs.read array operations computing for statistical aggregates -avg (integer extractor) +@avg (integer extractor) operations computing for statistical aggregates -avg (integer extractor) +@avg (integer extractor) computing for statistical aggregates array operations -avg (integer extractor) +@avg (integer extractor) -avg (integer extractor) + @avg (integer extractor) computing for statistical aggregates array operations @@ -1163,7 +1163,7 @@ probe vfs.read } probe timer.s(3) { - foreach([var1,var2] in reads) + foreach([var1,var2] in reads) printf("%s (%d) : %d \n", var1, var2, @count(reads[var1,var2])) } diff --git a/doc/SystemTap_Beginners_Guide/en-US/Arrays.xml b/doc/SystemTap_Beginners_Guide/en-US/Arrays.xml index 63c3df04..ac320fcd 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Arrays.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Arrays.xml @@ -6,7 +6,7 @@ Associative Arrays arrays -introduction +associative arrays @@ -20,11 +20,13 @@ + associative arrays @@ -38,14 +40,14 @@ arrays - + associative arrays introduction @@ -58,14 +60,14 @@ arrays - + associative arrays introduction @@ -78,14 +80,14 @@ arrays - + associative arrays introduction @@ -99,13 +101,13 @@ Since associative arrays are normally processed in multiple probes (as we will demonstrate later), they are 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: - + associative arrays introduction @@ -131,14 +133,14 @@ 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: - + associative arrays introduction diff --git a/doc/SystemTap_Beginners_Guide/en-US/ScriptConstructs.xml b/doc/SystemTap_Beginners_Guide/en-US/ScriptConstructs.xml index a139015d..2550efce 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/ScriptConstructs.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/ScriptConstructs.xml @@ -45,7 +45,7 @@ -SystemTap handlers + SystemTap statements SystemTap handler constructs variables @@ -73,7 +73,7 @@ name, assign a value from a function or expression to it, and use it in an expre -SystemTap handlers + SystemTap statements SystemTap handler constructs global @@ -130,7 +130,7 @@ probe timer.jiffies(100) { count_jiffies ++ } -SystemTap handlers + SystemTap statements conditional statements @@ -153,7 +153,7 @@ You can do this by using conditionals in handlers. SystemTa -SystemTap handlers + SystemTap statements conditional statements if/else @@ -219,7 +219,7 @@ probe end -SystemTap handlers + SystemTap statements conditional statements while loops @@ -271,7 +271,7 @@ printf("goodbye world\n") -SystemTap handlers + SystemTap statements conditional statements for loops @@ -326,7 +326,7 @@ while (conditional) { -SystemTap handlers + SystemTap statements conditional statements conditional operators @@ -374,7 +374,7 @@ while (conditional) { -SystemTap handlers + SystemTap statements SystemTap handler constructs command-line arguments @@ -407,7 +407,7 @@ probe kernel.function(@1).return { } -SystemTap handlers + SystemTap statements SystemTap handler constructs variable notations diff --git a/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml b/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml index a0fc7d52..fe2e69f4 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml @@ -547,578 +547,599 @@ probe timer.s(4) -
- Systemtap Handler/Body - -Handlers -introduction - - Consider the following sample script: - -helloworld.stp - -probe begin -{ - printf ("hello world\n") - exit () -} - - - - - In , the event begin - (i.e. the start of the session) triggers the handler enclosed in - { }, which simply prints hello - world, then exits. - - - - Note - -Handlers -exit() - - - -exit() -Handlers - - - 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 - CtrlC. - - - - - printf ( ) Statements - - printf() - format strings - - - - 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) - - -printf() -format strings - - - -format strings -printf() - - - The format string specifies how - arguments should be printed. The format string - of simply instructs SystemTap to print - hello world, and contains no format specifiers. - - -printf() -format specifiers - - - -format specifiers -printf() - - - 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 - -printf() -syntax and format - - - -syntax and format -printf() - - -format and syntax -printf() - - 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: - - -variables-in-printf-statements.stp - -probe syscall.open -{ - printf ("%s(%d) open\n", execname(), pid()) -} - - - - - instructs SystemTap to probe all entries to - the system call open; for each event, it prints the - current execname() (a string with the executable name) and - pid() (the current process ID number), followed by the word - open. A snippet of this probe's output would look like: - - - editorial review: does a clarification that "format specifier1" is - to "argument1", "format specifier2" is to "argument2", or is this clear - enough? - - -vmware-guestd(2206) open -hald(2360) open -hald(2360) open -hald(2360) open -df(3433) open -df(3433) open -df(3433) open -hald(2360) open - - - - SystemTap Functions - -functions - - - -SystemTap script functions - - - - Handlers - handler functions - - - - handler functions - Handlers - - - - SystemTap supports a wide variety of functions that can be used as - printf () arguments. - uses the SystemTap functions execname() (name of the - process that called a kernel function/performed a system call) and - pid() (current process ID). - - - - is "handler function" an appropriate term? wcohen: use "SystemTap functions" to match up language in man pages - -Handlers -handler functions - - - The following is a list of commonly-used SystemTap functions: - - - - tid() - - -Handlers -handler functions -tid() - - - -handler functions -Handlers -tid() - - - -tid() -Handlers -handler functions - - - The ID of the current thread. - - - - - uid() - - -Handlers -handler functions -uid() - - - -handler functions -Handlers -uid() - - - -uid() -Handlers -handler functions - - The ID of the current user. - - - - - cpu() - - -Handlers -handler functions -cpu() - - - -handler functions -Handlers -cpu() - - - -cpu() -Handlers -handler functions - - The current CPU number. - - - - - gettimeofday_s() - - -Handlers -handler functions -gettimeofday_s() - - - -handler functions -Handlers -gettimeofday_s() - - - -gettimeofday_s() -Handlers -handler functions - - - The number of seconds since UNIX epoch (January 1, 1970). - - - - - ctime() - - - Convert number of seconds since UNIX epoch to date. - - - - - - - pp() - - -Handlers -handler functions -pp() - - - -handler functions -Handlers -pp() - - - -pp() -Handlers -handler functions - - A string describing the probe point currently being handled. - - - - - - thread_indent() - - -Handlers -handler functions -thread_indent() - - - -handler functions -Handlers -thread_indent() - - - -thread_indent() -Handlers -handler functions - +
+ Systemtap Handler/Body + + handlers + introduction + + Consider the following sample script: + + helloworld.stp + + probe begin + { + printf ("hello world\n") + exit () + } + + + - 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. - - - - 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. - + In , the event begin + (i.e. the start of the session) triggers the handler enclosed in + { }, which simply prints hello + world, then exits. + + + + Note + + functions (used in handlers) + exit() + - - Consider the following example on the use of - thread_indent(): - + + exit() + Handlers + + + 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 + CtrlC. + + + + + printf ( ) Statements + + printf() + format strings + -thread_indent.stp - -probe kernel.function("*@net/socket.c") -{ - printf ("%s -> %s\n", thread_indent(1), probefunc()) -} -probe kernel.function("*@net/socket.c").return -{ - printf ("%s <- %s\n", thread_indent(-1), probefunc()) -} - - - - - prints out the - thread_indent() and probe functions at each event - in the following format: + + 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: + + - - 0 ftp(7223): -> sys_socketcall - 1159 ftp(7223): -> sys_socket - 2173 ftp(7223): -> __sock_create - 2286 ftp(7223): -> sock_alloc_inode - 2737 ftp(7223): <- sock_alloc_inode - 3349 ftp(7223): -> sock_alloc - 3389 ftp(7223): <- sock_alloc - 3417 ftp(7223): <- __sock_create - 4117 ftp(7223): -> sock_create - 4160 ftp(7223): <- sock_create - 4301 ftp(7223): -> sock_map_fd - 4644 ftp(7223): -> sock_map_file - 4699 ftp(7223): <- sock_map_file - 4715 ftp(7223): <- sock_map_fd - 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_ident() call for the thread (included in the string from thread_ident()). - The process name (and its corresponding ID) that made the function call (included in the string from thread_ident()). + + printf ("format string\n", arguments) + + + printf() + format strings + - 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. + + format strings + printf() + + + The format string specifies how + arguments should be printed. The format string + of simply instructs SystemTap to print + hello world, and contains no format specifiers. + + + printf() + format specifiers + - The name of the function called by the process. - - -remember to add a reference later to "tapsets" from here, to clarify -that thread_indent is defined in tapsets as a special function of sorts + + format specifiers + printf() + + + 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 + + printf() + syntax and format + + + + syntax and format + printf() + + + format and syntax + printf() + + 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: + + + variables-in-printf-statements.stp + + probe syscall.open + { + printf ("%s(%d) open\n", execname(), pid()) + } + + - - - - - name - - -Handlers -handler functions -name - - - -handler functions -Handlers -name - - - -name -Handlers -handler functions - - Identifies the name of a specific system call. This variable can - only be used in probes that use the event - syscall.system_call. - - - - - - target() - - - -Handlers -handler functions -target() - - - -handler functions -Handlers -target() - - - -target() -Handlers -handler functions - - 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: - - - -targetexample.stp - -probe syscall.* { - if (pid() == target()) - printf("%s/n", name) -} - - - - - When 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. - + instructs SystemTap to probe all entries to + the system call open; for each event, it prints the + current execname() (a string with the executable name) and + pid() (the current process ID number), followed by the word + open. A snippet of this probe's output would look like: + - - 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). - - - - - - - - - - For more information about supported SystemTap functions, refer to - man stapfuncs. - - -will need a complete listing of supported handler functions? also, SystemTap function descriptions seem ambiguous, please advise. - - - + + handler functions + + + + SystemTap supports a wide variety of functions that can be used as + printf () arguments. + uses the SystemTap functions execname() (name of the + process that called a kernel function/performed a system call) and + pid() (current process ID). + + + + is "handler function" an appropriate term? wcohen: use "SystemTap functions" to match up language in man pages + + The following is a list of commonly-used SystemTap functions: + + + + tid() + + + functions + handler functions + tid() + + + + handler functions + Handlers + tid() + + + + tid() + Handlers + handler functions + + + The ID of the current thread. + + + + + uid() + + + functions + handler functions + uid() + + + + handler functions + Handlers + uid() + + + + uid() + Handlers + handler functions + + The ID of the current user. + + + + + cpu() + + + functions + handler functions + cpu() + + + + handler functions + Handlers + cpu() + + + + cpu() + Handlers + handler functions + + The current CPU number. + + + + + gettimeofday_s() + + + functions + handler functions + gettimeofday_s() + + + + handler functions + Handlers + gettimeofday_s() + + + + gettimeofday_s() + Handlers + handler functions + + + The number of seconds since UNIX epoch (January 1, 1970). + + + + + ctime() + + + functions + handler functions + ctime() + + + + handler functions + Handlers + ctime() + + + + ctime() + Handlers + handler functions + + + Convert number of seconds since UNIX epoch to date. + + + + + + + + pp() + + + functions + handler functions + pp() + + + + handler functions + Handlers + pp() + + + + pp() + Handlers + handler functions + + A string describing the probe point currently being handled. + + + + + + thread_indent() + + + functions + handler functions + thread_indent() + + + + handler functions + Handlers + thread_indent() + + + + thread_indent() + Handlers + handler functions + + + 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. + + + + 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(): + + + thread_indent.stp + + probe kernel.function("*@net/socket.c") + { + printf ("%s -> %s\n", thread_indent(1), probefunc()) + } + probe kernel.function("*@net/socket.c").return + { + printf ("%s <- %s\n", thread_indent(-1), probefunc()) + } + + + + + prints out the + thread_indent() and probe functions at each event + in the following format: + + + 0 ftp(7223): -> sys_socketcall + 1159 ftp(7223): -> sys_socket + 2173 ftp(7223): -> __sock_create + 2286 ftp(7223): -> sock_alloc_inode + 2737 ftp(7223): <- sock_alloc_inode + 3349 ftp(7223): -> sock_alloc + 3389 ftp(7223): <- sock_alloc + 3417 ftp(7223): <- __sock_create + 4117 ftp(7223): -> sock_create + 4160 ftp(7223): <- sock_create + 4301 ftp(7223): -> sock_map_fd + 4644 ftp(7223): -> sock_map_file + 4699 ftp(7223): <- sock_map_file + 4715 ftp(7223): <- sock_map_fd + 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_ident() call for the thread (included in the string from thread_ident()). + + The process name (and its corresponding ID) that made the function call (included in the string from thread_ident()). + + 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. + + + remember to add a reference later to "tapsets" from here, to clarify + that thread_indent is defined in tapsets as a special function of sorts + + + + + + name + + +local variables +name + + + +variables (local) +name + + + +name +local variables + + + Identifies the name of a specific system call. This variable can + only be used in probes that use the event + syscall.system_call. + + + + + + target() + + + + functions + handler functions + target() + + + + handler functions + Handlers + target() + + + + target() + Handlers + handler functions + + + 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: + + + + targetexample.stp + + probe syscall.* { + if (pid() == target()) + printf("%s/n", name) + } + + + + + When 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). + + + + + + + + + + For more information about supported SystemTap functions, refer to + man stapfuncs. + + + will need a complete listing of supported handler functions? also, SystemTap function descriptions seem ambiguous, please advise. + + +
-
diff --git a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-disktop.xml b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-disktop.xml index 42f1986b..8a786d82 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-disktop.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-disktop.xml @@ -107,7 +107,24 @@ The time and date in the output of 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. - + + + local variables + sample usage + $return + + + + variables (local) + sample usage + $return + + + + $return + sample usage + local variables + 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. diff --git a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-iotime.xml b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-iotime.xml index 7a1633aa..4d7d6b17 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-iotime.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-iotime.xml @@ -52,6 +52,26 @@ 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. + + + + local variables + sample usage + $count + + + + variables (local) + sample usage + $count + + + + $count + sample usage + local variables + + also uses the local variable $count to track the @@ -70,8 +90,10 @@ [...] 825946 3364 (NetworkManager) access /sys/class/net/eth0/carrier read: 8190 write: 0 825955 3364 (NetworkManager) iotime /sys/class/net/eth0/carrier time: 9 +[...] 117061 2460 (pcscd) access /dev/bus/usb/003/001 read: 43 write: 0 117065 2460 (pcscd) iotime /dev/bus/usb/003/001 time: 7 +[...] 3973737 2886 (sendmail) access /proc/loadavg read: 4096 write: 0 3973744 2886 (sendmail) iotime /proc/loadavg time: 11 [...] diff --git a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio.xml b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio.xml index ab260d63..1af1475d 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio.xml @@ -55,7 +55,24 @@ executables. This information is tracked and printed out in 1-second intervals, and in descending order. + + + local variables + sample usage + $return + + + variables (local) + sample usage + $return + + + + $return + sample usage + local variables + Note that also uses the local variable $return, which is also used by from . -- cgit From cffd1e12179857f6fc50d848c7ecc35742aca75e Mon Sep 17 00:00:00 2001 From: William Cohen Date: Mon, 15 Dec 2008 14:29:30 -0500 Subject: Minor edits and format corrections. --- doc/SystemTap_Beginners_Guide/en-US/Scripts.xml | 138 ++++++++++----------- .../en-US/Understanding_How_SystemTap_Works.xml | 2 +- 2 files changed, 70 insertions(+), 70 deletions(-) (limited to 'doc/SystemTap_Beginners_Guide/en-US') diff --git a/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml b/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml index fe2e69f4..bb71625e 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml @@ -129,7 +129,7 @@ SystemTap scripts use the file extension .stp, and - are conatains probes written in the following format: + contains probes written in the following format: @@ -555,21 +555,21 @@ probe timer.s(4) Consider the following sample script: - helloworld.stp - - probe begin - { - printf ("hello world\n") - exit () - } - - +helloworld.stp + +probe begin +{ + printf ("hello world\n") + exit () +} + + In , the event begin (i.e. the start of the session) triggers the handler enclosed in { }, which simply prints hello - world, then exits. + world followed by a new-line, then exits. @@ -666,15 +666,15 @@ probe timer.s(4) To illustrate this, consider the following probe example: - - variables-in-printf-statements.stp - - probe syscall.open - { - printf ("%s(%d) open\n", execname(), pid()) - } - - + +variables-in-printf-statements.stp + +probe syscall.open +{ + printf ("%s(%d) open\n", execname(), pid()) +} + + instructs SystemTap to probe all entries to @@ -688,16 +688,16 @@ probe timer.s(4) to "argument1", "format specifier2" is to "argument2", or is this clear enough? - - vmware-guestd(2206) open - hald(2360) open - hald(2360) open - hald(2360) open - df(3433) open - df(3433) open - df(3433) open - hald(2360) open - + +vmware-guestd(2206) open +hald(2360) open +hald(2360) open +hald(2360) open +df(3433) open +df(3433) open +df(3433) open +hald(2360) open + SystemTap Functions @@ -945,42 +945,42 @@ probe timer.s(4) thread_indent(): - thread_indent.stp - - probe kernel.function("*@net/socket.c") - { - printf ("%s -> %s\n", thread_indent(1), probefunc()) - } - probe kernel.function("*@net/socket.c").return - { - printf ("%s <- %s\n", thread_indent(-1), probefunc()) - } - - +thread_indent.stp + +probe kernel.function("*@net/socket.c") +{ + printf ("%s -> %s\n", thread_indent(1), probefunc()) +} +probe kernel.function("*@net/socket.c").return +{ + printf ("%s <- %s\n", thread_indent(-1), probefunc()) +} + + prints out the thread_indent() and probe functions at each event in the following format: - - 0 ftp(7223): -> sys_socketcall - 1159 ftp(7223): -> sys_socket - 2173 ftp(7223): -> __sock_create - 2286 ftp(7223): -> sock_alloc_inode - 2737 ftp(7223): <- sock_alloc_inode - 3349 ftp(7223): -> sock_alloc - 3389 ftp(7223): <- sock_alloc - 3417 ftp(7223): <- __sock_create - 4117 ftp(7223): -> sock_create - 4160 ftp(7223): <- sock_create - 4301 ftp(7223): -> sock_map_fd - 4644 ftp(7223): -> sock_map_file - 4699 ftp(7223): <- sock_map_file - 4715 ftp(7223): <- sock_map_fd - 4732 ftp(7223): <- sys_socket - 4775 ftp(7223): <- sys_socketcall - + +0 ftp(7223): -> sys_socketcall +1159 ftp(7223): -> sys_socket +2173 ftp(7223): -> __sock_create +2286 ftp(7223): -> sock_alloc_inode +2737 ftp(7223): <- sock_alloc_inode +3349 ftp(7223): -> sock_alloc +3389 ftp(7223): <- sock_alloc +3417 ftp(7223): <- __sock_create +4117 ftp(7223): -> sock_create +4160 ftp(7223): <- sock_create +4301 ftp(7223): -> sock_map_fd +4644 ftp(7223): -> sock_map_file +4699 ftp(7223): <- sock_map_file +4715 ftp(7223): <- sock_map_fd +4732 ftp(7223): <- sys_socket +4775 ftp(7223): <- sys_socketcall + This sample output contains the following information: @@ -1073,15 +1073,15 @@ probe timer.s(4) to it. For example: - - targetexample.stp - - probe syscall.* { - if (pid() == target()) - printf("%s/n", name) - } - - + +targetexample.stp + +probe syscall.* { + if (pid() == target()) + printf("%s/n", name) +} + + When is run with the argument diff --git a/doc/SystemTap_Beginners_Guide/en-US/Understanding_How_SystemTap_Works.xml b/doc/SystemTap_Beginners_Guide/en-US/Understanding_How_SystemTap_Works.xml index 4e61e247..d9fe6ab4 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Understanding_How_SystemTap_Works.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Understanding_How_SystemTap_Works.xml @@ -53,7 +53,7 @@ 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, or printing results. + storing them into internal variables, and printing results.
-- cgit From 1179271f9a422edf543178d2d02d2bf38334e697 Mon Sep 17 00:00:00 2001 From: William Cohen Date: Mon, 15 Dec 2008 14:34:14 -0500 Subject: Clarify optional else clause. --- doc/SystemTap_Beginners_Guide/en-US/ScriptConstructs.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'doc/SystemTap_Beginners_Guide/en-US') diff --git a/doc/SystemTap_Beginners_Guide/en-US/ScriptConstructs.xml b/doc/SystemTap_Beginners_Guide/en-US/ScriptConstructs.xml index 2550efce..89334eff 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/ScriptConstructs.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/ScriptConstructs.xml @@ -177,7 +177,8 @@ The statement1 is executed if the condition expression is non-zero. The statement2 is executed if the condition -expression is zero. The else is optional. Both +expression is zero. The else clause +(else statement2)is optional. Both statement1 and statement2 can be statement blocks. -- cgit From 16da491f985baaa0bfbdc9cd0098d508534bf75b Mon Sep 17 00:00:00 2001 From: William Cohen Date: Mon, 15 Dec 2008 14:52:52 -0500 Subject: Minor edits in associative array sections. --- doc/SystemTap_Beginners_Guide/en-US/Array-Operations.xml | 8 ++++---- doc/SystemTap_Beginners_Guide/en-US/Arrays.xml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'doc/SystemTap_Beginners_Guide/en-US') diff --git a/doc/SystemTap_Beginners_Guide/en-US/Array-Operations.xml b/doc/SystemTap_Beginners_Guide/en-US/Array-Operations.xml index bf496321..00a8673c 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Array-Operations.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Array-Operations.xml @@ -505,7 +505,7 @@ probe timer.s(3) } -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 script to only process the first ten elements in the array (i.e. 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 (i.e. print the first 10, starting with the highest value).
@@ -665,7 +665,7 @@ probe vfs.read probe timer.s(3) { printf("=======\n") - foreach (count in reads+) + foreach (count in reads-) printf("%s : %d \n", count, reads[count]) delete reads } @@ -673,7 +673,7 @@ probe timer.s(3) probe end { printf("TOTALS\n") - foreach (total in totalreads+) + foreach (total in totalreads-) printf("%s : %d \n", total, totalreads[total]) } @@ -788,7 +788,7 @@ probe timer.s(3) -if([index_expression] in array_name) +if([index_expression] in array_name) statement To illustrate this, consider the following example: diff --git a/doc/SystemTap_Beginners_Guide/en-US/Arrays.xml b/doc/SystemTap_Beginners_Guide/en-US/Arrays.xml index ac320fcd..3d3dec01 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Arrays.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Arrays.xml @@ -161,7 +161,7 @@ foo["harry"] = 25 -You can specify up to 5 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 uses 5 elements for the key: process ID, executable name, user ID, parent ID, and string "W". It associates the value of devname with that key. +You can specify up to 5 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 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 -- cgit From b3234491c1bf5e845a16f33f6f2c4dffd2bf6a77 Mon Sep 17 00:00:00 2001 From: William Cohen Date: Mon, 15 Dec 2008 16:14:05 -0500 Subject: Minor editing for example scripts. --- .../en-US/Useful_Scripts-inodewatch.xml | 11 +++++++---- .../en-US/Useful_Scripts-sockettrace.xml | 2 +- .../en-US/Useful_Scripts-traceio2.xml | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) (limited to 'doc/SystemTap_Beginners_Guide/en-US') diff --git a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-inodewatch.xml b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-inodewatch.xml index 098524ae..47cc4e16 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-inodewatch.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-inodewatch.xml @@ -59,7 +59,8 @@ no script in examples need to add references to sources/man pages that explain how "dev_nr = $file->f_dentry->d_inode->i_sb->s_dev" and "($1 << 20 | $2)". - takes the following information about the file as an argument: + takes the following information about the +file as arguments on the command line: script examples file device number (integer format) @@ -81,7 +82,9 @@ no script in examples - The file's device number, in integer format. When this is passed to the script as the first argument, be sure to replace any 0 with a space. + The file's major device number. + + The file's minor device number. The file's inode number. @@ -121,9 +124,9 @@ no script in examples examples of SystemTap scripts -805 is the device number, while 1078319 is the inode number. To start monitoring /etc/crontab, run stap inodewatch.stp 8 5 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. contains the output of stap inodewatch.stp 8 5 1078319 (when cat /etc/crontab is executed while the script is running) : +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. contains the output of stap inodewatch.stp 0x8 0x05 1078319 (when cat /etc/crontab is executed while the script is running) : diff --git a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-sockettrace.xml b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-sockettrace.xml index 9a9e1c55..6e913b48 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-sockettrace.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-sockettrace.xml @@ -51,7 +51,7 @@ socket-trace.stp - + diff --git a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio2.xml b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio2.xml index 4fc7ecc2..7451de98 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio2.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Useful_Scripts-traceio2.xml @@ -50,7 +50,7 @@ - traceio2-simple.stp + traceio2.stp -- cgit From b1a80a41d336daa1501f56f73558806f15231f3c Mon Sep 17 00:00:00 2001 From: William Cohen Date: Mon, 15 Dec 2008 16:28:41 -0500 Subject: Minor edits error chapter. --- doc/SystemTap_Beginners_Guide/en-US/Errors.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'doc/SystemTap_Beginners_Guide/en-US') diff --git a/doc/SystemTap_Beginners_Guide/en-US/Errors.xml b/doc/SystemTap_Beginners_Guide/en-US/Errors.xml index 910ff510..62e89580 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Errors.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Errors.xml @@ -101,7 +101,7 @@ replicate? - The following invalid SystemTap script is missing the its probe + The following invalid SystemTap script is missing its probe handlers: @@ -473,8 +473,9 @@ probe syscall.open foo refers to. This usually means that SystemTap could not find a match for foo in the - tapset library. The N refers to the column - the error occurred in. + tapset library. The N refers to the + line and column of + the error. how to explain N in previous? "The divergence from the “tree” of probe point namespace is at position N (starting with zero at left)." (from tutorial) -- cgit From 70be2c5b7a1ae10d23bb092a04031a119136aa47 Mon Sep 17 00:00:00 2001 From: ddomingo Date: Tue, 16 Dec 2008 12:06:35 +1000 Subject: corrected index entries as per wcohen --- doc/SystemTap_Beginners_Guide/en-US/Scripts.xml | 100 ++++++++++++------------ 1 file changed, 50 insertions(+), 50 deletions(-) (limited to 'doc/SystemTap_Beginners_Guide/en-US') diff --git a/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml b/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml index bb71625e..88aa42ab 100644 --- a/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml +++ b/doc/SystemTap_Beginners_Guide/en-US/Scripts.xml @@ -581,7 +581,7 @@ probe begin exit() - Handlers + functions SystemTap scripts continue to run until the @@ -732,20 +732,20 @@ hald(2360) open functions - handler functions - tid() + tid() + - handler functions - Handlers - tid() + functions + tid() + tid() - Handlers - handler functions + functions + The ID of the current thread. @@ -757,20 +757,20 @@ hald(2360) open functions - handler functions - uid() + + uid() - + uid() - Handlers - handler functions + functions + The ID of the current user. @@ -781,20 +781,20 @@ hald(2360) open functions - handler functions - cpu() + + cpu() - + cpu() - Handlers - handler functions + functions + The current CPU number. @@ -805,20 +805,20 @@ hald(2360) open functions - handler functions - gettimeofday_s() + + gettimeofday_s() - + gettimeofday_s() - Handlers - handler functions + functions + The number of seconds since UNIX epoch (January 1, 1970). @@ -830,20 +830,20 @@ hald(2360) open functions - handler functions - ctime() + + ctime() - + ctime() - Handlers - handler functions + functions + Convert number of seconds since UNIX epoch to date. @@ -865,20 +865,20 @@ hald(2360) open functions - handler functions - pp() + + pp() - + pp() - Handlers - handler functions + functions + A string describing the probe point currently being handled. @@ -897,20 +897,20 @@ hald(2360) open functions - handler functions - thread_indent() + + thread_indent() - + thread_indent() - Handlers - handler functions + functions + This particular function is quite useful, providing you with a way @@ -1047,20 +1047,20 @@ probe kernel.function("*@net/socket.c").return functions - handler functions - target() + + target() - + target() - Handlers - handler functions + functions + Used in conjunction with stap -- cgit