summaryrefslogtreecommitdiffstats
path: root/runtime/docs/html/stp__tasklet_8c-source.html
blob: 16fdfdf797970d14d40864145f927d5958d50825 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<!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/tasklet/stp_tasklet.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&nbsp;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&nbsp;List</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_000002.html">tasklet</a></div>
<h1>stp_tasklet.c</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">/* Framework for putting a jprobe in a tasklet. */</span>
00002 <span class="comment">/* Useful for testing probes in interrupt context. */</span>
00003 <span class="comment">/* Doesn't do anything useful as is.  Put test code in the inst func */</span>
00004 
00005 <span class="preprocessor">#define HASH_TABLE_BITS 8</span>
00006 <span class="preprocessor"></span><span class="preprocessor">#define HASH_TABLE_SIZE (1&lt;&lt;HASH_TABLE_BITS)</span>
00007 <span class="preprocessor"></span><span class="preprocessor">#define BUCKETS 16 </span><span class="comment">/* largest histogram width */</span>
00008 
00009 <span class="preprocessor">#define STP_NETLINK_ONLY</span>
00010 <span class="preprocessor"></span><span class="preprocessor">#define STP_NUM_STRINGS 1</span>
00011 <span class="preprocessor"></span>
00012 <span class="preprocessor">#include "<a class="code" href="runtime_8h.html">runtime.h</a>"</span>
00013 <span class="preprocessor">#include "<a class="code" href="probes_8c.html">probes.c</a>"</span>
00014 
00015 MODULE_DESCRIPTION(<span class="stringliteral">"test jprobes of tasklets"</span>);
00016 MODULE_AUTHOR(<span class="stringliteral">"Martin Hunt &lt;hunt@redhat.com&gt;"</span>);
00017 
00018 <span class="keywordtype">void</span> inst__rcu_process_callbacks(<span class="keyword">struct</span> rcu_ctrlblk *rcp,
00019                                  <span class="keyword">struct</span> rcu_state *rsp, <span class="keyword">struct</span> rcu_data *rdp)
00020 {
00021   <a class="code" href="group__io.html#ga2">_stp_log</a> (<span class="stringliteral">"interrupt=%d\n"</span>, in_interrupt());
00022   jprobe_return();
00023 }
00024 
00025 <span class="keyword">static</span> <span class="keyword">struct </span>jprobe stp_probes[] = {
00026   {
00027     .kp.addr =  (kprobe_opcode_t *)<span class="stringliteral">"__rcu_process_callbacks"</span>,
00028     .entry = (kprobe_opcode_t *) inst__rcu_process_callbacks
00029   },
00030 };
00031 <span class="preprocessor">#define MAX_STP_PROBES (sizeof(stp_probes)/sizeof(struct jprobe))</span>
00032 <span class="preprocessor"></span>
00033 
00034 <span class="keyword">static</span> <span class="keywordtype">int</span> init_stp(<span class="keywordtype">void</span>)
00035 {
00036   <span class="keywordtype">int</span> ret;
00037 
00038   <span class="keywordflow">if</span> (<a class="code" href="group__io.html#ga7">_stp_netlink_open</a>() &lt; 0)
00039     return -1;
00040   ret = _stp_register_jprobes (stp_probes, MAX_STP_PROBES);
00041   _stp_log ("instrumentation is enabled...\n");
00042   return ret;
00043 }
00044 
00045 static <span class="keywordtype">void</span> probe_exit (<span class="keywordtype">void</span>)
00046 {
00047   <a class="code" href="probes_8c.html#a2">_stp_unregister_jprobes</a> (stp_probes, MAX_STP_PROBES);
00048   <a class="code" href="group__io.html#ga2">_stp_log</a> (<span class="stringliteral">"EXIT\n"</span>);
00049 
00050 }
00051 <span class="keyword">static</span> <span class="keywordtype">void</span> cleanup_stp(<span class="keywordtype">void</span>)
00052 {
00053   <a class="code" href="group__io.html#ga8">_stp_netlink_close</a>();
00054 }
00055 
00056 module_init(init_stp);
00057 module_exit(cleanup_stp);
00058 MODULE_LICENSE(<span class="stringliteral">"GPL"</span>);
00059 
</pre></div></body></html>