shell bypass 403

GrazzMean Shell

: /usr/share/doc/libtraceevent-doc/ [ drwxr-xr-x ]
Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 18.225.98.134
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : libtraceevent-filter.html
<?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 8.6.10" />
<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 overriden 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_filter_alloc, tep_filter_free, tep_filter_reset, tep_filter_make_string, tep_filter_copy, tep_filter_compare, tep_filter_match, tep_event_filtered, tep_filter_remove_event, tep_filter_strerror, tep_filter_add_filter_str -
   Event filter related APIs.
</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 &lt;event-parse.h&gt;</strong>

struct tep_event_filter *<strong>tep_filter_alloc</strong>(struct tep_handle *<em>tep</em>);
void <strong>tep_filter_free</strong>(struct tep_event_filter *<em>filter</em>);
void <strong>tep_filter_reset</strong>(struct tep_event_filter *<em>filter</em>);
enum tep_errno <strong>tep_filter_add_filter_str</strong>(struct tep_event_filter *<em>filter</em>, const char *<em>filter_str</em>);
int <strong>tep_event_filtered</strong>(struct tep_event_filter *<em>filter</em>, int <em>event_id</em>);
int <strong>tep_filter_remove_event</strong>(struct tep_event_filter *<em>filter</em>, int <em>event_id</em>);
enum tep_errno <strong>tep_filter_match</strong>(struct tep_event_filter *<em>filter</em>, struct tep_record *<em>record</em>);
int <strong>tep_filter_copy</strong>(struct tep_event_filter *<em>dest</em>, struct tep_event_filter *<em>source</em>);
int <strong>tep_filter_compare</strong>(struct tep_event_filter *<em>filter1</em>, struct tep_event_filter *<em>filter2</em>);
char *<strong>tep_filter_make_string</strong>(struct tep_event_filter *<em>filter</em>, int <em>event_id</em>);
int <strong>tep_filter_strerror</strong>(struct tep_event_filter *<em>filter</em>, enum tep_errno <em>err</em>, char *buf, size_t <em>buflen</em>);</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p>Filters can be attached to traced events. They can be used to filter out various
events when outputting them. Each event can be filtered based on its parameters,
described in the event&#8217;s format file. This set of functions can be used to
create, delete, modify and attach event filters.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_alloc()</strong> function creates a new event filter. The <em>tep</em> argument
is the trace event parser context.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_free()</strong> function frees an event filter and all resources that it
had used.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_reset()</strong> function removes all rules from an event filter and
resets it.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_add_filter_str()</strong> function adds a new rule to the <em>filter</em>. The
<em>filter_str</em> argument is the filter string, that contains the rule.</p></div>
<div class="paragraph"><p>The <strong>tep_event_filtered()</strong> function checks if the event with <em>event_id</em> has
<em>filter</em>.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_remove_event()</strong> function removes a <em>filter</em> for an event with
<em>event_id</em>.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_match()</strong> function tests if a <em>record</em> matches given <em>filter</em>.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_copy()</strong> function copies a <em>source</em> filter into a <em>dest</em> filter.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_compare()</strong> function compares two filers - <em>filter1</em> and <em>filter2</em>.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_make_string()</strong> function constructs a string, displaying
the <em>filter</em> contents for given <em>event_id</em>.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_strerror()</strong> function copies the <em>filter</em> error buffer into the
given <em>buf</em> with the size <em>buflen</em>. If the error buffer is empty, in the <em>buf</em>
is copied a string, describing the error <em>err</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_filter_alloc()</strong> function returns a pointer to the newly created event
filter, or NULL in case of an error.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_add_filter_str()</strong> function returns 0 if the rule was
successfully added or a negative error code.  Use <strong>tep_filter_strerror()</strong> to see
actual error message in case of an error.</p></div>
<div class="paragraph"><p>The <strong>tep_event_filtered()</strong> function returns 1 if the filter is found for given
event, or 0 otherwise.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_remove_event()</strong> function returns 1 if the vent was removed, or
0 if the event was not found.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_match()</strong> function returns <em>tep_errno</em>, according to the result:</p></div>
<div class="verseblock">
<pre class="content"><em>TEP_ERRNO__FILTER_MATCH</em>        - filter found for event, the record matches.
<em>TEP_ERRNO__FILTER_MISS</em>         - filter found for event, the record does not match.
<em>TEP_ERRNO__FILTER_NOT_FOUND</em>    - no filter found for record&#8217;s event.
<em>TEP_ERRNO__NO_FILTER</em>           - no rules in the filter.</pre>
<div class="attribution">
</div></div>
<div class="paragraph"><p>or any other <em>tep_errno</em>, if an error occurred during the test.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_copy()</strong> function returns 0 on success or -1 if not all rules
 were copied.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_compare()</strong> function returns 1 if the two filters hold the same
content, or 0 if they do not.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_make_string()</strong> function returns a string, which must be freed
with free(), or NULL in case of an error.</p></div>
<div class="paragraph"><p>The <strong>tep_filter_strerror()</strong> function returns 0 if message was filled
successfully, 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="font-weight: bold"><span style="color: #000080">#include</span></span> <span style="color: #FF0000">&lt;event-parse.h&gt;</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="font-weight: bold"><span style="color: #000000">tep_alloc</span></span><span style="color: #990000">();</span>
<span style="color: #990000">...</span>
<span style="color: #009900">char</span> errstr<span style="color: #990000">[</span><span style="color: #993399">200</span><span style="color: #990000">];</span>
<span style="color: #009900">int</span> ret<span style="color: #990000">;</span>

<span style="font-weight: bold"><span style="color: #0000FF">struct</span></span> <span style="color: #008080">tep_event_filter</span> <span style="color: #990000">*</span>filter <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">tep_filter_alloc</span></span><span style="color: #990000">(</span>tep<span style="color: #990000">);</span>
<span style="font-weight: bold"><span style="color: #0000FF">struct</span></span> <span style="color: #008080">tep_event_filter</span> <span style="color: #990000">*</span>filter1 <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">tep_filter_alloc</span></span><span style="color: #990000">(</span>tep<span style="color: #990000">);</span>
ret <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">tep_filter_add_filter_str</span></span><span style="color: #990000">(</span>filter<span style="color: #990000">,</span> <span style="color: #FF0000">"sched/sched_wakeup:target_cpu==1"</span><span style="color: #990000">);</span>
<span style="font-weight: bold"><span style="color: #0000FF">if</span></span><span style="color: #990000">(</span>ret <span style="color: #990000">&lt;</span> <span style="color: #993399">0</span><span style="color: #990000">)</span> <span style="color: #FF0000">{</span>
        <span style="font-weight: bold"><span style="color: #000000">tep_filter_strerror</span></span><span style="color: #990000">(</span>filter<span style="color: #990000">,</span> ret<span style="color: #990000">,</span> errstr<span style="color: #990000">,</span> <span style="font-weight: bold"><span style="color: #0000FF">sizeof</span></span><span style="color: #990000">(</span>errstr<span style="color: #990000">));</span>
        <span style="font-style: italic"><span style="color: #9A1900">/* Failed to add a new rule to the filter, the error string is in errstr */</span></span>
<span style="color: #FF0000">}</span>
<span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="color: #990000">(</span><span style="font-weight: bold"><span style="color: #000000">tep_filter_copy</span></span><span style="color: #990000">(</span>filter1<span style="color: #990000">,</span> filter<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>
        <span style="font-style: italic"><span style="color: #9A1900">/* Failed to copy filter in filter1 */</span></span>
<span style="color: #FF0000">}</span>
<span style="color: #990000">...</span>
<span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="color: #990000">(</span><span style="font-weight: bold"><span style="color: #000000">tep_filter_compare</span></span><span style="color: #990000">(</span>filter<span style="color: #990000">,</span> filter1<span style="color: #990000">)</span> <span style="color: #990000">!=</span> <span style="color: #993399">1</span><span style="color: #990000">)</span> <span style="color: #FF0000">{</span>
        <span style="font-style: italic"><span style="color: #9A1900">/* Both filters are different */</span></span>
<span style="color: #FF0000">}</span>
<span style="color: #990000">...</span>
<span style="color: #009900">void</span> <span style="font-weight: bold"><span style="color: #000000">process_record</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="font-weight: bold"><span style="color: #0000FF">struct</span></span> <span style="color: #008080">tep_record</span> <span style="color: #990000">*</span>record<span style="color: #990000">)</span>
<span style="color: #FF0000">{</span>
        <span style="font-weight: bold"><span style="color: #0000FF">struct</span></span> <span style="color: #008080">tep_event</span> <span style="color: #990000">*</span>event<span style="color: #990000">;</span>
        <span style="color: #009900">char</span> <span style="color: #990000">*</span>fstring<span style="color: #990000">;</span>

        event <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">tep_find_event_by_record</span></span><span style="color: #990000">(</span>tep<span style="color: #990000">,</span> record<span style="color: #990000">);</span>

        <span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="color: #990000">(</span><span style="font-weight: bold"><span style="color: #000000">tep_event_filtered</span></span><span style="color: #990000">(</span>filter<span style="color: #990000">,</span> event<span style="color: #990000">-&gt;</span>id<span style="color: #990000">)</span> <span style="color: #990000">==</span> <span style="color: #993399">1</span><span style="color: #990000">)</span> <span style="color: #FF0000">{</span>
                <span style="font-style: italic"><span style="color: #9A1900">/* The event has filter */</span></span>
                fstring <span style="color: #990000">=</span> <span style="font-weight: bold"><span style="color: #000000">tep_filter_make_string</span></span><span style="color: #990000">(</span>filter<span style="color: #990000">,</span> event<span style="color: #990000">-&gt;</span>id<span style="color: #990000">);</span>
                <span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="color: #990000">(</span>fstring <span style="color: #990000">!=</span> NULL<span style="color: #990000">)</span> <span style="color: #FF0000">{</span>
                        <span style="font-style: italic"><span style="color: #9A1900">/* The filter for the event is in fstring */</span></span>
                        <span style="font-weight: bold"><span style="color: #000000">free</span></span><span style="color: #990000">(</span>fstring<span style="color: #990000">);</span>
                <span style="color: #FF0000">}</span>
        <span style="color: #FF0000">}</span>

        <span style="font-weight: bold"><span style="color: #0000FF">switch</span></span> <span style="color: #990000">(</span><span style="font-weight: bold"><span style="color: #000000">tep_filter_match</span></span><span style="color: #990000">(</span>filter<span style="color: #990000">,</span> record<span style="color: #990000">))</span> <span style="color: #FF0000">{</span>
        <span style="font-weight: bold"><span style="color: #0000FF">case</span></span> TEP_ERRNO__FILTER_MATCH<span style="color: #990000">:</span>
                <span style="font-style: italic"><span style="color: #9A1900">/* The filter matches the record */</span></span>
                <span style="font-weight: bold"><span style="color: #0000FF">break</span></span><span style="color: #990000">;</span>
        <span style="font-weight: bold"><span style="color: #0000FF">case</span></span> TEP_ERRNO__FILTER_MISS<span style="color: #990000">:</span>
                <span style="font-style: italic"><span style="color: #9A1900">/* The filter does not match the record */</span></span>
                <span style="font-weight: bold"><span style="color: #0000FF">break</span></span><span style="color: #990000">;</span>
        <span style="font-weight: bold"><span style="color: #0000FF">case</span></span> TEP_ERRNO__FILTER_NOT_FOUND<span style="color: #990000">:</span>
                <span style="font-style: italic"><span style="color: #9A1900">/* No filter found for record's event */</span></span>
                <span style="font-weight: bold"><span style="color: #0000FF">break</span></span><span style="color: #990000">;</span>
        <span style="font-weight: bold"><span style="color: #0000FF">case</span></span> TEP_ERRNO__NO_FILTER<span style="color: #990000">:</span>
                <span style="font-style: italic"><span style="color: #9A1900">/* There are no rules in the filter */</span></span>
                <span style="font-weight: bold"><span style="color: #0000FF">break</span></span>
<span style="font-weight: bold"><span style="color: #008080">        default:</span></span>
                <span style="font-style: italic"><span style="color: #9A1900">/* An error occurred during the test */</span></span>
                <span style="font-weight: bold"><span style="color: #0000FF">break</span></span><span style="color: #990000">;</span>
        <span style="color: #FF0000">}</span>

        <span style="font-weight: bold"><span style="color: #0000FF">if</span></span> <span style="color: #990000">(</span><span style="font-weight: bold"><span style="color: #000000">tep_filter_remove_event</span></span><span style="color: #990000">(</span>filter<span style="color: #990000">,</span> event<span style="color: #990000">-&gt;</span>id<span style="color: #990000">)</span> <span style="color: #990000">==</span> <span style="color: #993399">1</span><span style="color: #990000">)</span> <span style="color: #FF0000">{</span>
                <span style="font-style: italic"><span style="color: #9A1900">/* The event was removed from the filter */</span></span>
        <span style="color: #FF0000">}</span>
<span style="color: #FF0000">}</span>

<span style="color: #990000">...</span>
<span style="font-weight: bold"><span style="color: #000000">tep_filter_reset</span></span><span style="color: #990000">(</span>filter<span style="color: #990000">);</span>
<span style="color: #990000">...</span>
<span style="font-weight: bold"><span style="color: #000000">tep_filter_free</span></span><span style="color: #990000">(</span>filter<span style="color: #990000">);</span>
<span style="font-weight: bold"><span style="color: #000000">tep_filter_free</span></span><span style="color: #990000">(</span>filter1<span style="color: #990000">);</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)</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> &lt;<a href="mailto:rostedt@goodmis.org">rostedt@goodmis.org</a>&gt;, author of <strong>libtraceevent</strong>.
<strong>Tzvetomir Stoyanov</strong> &lt;<a href="mailto:tz.stoyanov@gmail.com">tz.stoyanov@gmail.com</a>&gt;, author of this man page.</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  &lt;<a href="mailto:linux-trace-devel@vger.kernel.org">linux-trace-devel@vger.kernel.org</a>&gt;</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>
© 2025 GrazzMean