summaryrefslogtreecommitdiffstats
path: root/runtime/docs/html/test4_2dtr_8c-source.html
diff options
context:
space:
mode:
authorhunt <hunt>2005-03-29 18:07:58 +0000
committerhunt <hunt>2005-03-29 18:07:58 +0000
commite32551b18f4560056d2d482f5e1505b1b98fa82a (patch)
tree4e9e07a9b46a4fd5dea27732571cbb04c0ef5dee /runtime/docs/html/test4_2dtr_8c-source.html
parent13b35bb112459702e7371ecc89d7deb789818a86 (diff)
downloadsystemtap-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.html245
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&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
+<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
<div class="nav">
<a class="el" href="dir_000000.html">probes</a>&nbsp;/&nbsp;<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&lt;&lt;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 &lt;hunt@redhat.com&gt;"</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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;stats.count, st-&gt;stats.sum,
-00086 st-&gt;stats.min, st-&gt;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-&gt;stats.count, st-&gt;stats.sum,
-00092 st-&gt;stats.min, st-&gt;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 &lt;linux/module.h&gt;</span>
+00005 <span class="preprocessor">#include &lt;linux/interrupt.h&gt;</span>
+00006 <span class="preprocessor">#include &lt;net/sock.h&gt;</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 &lt;hunt@redhat.com&gt;"</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-&gt;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-&gt;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-&gt;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 (&amp;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-&gt;str);
+00115
+00116 foreach (opens, ptr)
+00117 dlog ("opens[%s] = %lld\n", key1str(ptr), ptr-&gt;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-&gt;stats.count, st-&gt;stats.sum, st-&gt;stats.min, st-&gt;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-&gt;stats.count, st-&gt;stats.sum, st-&gt;stats.min, st-&gt;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>