diff options
author | hunt <hunt> | 2005-03-29 18:07:58 +0000 |
---|---|---|
committer | hunt <hunt> | 2005-03-29 18:07:58 +0000 |
commit | e32551b18f4560056d2d482f5e1505b1b98fa82a (patch) | |
tree | 4e9e07a9b46a4fd5dea27732571cbb04c0ef5dee /runtime/docs/html/test4_2dtr_8c-source.html | |
parent | 13b35bb112459702e7371ecc89d7deb789818a86 (diff) | |
download | systemtap-steved-e32551b18f4560056d2d482f5e1505b1b98fa82a.tar.gz systemtap-steved-e32551b18f4560056d2d482f5e1505b1b98fa82a.tar.xz systemtap-steved-e32551b18f4560056d2d482f5e1505b1b98fa82a.zip |
*** empty log message ***
Diffstat (limited to 'runtime/docs/html/test4_2dtr_8c-source.html')
-rw-r--r-- | runtime/docs/html/test4_2dtr_8c-source.html | 245 |
1 files changed, 139 insertions, 106 deletions
diff --git a/runtime/docs/html/test4_2dtr_8c-source.html b/runtime/docs/html/test4_2dtr_8c-source.html index 47241e71..2847b88a 100644 --- a/runtime/docs/html/test4_2dtr_8c-source.html +++ b/runtime/docs/html/test4_2dtr_8c-source.html @@ -4,114 +4,147 @@ <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="annotated.html">Data Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related Pages</a></div> +<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Data Fields</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">#include "runtime.h"</span> -00006 <span class="preprocessor">#include "<a class="code" href="io_8c.html">io.c</a>"</span> -00007 <span class="preprocessor">#include "<a class="code" href="map_8c.html">map.c</a>"</span> -00008 <span class="preprocessor">#include "<a class="code" href="probes_8c.html">probes.c</a>"</span> -00009 -00010 MODULE_DESCRIPTION(<span class="stringliteral">"SystemTap probe: test4"</span>); -00011 MODULE_AUTHOR(<span class="stringliteral">"Martin Hunt <hunt@redhat.com>"</span>); -00012 -00013 <a class="code" href="structmap__root.html">MAP</a> opens, reads, writes; -00014 -00015 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) -00016 { -00017 <a class="code" href="map_8c.html#a13">_stp_map_key_str</a> (opens, current->comm); -00018 <a class="code" href="map_8c.html#a18">_stp_map_add_int64</a> (opens, 1); -00019 jprobe_return(); -00020 <span class="keywordflow">return</span> 0; -00021 } -00022 -00023 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) -00024 { -00025 <a class="code" href="map_8c.html#a13">_stp_map_key_str</a> (reads, current->comm); -00026 <a class="code" href="map_8c.html#a24">_stp_map_stat_add</a> (reads, count); -00027 jprobe_return(); -00028 <span class="keywordflow">return</span> 0; -00029 } -00030 -00031 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) -00032 { -00033 <a class="code" href="map_8c.html#a13">_stp_map_key_str</a> (writes, current->comm); -00034 <a class="code" href="map_8c.html#a24">_stp_map_stat_add</a> (writes, count); -00035 jprobe_return(); -00036 <span class="keywordflow">return</span> 0; -00037 } -00038 -00039 <span class="keyword">static</span> <span class="keyword">struct </span>jprobe dtr_probes[] = { -00040 { -00041 .kp.addr = (kprobe_opcode_t *)<span class="stringliteral">"sys_open"</span>, -00042 .entry = (kprobe_opcode_t *) inst_sys_open -00043 }, -00044 { -00045 .kp.addr = (kprobe_opcode_t *)<span class="stringliteral">"sys_read"</span>, -00046 .entry = (kprobe_opcode_t *) inst_sys_read -00047 }, -00048 { -00049 .kp.addr = (kprobe_opcode_t *)<span class="stringliteral">"sys_write"</span>, -00050 .entry = (kprobe_opcode_t *) inst_sys_write -00051 }, -00052 }; -00053 -00054 <span class="preprocessor">#define MAX_DTR_ROUTINE (sizeof(dtr_probes)/sizeof(struct jprobe))</span> -00055 <span class="preprocessor"></span> -00056 <span class="keyword">static</span> <span class="keywordtype">int</span> init_dtr(<span class="keywordtype">void</span>) -00057 { -00058 <span class="keywordtype">int</span> ret; -00059 -00060 opens = <a class="code" href="map_8c.html#a3">_stp_map_new</a> (1000, INT64); -00061 reads = <a class="code" href="map_8c.html#a3">_stp_map_new</a> (1000, STAT); -00062 writes = <a class="code" href="map_8c.html#a3">_stp_map_new</a> (1000, STAT); -00063 -00064 ret = <a class="code" href="probes_8c.html#a2">_stp_register_jprobes</a> (dtr_probes, MAX_DTR_ROUTINE); -00065 -00066 <a class="code" href="io_8c.html#a4">dlog</a>(<span class="stringliteral">"instrumentation is enabled...\n"</span>); -00067 <span class="keywordflow">return</span> ret; -00068 -00069 } -00070 -00071 <span class="keyword">static</span> <span class="keywordtype">void</span> cleanup_dtr(<span class="keywordtype">void</span>) -00072 { -00073 <span class="keyword">struct </span><a class="code" href="structmap__node__stat.html">map_node_stat</a> *st; -00074 <span class="keyword">struct </span><a class="code" href="structmap__node__int64.html">map_node_int64</a> *ptr; -00075 -00076 <a class="code" href="probes_8c.html#a1">_stp_unregister_jprobes</a> (dtr_probes, MAX_DTR_ROUTINE); -00077 -00078 <span class="keywordflow">for</span> (ptr = (<span class="keyword">struct</span> <a class="code" href="structmap__node__int64.html">map_node_int64</a> *)<a class="code" href="map_8c.html#a6">_stp_map_start</a>(opens); ptr; -00079 ptr = (<span class="keyword">struct</span> <a class="code" href="structmap__node__int64.html">map_node_int64</a> *)_stp_map_iter (opens,(<span class="keyword">struct</span> <a class="code" href="structmap__node.html">map_node</a> *)ptr)) -00080 dlog ("opens[%s] = %lld\n", key1str(ptr), ptr->val); -00081 dlog ("\n"); -00082 -00083 for (st = (struct <a class="code" href="structmap__node__stat.html">map_node_stat</a> *)_stp_map_start(reads); st; -00084 st = (struct <a class="code" href="structmap__node__stat.html">map_node_stat</a> *)_stp_map_iter (reads,(struct <a class="code" href="structmap__node.html">map_node</a> *)st)) -00085 dlog ("reads[%s] = [count=%lld sum=%lld min=%lld max=%lld]\n", key1str(st), st->stats.count, st->stats.sum, -00086 st->stats.min, st->stats.max); -00087 dlog ("\n"); -00088 -00089 for (st = (struct <a class="code" href="structmap__node__stat.html">map_node_stat</a> *)_stp_map_start(writes); st; -00090 st = (struct <a class="code" href="structmap__node__stat.html">map_node_stat</a> *)_stp_map_iter (writes,(struct <a class="code" href="structmap__node.html">map_node</a> *)st)) -00091 dlog ("writes[%s] = [count=%lld sum=%lld min=%lld max=%lld]\n", key1str(st), st->stats.count, st->stats.sum, -00092 st->stats.min, st->stats.max); -00093 dlog ("\n"); -00094 -00095 _stp_map_del (opens); -00096 _stp_map_del (reads); -00097 _stp_map_del (writes); -00098 -00099 dlog("EXIT\n"); -00100 } -00101 -00102 module_init(init_dtr); -00103 module_exit(cleanup_dtr); -00104 MODULE_LICENSE("GPL"); -00105 -</pre></div><hr size="1"><address style="align: right;"><small> -Generated on Tue Mar 22 10:27:36 2005 for SystemTap.</small></body> -</html> +00004 <span class="preprocessor">#include <linux/module.h></span> +00005 <span class="preprocessor">#include <linux/interrupt.h></span> +00006 <span class="preprocessor">#include <net/sock.h></span> +00007 +00008 <span class="preprocessor">#include "<a class="code" href="runtime_8h.html">runtime.h</a>"</span> +00009 <span class="preprocessor">#include "<a class="code" href="io_8c.html">io.c</a>"</span> +00010 <span class="preprocessor">#include "<a class="code" href="map_8c.html">map.c</a>"</span> +00011 <span class="preprocessor">#include "<a class="code" href="probes_8c.html">probes.c</a>"</span> +00012 <span class="preprocessor">#include "<a class="code" href="stack_8c.html">stack.c</a>"</span> +00013 +00014 MODULE_DESCRIPTION(<span class="stringliteral">"SystemTap probe: test4"</span>); +00015 MODULE_AUTHOR(<span class="stringliteral">"Martin Hunt <hunt@redhat.com>"</span>); +00016 +00017 <span class="keyword">static</span> <span class="keywordtype">char</span> tbuffer[2][50000]; +00018 <span class="keyword">static</span> <span class="keywordtype">void</span> stp_helper(<span class="keywordtype">void</span> *); +00019 <span class="keyword">static</span> DECLARE_WORK(stp_work, stp_helper, tbuffer); +00020 +00021 <a class="code" href="structmap__root.html">MAP</a> opens, reads, writes, traces; +00022 <span class="keyword">static</span> <span class="keywordtype">int</span> bufcount = 0; +00023 +00024 <span class="keyword">static</span> <span class="keywordtype">void</span> stp_helper (<span class="keywordtype">void</span> *data) +00025 { +00026 <a class="code" href="group__io.html#ga0">dlog</a> (<span class="stringliteral">"HELPER\n"</span>); +00027 } +00028 +00029 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) +00030 { +00031 <a class="code" href="group__maps.html#ga12">_stp_map_key_str</a> (opens, current->comm); +00032 <a class="code" href="group__maps.html#ga17">_stp_map_add_int64</a> (opens, 1); +00033 jprobe_return(); +00034 <span class="keywordflow">return</span> 0; +00035 } +00036 +00037 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) +00038 { +00039 <a class="code" href="group__maps.html#ga12">_stp_map_key_str</a> (reads, current->comm); +00040 <a class="code" href="group__maps.html#ga23">_stp_map_stat_add</a> (reads, count); +00041 jprobe_return(); +00042 <span class="keywordflow">return</span> 0; +00043 } +00044 +00045 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) +00046 { +00047 <a class="code" href="group__maps.html#ga12">_stp_map_key_str</a> (writes, current->comm); +00048 <a class="code" href="group__maps.html#ga23">_stp_map_stat_add</a> (writes, count); +00049 jprobe_return(); +00050 <span class="keywordflow">return</span> 0; +00051 } +00052 +00053 <span class="keywordtype">int</span> inst_show_cpuinfo(<span class="keyword">struct</span> seq_file *m, <span class="keywordtype">void</span> *v) +00054 { +00055 _stp_stack_print (0,0); +00056 _stp_stack_print (1,0); +00057 +00058 <a class="code" href="group__scbuf.html#ga4">_stp_scbuf_clear</a>(); +00059 <a class="code" href="group__lists.html#ga5">_stp_list_add</a> (traces, _stp_stack_sprint(0,0)); +00060 <span class="keywordflow">if</span> (bufcount++ == 0) +00061 schedule_work (&stp_work); +00062 +00063 jprobe_return(); +00064 return 0; +00065 } +00066 +00067 +00068 static struct jprobe dtr_probes[] = { +00069 { +00070 .kp.addr = (kprobe_opcode_t *)<span class="stringliteral">"sys_open"</span>, +00071 .entry = (kprobe_opcode_t *) inst_sys_open +00072 }, +00073 { +00074 .kp.addr = (kprobe_opcode_t *)<span class="stringliteral">"sys_read"</span>, +00075 .entry = (kprobe_opcode_t *) inst_sys_read +00076 }, +00077 { +00078 .kp.addr = (kprobe_opcode_t *)<span class="stringliteral">"sys_write"</span>, +00079 .entry = (kprobe_opcode_t *) inst_sys_write +00080 }, +00081 { +00082 .kp.addr = (kprobe_opcode_t *)<span class="stringliteral">"show_cpuinfo"</span>, +00083 .entry = (kprobe_opcode_t *) inst_show_cpuinfo, +00084 }, +00085 }; +00086 +00087 <span class="preprocessor">#define MAX_DTR_ROUTINE (sizeof(dtr_probes)/sizeof(struct jprobe))</span> +00088 <span class="preprocessor"></span> +00089 <span class="keyword">static</span> <span class="keywordtype">int</span> init_dtr(<span class="keywordtype">void</span>) +00090 { +00091 <span class="keywordtype">int</span> ret; +00092 +00093 opens = <a class="code" href="group__maps.html#ga2">_stp_map_new</a> (1000, INT64); +00094 reads = <a class="code" href="group__maps.html#ga2">_stp_map_new</a> (1000, STAT); +00095 writes = <a class="code" href="group__maps.html#ga2">_stp_map_new</a> (1000, STAT); +00096 traces = <a class="code" href="group__lists.html#ga0">_stp_list_new</a> (1000, STRING); +00097 +00098 ret = <a class="code" href="probes_8c.html#a2">_stp_register_jprobes</a> (dtr_probes, MAX_DTR_ROUTINE); +00099 +00100 <a class="code" href="group__io.html#ga0">dlog</a>(<span class="stringliteral">"instrumentation is enabled...\n"</span>); +00101 <span class="keywordflow">return</span> ret; +00102 +00103 } +00104 +00105 <span class="keyword">static</span> <span class="keywordtype">void</span> cleanup_dtr(<span class="keywordtype">void</span>) +00106 { +00107 <span class="keyword">struct </span><a class="code" href="structmap__node__stat.html">map_node_stat</a> *st; +00108 <span class="keyword">struct </span><a class="code" href="structmap__node__int64.html">map_node_int64</a> *ptr; +00109 <span class="keyword">struct </span><a class="code" href="structmap__node__str.html">map_node_str</a> *sptr; +00110 +00111 <a class="code" href="probes_8c.html#a1">_stp_unregister_jprobes</a> (dtr_probes, MAX_DTR_ROUTINE); +00112 +00113 <a class="code" href="group__maps.html#ga31">foreach</a> (traces, sptr) +00114 dlog ("trace: %s\n", sptr->str); +00115 +00116 foreach (opens, ptr) +00117 dlog ("opens[%s] = %lld\n", key1str(ptr), ptr->val); +00118 dlog ("\n"); +00119 +00120 foreach (reads, st) +00121 dlog ("reads[%s] = [count=%lld sum=%lld min=%lld max=%lld]\n", key1str(st), +00122 st->stats.count, st->stats.sum, st->stats.min, st->stats.max); +00123 dlog ("\n"); +00124 +00125 foreach (writes, st) +00126 dlog ("writes[%s] = [count=%lld sum=%lld min=%lld max=%lld]\n", key1str(st), +00127 st->stats.count, st->stats.sum, st->stats.min, st->stats.max); +00128 dlog ("\n"); +00129 +00130 _stp_map_del (opens); +00131 _stp_map_del (reads); +00132 _stp_map_del (writes); +00133 +00134 dlog("EXIT\n"); +00135 } +00136 +00137 module_init(init_dtr); +00138 module_exit(cleanup_dtr); +00139 MODULE_LICENSE("GPL"); +00140 +</pre></div></body></html> |