Mister Spy Say ="Hello Kids ... :D"
___ ____ _ _____
| \/ (_) | | / ___|
| . . |_ ___| |_ ___ _ __ \ `--. _ __ _ _
| |\/| | / __| __/ _ \ '__| `--. \ '_ \| | | |
| | | | \__ \ || __/ | /\__/ / |_) | |_| |
\_| |_/_|___/\__\___|_| \____/| .__/ \__, |
| | __/ |
|_| |___/
Bot Mister Spy V3
Mister Spy
Mister Spy
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 9.1.0" />
<title>libtraceevent(3)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
/* Default font. */
body {
font-family: Georgia,serif;
}
/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
font-family: Arial,Helvetica,sans-serif;
}
body {
margin: 1em 5% 1em 5%;
}
a {
color: blue;
text-decoration: underline;
}
a:visited {
color: fuchsia;
}
em {
font-style: italic;
color: navy;
}
strong {
font-weight: bold;
color: #083194;
}
h1, h2, h3, h4, h5, h6 {
color: #527bbd;
margin-top: 1.2em;
margin-bottom: 0.5em;
line-height: 1.3;
}
h1, h2, h3 {
border-bottom: 2px solid silver;
}
h2 {
padding-top: 0.5em;
}
h3 {
float: left;
}
h3 + * {
clear: left;
}
h5 {
font-size: 1.0em;
}
div.sectionbody {
margin-left: 0;
}
hr {
border: 1px solid silver;
}
p {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
ul, ol, li > p {
margin-top: 0;
}
ul > li { color: #aaa; }
ul > li > * { color: black; }
.monospaced, code, pre {
font-family: "Courier New", Courier, monospace;
font-size: inherit;
color: navy;
padding: 0;
margin: 0;
}
pre {
white-space: pre-wrap;
}
#author {
color: #527bbd;
font-weight: bold;
font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}
#footer {
font-size: small;
border-top: 2px solid silver;
padding-top: 0.5em;
margin-top: 4.0em;
}
#footer-text {
float: left;
padding-bottom: 0.5em;
}
#footer-badges {
float: right;
padding-bottom: 0.5em;
}
#preamble {
margin-top: 1.5em;
margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
margin-top: 1.0em;
margin-bottom: 1.5em;
}
div.admonitionblock {
margin-top: 2.0em;
margin-bottom: 2.0em;
margin-right: 10%;
color: #606060;
}
div.content { /* Block element content. */
padding: 0;
}
/* Block element titles. */
div.title, caption.title {
color: #527bbd;
font-weight: bold;
text-align: left;
margin-top: 1.0em;
margin-bottom: 0.5em;
}
div.title + * {
margin-top: 0;
}
td div.title:first-child {
margin-top: 0.0em;
}
div.content div.title:first-child {
margin-top: 0.0em;
}
div.content + div.title {
margin-top: 0.0em;
}
div.sidebarblock > div.content {
background: #ffffee;
border: 1px solid #dddddd;
border-left: 4px solid #f0f0f0;
padding: 0.5em;
}
div.listingblock > div.content {
border: 1px solid #dddddd;
border-left: 5px solid #f0f0f0;
background: #f8f8f8;
padding: 0.5em;
}
div.quoteblock, div.verseblock {
padding-left: 1.0em;
margin-left: 1.0em;
margin-right: 10%;
border-left: 5px solid #f0f0f0;
color: #888;
}
div.quoteblock > div.attribution {
padding-top: 0.5em;
text-align: right;
}
div.verseblock > pre.content {
font-family: inherit;
font-size: inherit;
}
div.verseblock > div.attribution {
padding-top: 0.75em;
text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
text-align: left;
}
div.admonitionblock .icon {
vertical-align: top;
font-size: 1.1em;
font-weight: bold;
text-decoration: underline;
color: #527bbd;
padding-right: 0.5em;
}
div.admonitionblock td.content {
padding-left: 0.5em;
border-left: 3px solid #dddddd;
}
div.exampleblock > div.content {
border-left: 3px solid #dddddd;
padding-left: 0.5em;
}
div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }
dl {
margin-top: 0.8em;
margin-bottom: 0.8em;
}
dt {
margin-top: 0.5em;
margin-bottom: 0;
font-style: normal;
color: navy;
}
dd > *:first-child {
margin-top: 0.1em;
}
ul, ol {
list-style-position: outside;
}
ol.arabic {
list-style-type: decimal;
}
ol.loweralpha {
list-style-type: lower-alpha;
}
ol.upperalpha {
list-style-type: upper-alpha;
}
ol.lowerroman {
list-style-type: lower-roman;
}
ol.upperroman {
list-style-type: upper-roman;
}
div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
margin-top: 0.1em;
margin-bottom: 0.1em;
}
tfoot {
font-weight: bold;
}
td > div.verse {
white-space: pre;
}
div.hdlist {
margin-top: 0.8em;
margin-bottom: 0.8em;
}
div.hdlist tr {
padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
font-weight: bold;
}
td.hdlist1 {
vertical-align: top;
font-style: normal;
padding-right: 0.8em;
color: navy;
}
td.hdlist2 {
vertical-align: top;
}
div.hdlist.compact tr {
margin: 0;
padding-bottom: 0;
}
.comment {
background: yellow;
}
.footnote, .footnoteref {
font-size: 0.8em;
}
span.footnote, span.footnoteref {
vertical-align: super;
}
#footnotes {
margin: 20px 0 20px 0;
padding: 7px 0 0 0;
}
#footnotes div.footnote {
margin: 0 0 5px 0;
}
#footnotes hr {
border: none;
border-top: 1px solid silver;
height: 1px;
text-align: left;
margin-left: 0;
width: 20%;
min-width: 100px;
}
div.colist td {
padding-right: 0.5em;
padding-bottom: 0.3em;
vertical-align: top;
}
div.colist td img {
margin-top: 0.3em;
}
@media print {
#footer-badges { display: none; }
}
#toc {
margin-bottom: 2.5em;
}
#toctitle {
color: #527bbd;
font-size: 1.1em;
font-weight: bold;
margin-top: 1.0em;
margin-bottom: 0.1em;
}
div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
margin-top: 0;
margin-bottom: 0;
}
div.toclevel2 {
margin-left: 2em;
font-size: 0.9em;
}
div.toclevel3 {
margin-left: 4em;
font-size: 0.9em;
}
div.toclevel4 {
margin-left: 6em;
font-size: 0.9em;
}
span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }
span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }
span.big { font-size: 2em; }
span.small { font-size: 0.6em; }
span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }
div.unbreakable { page-break-inside: avoid; }
/*
* xhtml11 specific
*
* */
div.tableblock {
margin-top: 1.0em;
margin-bottom: 1.5em;
}
div.tableblock > table {
border: 3px solid #527bbd;
}
thead, p.table.header {
font-weight: bold;
color: #527bbd;
}
p.table {
margin-top: 0;
}
/* Because the table frame attribute is overridden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
border-style: none;
}
div.tableblock > table[frame="hsides"] {
border-left-style: none;
border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
border-top-style: none;
border-bottom-style: none;
}
/*
* html5 specific
*
* */
table.tableblock {
margin-top: 1.0em;
margin-bottom: 1.5em;
}
thead, p.tableblock.header {
font-weight: bold;
color: #527bbd;
}
p.tableblock {
margin-top: 0;
}
table.tableblock {
border-width: 3px;
border-spacing: 0px;
border-style: solid;
border-color: #527bbd;
border-collapse: collapse;
}
th.tableblock, td.tableblock {
border-width: 1px;
padding: 4px;
border-style: solid;
border-color: #527bbd;
}
table.tableblock.frame-topbot {
border-left-style: hidden;
border-right-style: hidden;
}
table.tableblock.frame-sides {
border-top-style: hidden;
border-bottom-style: hidden;
}
table.tableblock.frame-none {
border-style: hidden;
}
th.tableblock.halign-left, td.tableblock.halign-left {
text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
text-align: right;
}
th.tableblock.valign-top, td.tableblock.valign-top {
vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
vertical-align: bottom;
}
/*
* manpage specific
*
* */
body.manpage h1 {
padding-top: 0.5em;
padding-bottom: 0.5em;
border-top: 2px solid silver;
border-bottom: 2px solid silver;
}
body.manpage h2 {
border-style: none;
}
body.manpage div.sectionbody {
margin-left: 3em;
}
@media print {
body.manpage div#toc { display: none; }
}
</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = { // Namespace.
/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////
/* Author: Mihai Bazon, September 2002
* http://students.infoiasi.ro/~mishoo
*
* Table Of Content generator
* Version: 0.4
*
* Feel free to use this script under the terms of the GNU General Public
* License, as long as you do not remove or alter this notice.
*/
/* modified by Troy D. Hanson, September 2006. License: GPL */
/* modified by Stuart Rackham, 2006, 2009. License: GPL */
// toclevels = 1..4.
toc: function (toclevels) {
function getText(el) {
var text = "";
for (var i = el.firstChild; i != null; i = i.nextSibling) {
if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
text += i.data;
else if (i.firstChild != null)
text += getText(i);
}
return text;
}
function TocEntry(el, text, toclevel) {
this.element = el;
this.text = text;
this.toclevel = toclevel;
}
function tocEntries(el, toclevels) {
var result = new Array;
var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
// Function that scans the DOM tree for header elements (the DOM2
// nodeIterator API would be a better technique but not supported by all
// browsers).
var iterate = function (el) {
for (var i = el.firstChild; i != null; i = i.nextSibling) {
if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
var mo = re.exec(i.tagName);
if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
}
iterate(i);
}
}
}
iterate(el);
return result;
}
var toc = document.getElementById("toc");
if (!toc) {
return;
}
// Delete existing TOC entries in case we're reloading the TOC.
var tocEntriesToRemove = [];
var i;
for (i = 0; i < toc.childNodes.length; i++) {
var entry = toc.childNodes[i];
if (entry.nodeName.toLowerCase() == 'div'
&& entry.getAttribute("class")
&& entry.getAttribute("class").match(/^toclevel/))
tocEntriesToRemove.push(entry);
}
for (i = 0; i < tocEntriesToRemove.length; i++) {
toc.removeChild(tocEntriesToRemove[i]);
}
// Rebuild TOC entries.
var entries = tocEntries(document.getElementById("content"), toclevels);
for (var i = 0; i < entries.length; ++i) {
var entry = entries[i];
if (entry.element.id == "")
entry.element.id = "_toc_" + i;
var a = document.createElement("a");
a.href = "#" + entry.element.id;
a.appendChild(document.createTextNode(entry.text));
var div = document.createElement("div");
div.appendChild(a);
div.className = "toclevel" + entry.toclevel;
toc.appendChild(div);
}
if (entries.length == 0)
toc.parentNode.removeChild(toc);
},
/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////
/* Based on footnote generation code from:
* http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
*/
footnotes: function () {
// Delete existing footnote entries in case we're reloading the footnodes.
var i;
var noteholder = document.getElementById("footnotes");
if (!noteholder) {
return;
}
var entriesToRemove = [];
for (i = 0; i < noteholder.childNodes.length; i++) {
var entry = noteholder.childNodes[i];
if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
entriesToRemove.push(entry);
}
for (i = 0; i < entriesToRemove.length; i++) {
noteholder.removeChild(entriesToRemove[i]);
}
// Rebuild footnote entries.
var cont = document.getElementById("content");
var spans = cont.getElementsByTagName("span");
var refs = {};
var n = 0;
for (i=0; i<spans.length; i++) {
if (spans[i].className == "footnote") {
n++;
var note = spans[i].getAttribute("data-note");
if (!note) {
// Use [\s\S] in place of . so multi-line matches work.
// Because JavaScript has no s (dotall) regex flag.
note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
spans[i].innerHTML =
"[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
"' title='View footnote' class='footnote'>" + n + "</a>]";
spans[i].setAttribute("data-note", note);
}
noteholder.innerHTML +=
"<div class='footnote' id='_footnote_" + n + "'>" +
"<a href='#_footnoteref_" + n + "' title='Return to text'>" +
n + "</a>. " + note + "</div>";
var id =spans[i].getAttribute("id");
if (id != null) refs["#"+id] = n;
}
}
if (n == 0)
noteholder.parentNode.removeChild(noteholder);
else {
// Process footnoterefs.
for (i=0; i<spans.length; i++) {
if (spans[i].className == "footnoteref") {
var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
href = href.match(/#.*/)[0]; // Because IE return full URL.
n = refs[href];
spans[i].innerHTML =
"[<a href='#_footnote_" + n +
"' title='View footnote' class='footnote'>" + n + "</a>]";
}
}
}
},
install: function(toclevels) {
var timerId;
function reinstall() {
asciidoc.footnotes();
if (toclevels) {
asciidoc.toc(toclevels);
}
}
function reinstallAndRemoveTimer() {
clearInterval(timerId);
reinstall();
}
timerId = setInterval(reinstall, 500);
if (document.addEventListener)
document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
else
window.onload = reinstallAndRemoveTimer;
}
}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
libtraceevent(3) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>tep_parse_saved_cmdlines, tep_parse_printk_formats, tep_parse_kallsyms -
Parsing functions to load mappings
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><strong>#include <event-parse.h></strong>
int <strong>tep_parse_saved_cmdlines</strong>(struct tep_handle *<em>tep</em>, const char *<em>buf</em>);
int <strong>tep_parse_printk_formats</strong>(struct tep_handle *<em>tep</em>, const char *<em>buf</em>);
int <strong>tep_parse_kallsyms</strong>(struct tep_handle *<em>tep</em>, const char *<em>buf</em>);</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p><strong>tep_parse_saved_cmdlines()</strong> is a helper function to parse content in the tracefs
file system of the "saved_cmdlines" file (stored in a string buffer passed in by <em>buf</em>)
and loads the mapping of the process IDs (pid) to the comm names in the
<em>tep</em> handler. The events store the pid and this is used to be able to show the
process names associated to those process ids. It parses the string <em>buf</em> that
holds the content of saved_cmdlines and ends with a nul character (<em>\0</em>).</p></div>
<div class="paragraph"><p><strong>tep_parse_printk_formats()</strong> is a helper function to parse content in the tracefs
file system of the "printk_formats" file (stored in a string buffer passed in by <em>buf</em>)
and loads the mapping of addresses of strings that may be referenced by events.
Events only store the address of constant strings in the kernel, and the mapping
of their address to the string is exported to user space in the printk_formats
file. It parses the string <em>buf</em> that holds the content of printk_formats and
ends with a nul character (<em>\0</em>).</p></div>
<div class="paragraph"><p><strong>tep_parse_kallsyms()</strong> is a helper function to parse the Linux kernel /proc/kallsyms format
(stored in a string buffer passed in by <em>buf</em>) and load the functions into the
<em>tep</em> handler such that function IP addresses can be mapped to their name when
parsing events with %pS in the print format field. It parses the string <em>buf</em> that
holds the content of /proc/kallsyms and ends with a nul character (<em>\0</em>).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_return_value">RETURN VALUE</h2>
<div class="sectionbody">
<div class="paragraph"><p>The <strong>tep_parse_saved_cmdlines</strong>() function returns 0 in case of success, or -1
in case of an error.</p></div>
<div class="paragraph"><p>The <strong>tep_parse_printk_formats</strong>() function returns 0 in case of success, or -1
in case of an error.</p></div>
<div class="paragraph"><p>The <strong>tep_parse_kallsyms</strong>() function returns 0 in case of success, or -1
in case of an error.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_example">EXAMPLE</h2>
<div class="sectionbody">
<div class="listingblock">
<div class="content"><!-- Generator: GNU source-highlight
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><span style="color: #990000">...</span>
<span style="font-weight: bold"><span style="color: #000080">#include</span></span> <span style="color: #FF0000"><event-parse.h></span>
<span style="font-weight: bold"><span style="color: #000080">#include</span></span> <span style="color: #FF0000"><tracefs.h></span>
<span style="font-weight: bold"><span style="color: #000080">#include</span></span> <span style="color: #FF0000"><stdlib.h></span>
<span style="color: #009900">int</span> <span style="font-weight: bold"><span style="color: #000000">load_cmdlines</span></span><span style="color: #990000">(</span><span style="font-weight: bold"><span style="color: #0000FF">struct</span></span> <span style="color: #008080">tep_handle</span> <span style="color: #990000">*</span>tep<span style="color: #990000">)</span>
<span style="color: #FF0000">{</span>
<span style="color: #009900">char</span> <span style="color: #990000">*</span>buf <span style="color: #990000">=</span> NULL<span style="color: #990000">;</span>
<span style="color: #009900">int</span> r<span style="color: #990000">;</span>
buf <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">tracefs_instance_file_read</span></span><span style="color: #990000">(</span>NULL<span style="color: #990000">,</span> <span style="color: #FF0000">"saved_cmdlines"</span><span style="color: #990000">,</span> NULL<span style="color: #990000">);</span>
<span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="color: #990000">(!</span>buf<span style="color: #990000">)</span>
<span style="font-weight: bold"><span style="color: #0000FF">return</span></span> <span style="color: #990000">-</span><span style="color: #993399">1</span><span style="color: #990000">;</span>
r <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">tep_parse_saved_cmdlines</span></span><span style="color: #990000">(</span>tep<span style="color: #990000">,</span> buf<span style="color: #990000">);</span>
<span style="font-weight: bold"><span style="color: #000000">free</span></span><span style="color: #990000">(</span>buf<span style="color: #990000">);</span>
<span style="font-weight: bold"><span style="color: #0000FF">return</span></span> r<span style="color: #990000">;</span>
<span style="color: #FF0000">}</span>
<span style="color: #009900">int</span> <span style="font-weight: bold"><span style="color: #000000">load_print_strings</span></span><span style="color: #990000">(</span><span style="font-weight: bold"><span style="color: #0000FF">struct</span></span> <span style="color: #008080">tep_handle</span> <span style="color: #990000">*</span>tep<span style="color: #990000">)</span>
<span style="color: #FF0000">{</span>
<span style="color: #009900">char</span> <span style="color: #990000">*</span>buf <span style="color: #990000">=</span> NULL<span style="color: #990000">;</span>
<span style="color: #009900">int</span> r<span style="color: #990000">;</span>
buf <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">tracefs_instance_file_read</span></span><span style="color: #990000">(</span>NULL<span style="color: #990000">,</span> <span style="color: #FF0000">"printk_formats"</span><span style="color: #990000">,</span> NULL<span style="color: #990000">);</span>
<span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="color: #990000">(!</span>buf<span style="color: #990000">)</span>
<span style="font-weight: bold"><span style="color: #0000FF">return</span></span> <span style="color: #990000">-</span><span style="color: #993399">1</span><span style="color: #990000">;</span>
r <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">tep_parse_printk_formats</span></span><span style="color: #990000">(</span>tep<span style="color: #990000">,</span> buf<span style="color: #990000">);</span>
<span style="font-weight: bold"><span style="color: #000000">free</span></span><span style="color: #990000">(</span>buf<span style="color: #990000">);</span>
<span style="font-weight: bold"><span style="color: #0000FF">return</span></span> r<span style="color: #990000">;</span>
<span style="color: #FF0000">}</span>
<span style="color: #009900">int</span> <span style="font-weight: bold"><span style="color: #000000">load_kallsyms</span></span><span style="color: #990000">(</span><span style="font-weight: bold"><span style="color: #0000FF">struct</span></span> <span style="color: #008080">tep_handle</span> <span style="color: #990000">*</span>tep<span style="color: #990000">)</span>
<span style="color: #FF0000">{</span>
<span style="color: #009900">char</span> <span style="color: #990000">*</span>line <span style="color: #990000">=</span> NULL<span style="color: #990000">;</span>
<span style="color: #009900">char</span> <span style="color: #990000">*</span>buf <span style="color: #990000">=</span> NULL<span style="color: #990000">;</span>
<span style="color: #008080">size_t</span> sz <span style="color: #990000">=</span> <span style="color: #993399">0</span><span style="color: #990000">;</span>
<span style="color: #008080">FILE</span> <span style="color: #990000">*</span>fp<span style="color: #990000">;</span>
<span style="color: #009900">int</span> len <span style="color: #990000">=</span> <span style="color: #993399">0</span><span style="color: #990000">;</span>
<span style="color: #009900">int</span> r<span style="color: #990000">;</span>
fp <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">fopen</span></span><span style="color: #990000">(</span><span style="color: #FF0000">"/proc/kallsyms"</span><span style="color: #990000">,</span> <span style="color: #FF0000">"r"</span><span style="color: #990000">);</span>
<span style="font-weight: bold"><span style="color: #0000FF">while</span></span> <span style="color: #990000">((</span>r <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">getline</span></span><span style="color: #990000">(&</span>line<span style="color: #990000">,</span> <span style="color: #990000">&</span>sz<span style="color: #990000">,</span> fp<span style="color: #990000">))</span> <span style="color: #990000">>=</span> <span style="color: #993399">0</span><span style="color: #990000">)</span> <span style="color: #FF0000">{</span>
buf <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">realloc</span></span><span style="color: #990000">(</span>buf<span style="color: #990000">,</span> len <span style="color: #990000">+</span> r <span style="color: #990000">+</span> <span style="color: #993399">1</span><span style="color: #990000">);</span>
<span style="font-weight: bold"><span style="color: #000000">memcpy</span></span><span style="color: #990000">(</span>buf <span style="color: #990000">+</span> len<span style="color: #990000">,</span> line<span style="color: #990000">,</span> r<span style="color: #990000">);</span>
len <span style="color: #990000">+=</span> r<span style="color: #990000">;</span>
<span style="color: #FF0000">}</span>
<span style="font-weight: bold"><span style="color: #000000">free</span></span><span style="color: #990000">(</span>line<span style="color: #990000">);</span>
<span style="font-weight: bold"><span style="color: #000000">fclose</span></span><span style="color: #990000">(</span>fp<span style="color: #990000">);</span>
<span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="color: #990000">(!</span>buf<span style="color: #990000">)</span>
<span style="font-weight: bold"><span style="color: #0000FF">return</span></span> <span style="color: #990000">-</span><span style="color: #993399">1</span><span style="color: #990000">;</span>
buf<span style="color: #990000">[</span>len<span style="color: #990000">]</span> <span style="color: #990000">=</span> <span style="color: #993399">0</span><span style="color: #990000">;</span>
r <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">tep_parse_kallsyms</span></span><span style="color: #990000">(</span>tep<span style="color: #990000">,</span> buf<span style="color: #990000">);</span>
<span style="font-weight: bold"><span style="color: #000000">free</span></span><span style="color: #990000">(</span>buf<span style="color: #990000">);</span>
<span style="font-weight: bold"><span style="color: #0000FF">return</span></span> r<span style="color: #990000">;</span>
<span style="color: #FF0000">}</span>
<span style="color: #990000">...</span></tt></pre></div></div>
</div>
</div>
<div class="sect1">
<h2 id="_files">FILES</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><strong>event-parse.h</strong>
Header file to include in order to have access to the library APIs.
<strong>-ltraceevent</strong>
Linker switch to add when building a program that uses the library.</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph"><p><strong>libtraceevent</strong>(3), <strong>trace-cmd</strong>(1), <strong>tep_register_comm</strong>(3), <strong>tep_register_function</strong>(3),
<strong>tep_register_print_string</strong>(3)</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_author">AUTHOR</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><strong>Steven Rostedt</strong> <<a href="mailto:rostedt@goodmis.org">rostedt@goodmis.org</a>>, author of <strong>libtraceevent</strong>.
<strong>Tzvetomir Stoyanov</strong> <<a href="mailto:tz.stoyanov@gmail.com">tz.stoyanov@gmail.com</a>>, coauthor of <strong>libtraceevent</strong>.</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_reporting_bugs">REPORTING BUGS</h2>
<div class="sectionbody">
<div class="paragraph"><p>Report bugs to <<a href="mailto:linux-trace-devel@vger.kernel.org">linux-trace-devel@vger.kernel.org</a>></p></div>
</div>
</div>
<div class="sect1">
<h2 id="_license">LICENSE</h2>
<div class="sectionbody">
<div class="paragraph"><p>libtraceevent is Free Software licensed under the GNU LGPL 2.1</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_resources">RESOURCES</h2>
<div class="sectionbody">
<div class="paragraph"><p><a href="https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/">https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/</a></p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
2022-03-24 23:40:51 UTC
</div>
</div>
</body>
</html>
Mr. DellatioNx196 GaLers xh3LL Backd00r 1.0, Coded By Mr. DellatioNx196 - Bogor BlackHat