<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/kernel/trace/ftrace.c, branch linux-2.6.29.y</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>tracing/function-graph-tracer: trace the idle tasks</title>
<updated>2009-02-17T18:20:17+00:00</updated>
<author>
<name>Frederic Weisbecker</name>
<email>fweisbec@gmail.com</email>
</author>
<published>2009-02-17T17:35:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=5b058bcde961bf28678a70e44c079107313543b6'/>
<id>5b058bcde961bf28678a70e44c079107313543b6</id>
<content type='text'>
When the function graph tracer is activated, it iterates over the task_list
to allocate a stack to store the return addresses.

But the per cpu idle tasks are not iterated by using
do_each_thread / while_each_thread.

So we have to iterate on them manually.

This fixes somes weirdness in the traces and many losses of traces.
Examples on two cpus:

 0)   Xorg-4287    |   2.906 us    |              }
 0)   Xorg-4287    |   3.965 us    |            }
 0)   Xorg-4287    |   5.302 us    |          }
 ------------------------------------------
 0)   Xorg-4287    =&gt;    &lt;idle&gt;-0
 ------------------------------------------

 0)    &lt;idle&gt;-0    |   2.861 us    |                        }
 0)    &lt;idle&gt;-0    |   0.526 us    |                        set_normalized_timespec();
 0)    &lt;idle&gt;-0    |   7.201 us    |                      }
 0)    &lt;idle&gt;-0    |   8.214 us    |                    }
 0)    &lt;idle&gt;-0    |               |                    clockevents_program_event() {
 0)    &lt;idle&gt;-0    |               |                      lapic_next_event() {
 0)    &lt;idle&gt;-0    |   0.510 us    |                        native_apic_mem_write();
 0)    &lt;idle&gt;-0    |   1.546 us    |                      }
 0)    &lt;idle&gt;-0    |   2.583 us    |                    }
 0)    &lt;idle&gt;-0    | + 12.435 us   |                  }
 0)    &lt;idle&gt;-0    | + 13.470 us   |                }
 0)    &lt;idle&gt;-0    |   0.608 us    |                _spin_unlock_irqrestore();
 0)    &lt;idle&gt;-0    | + 23.270 us   |              }
 0)    &lt;idle&gt;-0    | + 24.336 us   |            }
 0)    &lt;idle&gt;-0    | + 25.417 us   |          }
 0)    &lt;idle&gt;-0    |   0.593 us    |          _spin_unlock();
 0)    &lt;idle&gt;-0    | + 41.869 us   |        }
 0)    &lt;idle&gt;-0    | + 42.906 us   |      }
 0)    &lt;idle&gt;-0    | + 95.035 us   |    }
 0)    &lt;idle&gt;-0    |   0.540 us    |    menu_reflect();
 0)    &lt;idle&gt;-0    | ! 100.404 us  |  }
 0)    &lt;idle&gt;-0    |   0.564 us    |  mce_idle_callback();
 0)    &lt;idle&gt;-0    |               |  enter_idle() {
 0)    &lt;idle&gt;-0    |   0.526 us    |    mce_idle_callback();
 0)    &lt;idle&gt;-0    |   1.757 us    |  }
 0)    &lt;idle&gt;-0    |               |  cpuidle_idle_call() {
 0)    &lt;idle&gt;-0    |               |    menu_select() {
 0)    &lt;idle&gt;-0    |   0.525 us    |      pm_qos_requirement();
 0)    &lt;idle&gt;-0    |   0.518 us    |      tick_nohz_get_sleep_length();
 0)    &lt;idle&gt;-0    |   2.621 us    |    }
[...]
 1)    &lt;idle&gt;-0    |   0.518 us    |              touch_softlockup_watchdog();
 1)    &lt;idle&gt;-0    | + 14.355 us   |            }
 1)    &lt;idle&gt;-0    | + 22.840 us   |          }
 1)    &lt;idle&gt;-0    | + 25.949 us   |        }
 1)    &lt;idle&gt;-0    |               |        handle_irq() {
 1)    &lt;idle&gt;-0    |   0.511 us    |          irq_to_desc();
 1)    &lt;idle&gt;-0    |               |          handle_edge_irq() {
 1)    &lt;idle&gt;-0    |   0.638 us    |            _spin_lock();
 1)    &lt;idle&gt;-0    |               |            ack_apic_edge() {
 1)    &lt;idle&gt;-0    |   0.510 us    |              irq_to_desc();
 1)    &lt;idle&gt;-0    |               |              move_native_irq() {
 1)    &lt;idle&gt;-0    |   0.510 us    |                irq_to_desc();
 1)    &lt;idle&gt;-0    |   1.532 us    |              }
 1)    &lt;idle&gt;-0    |   0.511 us    |              native_apic_mem_write();
 ------------------------------------------
 1)    &lt;idle&gt;-0    =&gt;    cat-5073
 ------------------------------------------

 1)    cat-5073    |   3.731 us    |                    }
 1)    cat-5073    |               |                    run_local_timers() {
 1)    cat-5073    |   0.533 us    |                      hrtimer_run_queues();
 1)    cat-5073    |               |                      raise_softirq() {
 1)    cat-5073    |               |                        __raise_softirq_irqoff() {
 1)    cat-5073    |               |                          /* nr: 1 */
 1)    cat-5073    |   2.718 us    |                        }
 1)    cat-5073    |   3.814 us    |                      }

Signed-off-by: Frederic Weisbecker &lt;fweisbec@gmail.com&gt;
Cc: Steven Rostedt &lt;rostedt@goodmis.org&gt;
Cc: Arnaldo Carvalho de Melo &lt;acme@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the function graph tracer is activated, it iterates over the task_list
to allocate a stack to store the return addresses.

But the per cpu idle tasks are not iterated by using
do_each_thread / while_each_thread.

So we have to iterate on them manually.

This fixes somes weirdness in the traces and many losses of traces.
Examples on two cpus:

 0)   Xorg-4287    |   2.906 us    |              }
 0)   Xorg-4287    |   3.965 us    |            }
 0)   Xorg-4287    |   5.302 us    |          }
 ------------------------------------------
 0)   Xorg-4287    =&gt;    &lt;idle&gt;-0
 ------------------------------------------

 0)    &lt;idle&gt;-0    |   2.861 us    |                        }
 0)    &lt;idle&gt;-0    |   0.526 us    |                        set_normalized_timespec();
 0)    &lt;idle&gt;-0    |   7.201 us    |                      }
 0)    &lt;idle&gt;-0    |   8.214 us    |                    }
 0)    &lt;idle&gt;-0    |               |                    clockevents_program_event() {
 0)    &lt;idle&gt;-0    |               |                      lapic_next_event() {
 0)    &lt;idle&gt;-0    |   0.510 us    |                        native_apic_mem_write();
 0)    &lt;idle&gt;-0    |   1.546 us    |                      }
 0)    &lt;idle&gt;-0    |   2.583 us    |                    }
 0)    &lt;idle&gt;-0    | + 12.435 us   |                  }
 0)    &lt;idle&gt;-0    | + 13.470 us   |                }
 0)    &lt;idle&gt;-0    |   0.608 us    |                _spin_unlock_irqrestore();
 0)    &lt;idle&gt;-0    | + 23.270 us   |              }
 0)    &lt;idle&gt;-0    | + 24.336 us   |            }
 0)    &lt;idle&gt;-0    | + 25.417 us   |          }
 0)    &lt;idle&gt;-0    |   0.593 us    |          _spin_unlock();
 0)    &lt;idle&gt;-0    | + 41.869 us   |        }
 0)    &lt;idle&gt;-0    | + 42.906 us   |      }
 0)    &lt;idle&gt;-0    | + 95.035 us   |    }
 0)    &lt;idle&gt;-0    |   0.540 us    |    menu_reflect();
 0)    &lt;idle&gt;-0    | ! 100.404 us  |  }
 0)    &lt;idle&gt;-0    |   0.564 us    |  mce_idle_callback();
 0)    &lt;idle&gt;-0    |               |  enter_idle() {
 0)    &lt;idle&gt;-0    |   0.526 us    |    mce_idle_callback();
 0)    &lt;idle&gt;-0    |   1.757 us    |  }
 0)    &lt;idle&gt;-0    |               |  cpuidle_idle_call() {
 0)    &lt;idle&gt;-0    |               |    menu_select() {
 0)    &lt;idle&gt;-0    |   0.525 us    |      pm_qos_requirement();
 0)    &lt;idle&gt;-0    |   0.518 us    |      tick_nohz_get_sleep_length();
 0)    &lt;idle&gt;-0    |   2.621 us    |    }
[...]
 1)    &lt;idle&gt;-0    |   0.518 us    |              touch_softlockup_watchdog();
 1)    &lt;idle&gt;-0    | + 14.355 us   |            }
 1)    &lt;idle&gt;-0    | + 22.840 us   |          }
 1)    &lt;idle&gt;-0    | + 25.949 us   |        }
 1)    &lt;idle&gt;-0    |               |        handle_irq() {
 1)    &lt;idle&gt;-0    |   0.511 us    |          irq_to_desc();
 1)    &lt;idle&gt;-0    |               |          handle_edge_irq() {
 1)    &lt;idle&gt;-0    |   0.638 us    |            _spin_lock();
 1)    &lt;idle&gt;-0    |               |            ack_apic_edge() {
 1)    &lt;idle&gt;-0    |   0.510 us    |              irq_to_desc();
 1)    &lt;idle&gt;-0    |               |              move_native_irq() {
 1)    &lt;idle&gt;-0    |   0.510 us    |                irq_to_desc();
 1)    &lt;idle&gt;-0    |   1.532 us    |              }
 1)    &lt;idle&gt;-0    |   0.511 us    |              native_apic_mem_write();
 ------------------------------------------
 1)    &lt;idle&gt;-0    =&gt;    cat-5073
 ------------------------------------------

 1)    cat-5073    |   3.731 us    |                    }
 1)    cat-5073    |               |                    run_local_timers() {
 1)    cat-5073    |   0.533 us    |                      hrtimer_run_queues();
 1)    cat-5073    |               |                      raise_softirq() {
 1)    cat-5073    |               |                        __raise_softirq_irqoff() {
 1)    cat-5073    |               |                          /* nr: 1 */
 1)    cat-5073    |   2.718 us    |                        }
 1)    cat-5073    |   3.814 us    |                      }

Signed-off-by: Frederic Weisbecker &lt;fweisbec@gmail.com&gt;
Cc: Steven Rostedt &lt;rostedt@goodmis.org&gt;
Cc: Arnaldo Carvalho de Melo &lt;acme@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ftrace: do_each_pid_task() needs rcu lock</title>
<updated>2009-02-03T21:50:58+00:00</updated>
<author>
<name>Oleg Nesterov</name>
<email>oleg@redhat.com</email>
</author>
<published>2009-02-03T19:39:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=229c4ef8ae56d69f8dec64533bf1c7f8070c1a4a'/>
<id>229c4ef8ae56d69f8dec64533bf1c7f8070c1a4a</id>
<content type='text'>
"ftrace: use struct pid" commit 978f3a45d9499c7a447ca7615455cefb63d44165
converted ftrace_pid_trace to "struct pid*".

But we can't use do_each_pid_task() without rcu_read_lock() even if
we know the pid itself can't go away (it was pinned in ftrace_pid_write).
The exiting task can detach itself from this pid at any moment.

Signed-off-by: Oleg Nesterov &lt;oleg@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
"ftrace: use struct pid" commit 978f3a45d9499c7a447ca7615455cefb63d44165
converted ftrace_pid_trace to "struct pid*".

But we can't use do_each_pid_task() without rcu_read_lock() even if
we know the pid itself can't go away (it was pinned in ftrace_pid_write).
The exiting task can detach itself from this pid at any moment.

Signed-off-by: Oleg Nesterov &lt;oleg@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tracing/function-graph-tracer: fix a regression while suspend to disk</title>
<updated>2009-01-21T14:21:30+00:00</updated>
<author>
<name>Frederic Weisbecker</name>
<email>fweisbec@gmail.com</email>
</author>
<published>2009-01-14T21:33:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=00f57f545afa422db3003b0d0b30a30f8de7ecb2'/>
<id>00f57f545afa422db3003b0d0b30a30f8de7ecb2</id>
<content type='text'>
Impact: fix a crash while kernel image restore

When the function graph tracer is running and while suspend to disk, some racy
and dangerous things happen against this tracer.

The current task will save its registers including the stack pointer which
contains the return address hooked by the tracer. But the current task will
continue to enter other functions after that to save the memory, and then
it will store other return addresses, and finally loose the old depth which
matches the return address saved in the old stack (during the registers saving).

So on image restore, the code will return to wrong addresses.
And there are other things: on restore, the task will have it's "current"
pointer overwritten during registers restoring....switching from one task to
another... That would be insane to try to trace function graphs at these
stages.

This patch makes the function graph tracer listening on power events, making
it's tracing disabled for the current task (the one that performs the
hibernation work) while suspend/resume to disk, making the tracing safe
during hibernation.

Signed-off-by: Frederic Weisbecker &lt;fweisbec@gmail.com&gt;
Signed-off-by: Steven Rostedt &lt;srostedt@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Impact: fix a crash while kernel image restore

When the function graph tracer is running and while suspend to disk, some racy
and dangerous things happen against this tracer.

The current task will save its registers including the stack pointer which
contains the return address hooked by the tracer. But the current task will
continue to enter other functions after that to save the memory, and then
it will store other return addresses, and finally loose the old depth which
matches the return address saved in the old stack (during the registers saving).

So on image restore, the code will return to wrong addresses.
And there are other things: on restore, the task will have it's "current"
pointer overwritten during registers restoring....switching from one task to
another... That would be insane to try to trace function graphs at these
stages.

This patch makes the function graph tracer listening on power events, making
it's tracing disabled for the current task (the one that performs the
hibernation work) while suspend/resume to disk, making the tracing safe
during hibernation.

Signed-off-by: Frederic Weisbecker &lt;fweisbec@gmail.com&gt;
Signed-off-by: Steven Rostedt &lt;srostedt@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ftrace: add not to regex on filtering functions</title>
<updated>2008-12-18T11:57:09+00:00</updated>
<author>
<name>Steven Rostedt</name>
<email>srostedt@redhat.com</email>
</author>
<published>2008-12-17T20:05:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=ea3a6d6d60b2504c573fe3415f6617e8310c0236'/>
<id>ea3a6d6d60b2504c573fe3415f6617e8310c0236</id>
<content type='text'>
Impact: enhancement

Ingo Molnar has asked about a way to remove items from the filter
lists. Currently, you can only add or replace items. The way
items are added to the list is through opening one of the list
files (set_ftrace_filter or set_ftrace_notrace) via append.
If the file is opened for truncate, the list is cleared.

  echo spin_lock &gt; /debug/tracing/set_ftrace_filter

The above will replace the list with only spin_lock

  echo spin_lock &gt;&gt; /debug/tracing/set_ftrace_filter

The above will add spin_lock to the list.

Now this patch adds:

  echo '!spin_lock' &gt;&gt; /debug/tracing/set_ftrace_filter

This will remove spin_lock from the list.

The limited glob features of these lists also can be notted.

  echo '!spin_*' &gt;&gt; /debug/tracing/set_ftrace_filter

This will remove all functions that start with 'spin_'

Note:

  echo '!spin_*' &gt; /debug/tracing/set_ftrace_filter

will simply clear out the list (notice the '&gt;' instead of '&gt;&gt;')

Signed-off-by: Steven Rostedt &lt;srostedt@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Impact: enhancement

Ingo Molnar has asked about a way to remove items from the filter
lists. Currently, you can only add or replace items. The way
items are added to the list is through opening one of the list
files (set_ftrace_filter or set_ftrace_notrace) via append.
If the file is opened for truncate, the list is cleared.

  echo spin_lock &gt; /debug/tracing/set_ftrace_filter

The above will replace the list with only spin_lock

  echo spin_lock &gt;&gt; /debug/tracing/set_ftrace_filter

The above will add spin_lock to the list.

Now this patch adds:

  echo '!spin_lock' &gt;&gt; /debug/tracing/set_ftrace_filter

This will remove spin_lock from the list.

The limited glob features of these lists also can be notted.

  echo '!spin_*' &gt;&gt; /debug/tracing/set_ftrace_filter

This will remove all functions that start with 'spin_'

Note:

  echo '!spin_*' &gt; /debug/tracing/set_ftrace_filter

will simply clear out the list (notice the '&gt;' instead of '&gt;&gt;')

Signed-off-by: Steven Rostedt &lt;srostedt@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>tracing/function-graph-tracer: append the tracing_graph_flag</title>
<updated>2008-12-08T14:11:45+00:00</updated>
<author>
<name>Frederic Weisbecker</name>
<email>fweisbec@gmail.com</email>
</author>
<published>2008-12-06T02:43:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=380c4b1411ccd6885f92b2c8ceb08433a720f44e'/>
<id>380c4b1411ccd6885f92b2c8ceb08433a720f44e</id>
<content type='text'>
Impact: Provide a way to pause the function graph tracer

As suggested by Steven Rostedt, the previous patch that prevented from
spinlock function tracing shouldn't use the raw_spinlock to fix it.
It's much better to follow lockdep with normal spinlock, so this patch
adds a new flag for each task to make the function graph tracer able
to be paused. We also can send an ftrace_printk whithout worrying of
the irrelevant traced spinlock during insertion.

Signed-off-by: Frederic Weisbecker &lt;fweisbec@gmail.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Impact: Provide a way to pause the function graph tracer

As suggested by Steven Rostedt, the previous patch that prevented from
spinlock function tracing shouldn't use the raw_spinlock to fix it.
It's much better to follow lockdep with normal spinlock, so this patch
adds a new flag for each task to make the function graph tracer able
to be paused. We also can send an ftrace_printk whithout worrying of
the irrelevant traced spinlock during insertion.

Signed-off-by: Frederic Weisbecker &lt;fweisbec@gmail.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ftrace: use init_struct_pid as swapper pid</title>
<updated>2008-12-05T13:51:29+00:00</updated>
<author>
<name>Steven Rostedt</name>
<email>srostedt@redhat.com</email>
</author>
<published>2008-12-05T04:30:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=21bbecdaaef3a6acc19905ab88c0587817318870'/>
<id>21bbecdaaef3a6acc19905ab88c0587817318870</id>
<content type='text'>
Impact: clean up

Using (struct pid *)-1 as the pointer for ftrace_swapper_pid is
a little confusing for others. This patch uses the address of the
actual init pid structure instead. This change is only for
clarity. It does not affect the code itself. Hopefully soon the
swapper tasks will all have their own pid structure and then
we can clean up the code a bit more.

Signed-off-by: Steven Rostedt &lt;srostedt@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Impact: clean up

Using (struct pid *)-1 as the pointer for ftrace_swapper_pid is
a little confusing for others. This patch uses the address of the
actual init pid structure instead. This change is only for
clarity. It does not affect the code itself. Hopefully soon the
swapper tasks will all have their own pid structure and then
we can clean up the code a bit more.

Signed-off-by: Steven Rostedt &lt;srostedt@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ftrace: avoid duplicated function when writing set_graph_function</title>
<updated>2008-12-04T08:42:35+00:00</updated>
<author>
<name>Liming Wang</name>
<email>liming.wang@windriver.com</email>
</author>
<published>2008-12-04T06:24:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=faec2ec505d397e9426754722b6e80d519c4938f'/>
<id>faec2ec505d397e9426754722b6e80d519c4938f</id>
<content type='text'>
Impact: fix a bug in function filter setting

when writing function to set_graph_function, we should check whether it
has existed in set_graph_function to avoid duplicating.

Signed-off-by: Liming Wang &lt;liming.wang@windriver.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Impact: fix a bug in function filter setting

when writing function to set_graph_function, we should check whether it
has existed in set_graph_function to avoid duplicating.

Signed-off-by: Liming Wang &lt;liming.wang@windriver.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ftrace: add ability to only trace swapper tasks</title>
<updated>2008-12-04T08:09:38+00:00</updated>
<author>
<name>Steven Rostedt</name>
<email>srostedt@redhat.com</email>
</author>
<published>2008-12-04T05:26:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e32d89569128e76bdf84867be0928902ca9f7555'/>
<id>e32d89569128e76bdf84867be0928902ca9f7555</id>
<content type='text'>
Impact: new feature

This patch lets the swapper tasks of all CPUS be filtered by the
set_ftrace_pid file.

If '0' is echoed into this file, then all the idle tasks (aka swapper)
is flagged to be traced.  This affects all CPU idle tasks.

Signed-off-by: Steven Rostedt &lt;srostedt@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Impact: new feature

This patch lets the swapper tasks of all CPUS be filtered by the
set_ftrace_pid file.

If '0' is echoed into this file, then all the idle tasks (aka swapper)
is flagged to be traced.  This affects all CPU idle tasks.

Signed-off-by: Steven Rostedt &lt;srostedt@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ftrace: use struct pid</title>
<updated>2008-12-04T08:09:37+00:00</updated>
<author>
<name>Steven Rostedt</name>
<email>srostedt@redhat.com</email>
</author>
<published>2008-12-04T05:26:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=978f3a45d9499c7a447ca7615455cefb63d44165'/>
<id>978f3a45d9499c7a447ca7615455cefb63d44165</id>
<content type='text'>
Impact: clean up, extend PID filtering to PID namespaces

Eric Biederman suggested using the struct pid for filtering on
pids in the kernel. This patch is based off of a demonstration
of an implementation that Eric sent me in an email.

Signed-off-by: Steven Rostedt &lt;srostedt@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Impact: clean up, extend PID filtering to PID namespaces

Eric Biederman suggested using the struct pid for filtering on
pids in the kernel. This patch is based off of a demonstration
of an implementation that Eric sent me in an email.

Signed-off-by: Steven Rostedt &lt;srostedt@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ftrace: trace single pid for function graph tracer</title>
<updated>2008-12-04T08:09:36+00:00</updated>
<author>
<name>Steven Rostedt</name>
<email>srostedt@redhat.com</email>
</author>
<published>2008-12-03T20:36:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=804a685162a7080386714166776f57255a75238e'/>
<id>804a685162a7080386714166776f57255a75238e</id>
<content type='text'>
Impact: New feature

This patch makes the changes to set_ftrace_pid apply to the function
graph tracer.

  # echo $$ &gt; /debugfs/tracing/set_ftrace_pid
  # echo function_graph &gt; /debugfs/tracing/current_tracer

Will cause only the current task to be traced. Note, the trace flags are
also inherited by child processes, so the children of the shell
will also be traced.

Signed-off-by: Steven Rostedt &lt;srostedt@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Impact: New feature

This patch makes the changes to set_ftrace_pid apply to the function
graph tracer.

  # echo $$ &gt; /debugfs/tracing/set_ftrace_pid
  # echo function_graph &gt; /debugfs/tracing/current_tracer

Will cause only the current task to be traced. Note, the trace flags are
also inherited by child processes, so the children of the shell
will also be traced.

Signed-off-by: Steven Rostedt &lt;srostedt@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
</feed>
