diff options
Diffstat (limited to 'runtime/docs/html/test4_2dtr_8c-source.html')
-rw-r--r-- | runtime/docs/html/test4_2dtr_8c-source.html | 152 |
1 files changed, 0 insertions, 152 deletions
diff --git a/runtime/docs/html/test4_2dtr_8c-source.html b/runtime/docs/html/test4_2dtr_8c-source.html deleted file mode 100644 index c3d65197..00000000 --- a/runtime/docs/html/test4_2dtr_8c-source.html +++ /dev/null @@ -1,152 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> -<title>SystemTap: probes/test4/dtr.c Source File</title> -<link href="doxygen.css" rel="stylesheet" type="text/css"> -</head><body> -<!-- Generated by Doxygen 1.4.1 --> -<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related Pages</a></div> -<div class="nav"> -<a class="el" href="dir_000000.html">probes</a> / <a class="el" href="dir_000003.html">test4</a></div> -<h1>dtr.c</h1><div class="fragment"><pre class="fragment">00001 <span class="preprocessor">#define HASH_TABLE_BITS 8</span> -00002 <span class="preprocessor"></span><span class="preprocessor">#define HASH_TABLE_SIZE (1<<HASH_TABLE_BITS)</span> -00003 <span class="preprocessor"></span><span class="preprocessor">#define BUCKETS 16 </span><span class="comment">/* largest histogram width */</span> -00004 -00005 <span class="preprocessor">#define STP_NETLINK_ONLY</span> -00006 <span class="preprocessor"></span><span class="preprocessor">#define STP_NUM_STRINGS 1</span> -00007 <span class="preprocessor"></span> -00008 <span class="preprocessor">#include <linux/module.h></span> -00009 <span class="preprocessor">#include <linux/interrupt.h></span> -00010 <span class="preprocessor">#include <net/sock.h></span> -00011 <span class="preprocessor">#include <linux/netlink.h></span> -00012 -00013 <span class="preprocessor">#include "<a class="code" href="runtime_8h.html">runtime.h</a>"</span> -00014 <span class="preprocessor">#include "<a class="code" href="map_8c.html">map.c</a>"</span> -00015 <span class="preprocessor">#include "<a class="code" href="probes_8c.html">probes.c</a>"</span> -00016 <span class="preprocessor">#include "<a class="code" href="stack_8c.html">stack.c</a>"</span> -00017 -00018 MODULE_DESCRIPTION(<span class="stringliteral">"SystemTap probe: test4"</span>); -00019 MODULE_AUTHOR(<span class="stringliteral">"Martin Hunt <hunt@redhat.com>"</span>); -00020 -00021 -00022 <a class="code" href="group__maps.html#ga1">MAP</a> opens, reads, writes, traces; -00023 -00024 asmlinkage <span class="keywordtype">long</span> inst_sys_open (<span class="keyword">const</span> <span class="keywordtype">char</span> __user * filename, <span class="keywordtype">int</span> flags, <span class="keywordtype">int</span> mode) -00025 { -00026 <a class="code" href="group__maps.html#ga12">_stp_map_key_str</a> (opens, current->comm); -00027 <a class="code" href="group__maps.html#ga17">_stp_map_add_int64</a> (opens, 1); -00028 jprobe_return(); -00029 <span class="keywordflow">return</span> 0; -00030 } -00031 -00032 asmlinkage ssize_t inst_sys_read (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> fd, <span class="keywordtype">char</span> __user * buf, size_t count) -00033 { -00034 <a class="code" href="group__maps.html#ga12">_stp_map_key_str</a> (reads, current->comm); -00035 <a class="code" href="group__maps.html#ga24">_stp_map_stat_add</a> (reads, count); -00036 jprobe_return(); -00037 <span class="keywordflow">return</span> 0; -00038 } -00039 -00040 asmlinkage ssize_t inst_sys_write (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> fd, <span class="keyword">const</span> <span class="keywordtype">char</span> __user * buf, size_t count) -00041 { -00042 <a class="code" href="group__maps.html#ga12">_stp_map_key_str</a> (writes, current->comm); -00043 <a class="code" href="group__maps.html#ga24">_stp_map_stat_add</a> (writes, count); -00044 jprobe_return(); -00045 <span class="keywordflow">return</span> 0; -00046 } -00047 -00048 <span class="keywordtype">int</span> inst_show_cpuinfo(<span class="keyword">struct</span> seq_file *m, <span class="keywordtype">void</span> *v) -00049 { -00050 String str = <a class="code" href="group__string.html#ga2">_stp_string_init</a> (0); -00051 <a class="code" href="group__stack.html#ga6">_stp_stack_print</a> (0,0); -00052 <a class="code" href="group__stack.html#ga6">_stp_stack_print</a> (1,0); -00053 <a class="code" href="group__lists.html#ga6">_stp_list_add</a> (traces, <a class="code" href="group__stack.html#ga7">_stp_stack_sprint</a>(str, 0, 0)); -00054 -00055 jprobe_return(); -00056 <span class="keywordflow">return</span> 0; -00057 } -00058 -00059 -00060 <span class="keyword">static</span> <span class="keyword">struct </span>jprobe dtr_probes[] = { -00061 { -00062 .kp.addr = (kprobe_opcode_t *)<span class="stringliteral">"sys_open"</span>, -00063 .entry = (kprobe_opcode_t *) inst_sys_open -00064 }, -00065 { -00066 .kp.addr = (kprobe_opcode_t *)<span class="stringliteral">"sys_read"</span>, -00067 .entry = (kprobe_opcode_t *) inst_sys_read -00068 }, -00069 { -00070 .kp.addr = (kprobe_opcode_t *)<span class="stringliteral">"sys_write"</span>, -00071 .entry = (kprobe_opcode_t *) inst_sys_write -00072 }, -00073 { -00074 .kp.addr = (kprobe_opcode_t *)<span class="stringliteral">"show_cpuinfo"</span>, -00075 .entry = (kprobe_opcode_t *) inst_show_cpuinfo, -00076 }, -00077 }; -00078 -00079 <span class="preprocessor">#define MAX_DTR_ROUTINE (sizeof(dtr_probes)/sizeof(struct jprobe))</span> -00080 <span class="preprocessor"></span> -00081 <span class="keyword">static</span> <span class="keywordtype">int</span> init_dtr(<span class="keywordtype">void</span>) -00082 { -00083 <span class="keywordtype">int</span> ret; -00084 -00085 <span class="keywordflow">if</span> (<a class="code" href="group__io.html#ga7">_stp_netlink_open</a>() < 0) -00086 return -1; -00087 -00088 opens = _stp_map_new (1000, INT64); -00089 reads = _stp_map_new (1000, STAT); -00090 writes = _stp_map_new (1000, STAT); -00091 traces = _stp_list_new (1000, STRING); -00092 -00093 ret = _stp_register_jprobes (dtr_probes, MAX_DTR_ROUTINE); -00094 -00095 _stp_log("instrumentation is enabled...\n"); -00096 return ret; -00097 } -00098 -00099 static <span class="keywordtype">void</span> probe_exit (<span class="keywordtype">void</span>) -00100 { -00101 <span class="keyword">struct </span>map_node_stat *st; -00102 <span class="keyword">struct </span>map_node_int64 *ptr; -00103 <span class="keyword">struct </span>map_node_str *sptr; -00104 -00105 <a class="code" href="probes_8c.html#a2">_stp_unregister_jprobes</a> (dtr_probes, MAX_DTR_ROUTINE); -00106 -00107 <a class="code" href="group__maps.html#ga32">foreach</a> (traces, sptr) { -00108 <a class="code" href="group__print.html#ga3">_stp_printf</a> (<span class="stringliteral">"trace: %s\n"</span>, sptr->str); -00109 <a class="code" href="group__print.html#ga2">_stp_print_flush</a> (); -00110 } -00111 -00112 <a class="code" href="group__maps.html#ga32">foreach</a> (opens, ptr) { -00113 <a class="code" href="group__print.html#ga3">_stp_printf</a> (<span class="stringliteral">"opens[%s] = %lld\n"</span>, <a class="code" href="group__maps.html#ga25">key1str</a>(ptr), ptr->val); -00114 <a class="code" href="group__print.html#ga2">_stp_print_flush</a> (); -00115 } -00116 -00117 <a class="code" href="group__maps.html#ga32">foreach</a> (reads, st) { -00118 <a class="code" href="group__print.html#ga3">_stp_printf</a> (<span class="stringliteral">"reads[%s] = [count=%lld sum=%lld min=%lld max=%lld]\n"</span>, <a class="code" href="group__maps.html#ga25">key1str</a>(st), -00119 st->stats.count, st->stats.sum, st->stats.min, st->stats.max); -00120 <a class="code" href="group__print.html#ga2">_stp_print_flush</a> (); -00121 } -00122 -00123 <a class="code" href="group__maps.html#ga32">foreach</a> (writes, st) { -00124 <a class="code" href="group__print.html#ga3">_stp_printf</a> (<span class="stringliteral">"writes[%s] = [count=%lld sum=%lld min=%lld max=%lld]\n"</span>, <a class="code" href="group__maps.html#ga25">key1str</a>(st), -00125 st->stats.count, st->stats.sum, st->stats.min, st->stats.max); -00126 <a class="code" href="group__print.html#ga2">_stp_print_flush</a>(); -00127 } -00128 -00129 <a class="code" href="group__maps.html#ga7">_stp_map_del</a> (opens); -00130 <a class="code" href="group__maps.html#ga7">_stp_map_del</a> (reads); -00131 <a class="code" href="group__maps.html#ga7">_stp_map_del</a> (writes); -00132 } -00133 -00134 <span class="keyword">static</span> <span class="keywordtype">void</span> cleanup_dtr(<span class="keywordtype">void</span>) -00135 { -00136 <a class="code" href="group__io.html#ga8">_stp_netlink_close</a>(); -00137 } -00138 -00139 module_init(init_dtr); -00140 module_exit(cleanup_dtr); -00141 MODULE_LICENSE(<span class="stringliteral">"GPL"</span>); -00142 -</pre></div></body></html> |