lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Sat, 30 May 2009 10:43:18 +0900
From:	GeunSik Lim <leemgs1@...il.com>
To:	Steven Rostedt <rostedt@...dmis.org>
Cc:	Greg KH <greg@...ah.com>,
	linux-kernel <linux-kernel@...r.kernel.org>, trivial@...nel.org,
	balagi@...tmail.de, bgamari@...il.com, Ingo Molnar <mingo@...e.hu>,
	inaky.perez-gonzalez@...el.com
Subject: Re: [RFC V2 PATCH]debugfs:Fix terminology inconsistency of dir name 
	to mount debugfs filesystem.

Thanks your advice. I agree with your reply about this patch.
I updated contents that you advised like belows.
If I mistake, Please correct me.

And, I also need your review  about below 2 contents in the ftrace.txt file.

Thanks,
GeunSik Lim.


1)
@@ -1146,7 +1158,7 @@ int trace_fd;
 [...]
 int main(int argc, char *argv[]) {
 	[...]
-	trace_fd = open("/debug/tracing/tracing_enabled", O_WRONLY);
+	trace_fd = open("/sys/kernel/debug/tracing/tracing_enabled", O_WRONLY);
 	[...]
 	if (condition_hit()) {
 		write(trace_fd, "0", 1);
@@ -1154,26 +1166,23 @@ int main(int argc, char *argv[]) {
 	[...]
 }


@@ -1217,12 +1226,12 @@ int main (int argc, char **argv)
                 char line[64];
                 int s;

-                ffd = open("/debug/tracing/current_tracer", O_WRONLY);
+                ffd =
open("/sys/kernel/debug/tracing/current_tracer", O_WRONLY);
                 if (ffd < 0)
                         exit(-1);
                 write(ffd, "nop", 3);

-                fd = open("/debug/tracing/set_ftrace_pid", O_WRONLY);
+                fd = open("/sys/kernel/debug/tracing/set_ftrace_pid",
O_WRONLY);
                 s = sprintf(line, "%d\n", getpid());
                 write(fd, line, s);
-Note: Here we hard coded the path name. The debugfs mount is not
-guaranteed to be at /debug (and is more commonly at
-/sys/kernel/debug). For simple one time traces, the above is
-sufficent. For anything else, a search through /proc/mounts may
+Note: Here we hard coded the path name. A search through /proc/mounts may
 be needed to find where the debugfs file-system is mounted.

2)
More details can be found in the source code, in the
-kernel/tracing/*.c files.
+kernel/trace/*.c files



* about ftrace.txt file
---
diff --git a/Documentation/trace/ftrace.txt b/Documentation/trace/ftrace.txt
index fd9a3e6..790199b 100644
--- a/Documentation/trace/ftrace.txt
+++ b/Documentation/trace/ftrace.txt
@@ -7,7 +7,6 @@ Copyright 2008 Red Hat Inc.
                (dual licensed under the GPL v2)
 Reviewers:   Elias Oltmanns, Randy Dunlap, Andrew Morton,
 	     John Kacur, and David Teigland.
-
 Written for: 2.6.28-rc2

 Introduction
@@ -33,13 +32,26 @@ The File System
 Ftrace uses the debugfs file system to hold the control files as
 well as the files to display output.

-To mount the debugfs system:
+When debugfs is configured into the kernel (which selecting any ftrace
+option will do) the directory /sys/kernel/debug will be created. To mount
+this directory, you can add to your /etc/fstab file:
+
+ debugfs       /sys/kernel/debug          debugfs defaults        0       0
+
+Or you can mount it at run time with:
+
+ mount -t debugfs nodev /sys/kernel/debug
+
+For quicker access to that directory you may want to make a soft link to
+it:

-  # mkdir /debug
-  # mount -t debugfs nodev /debug
+ ln -s /sys/kernel/debug /debug

-( Note: it is more common to mount at /sys/kernel/debug, but for
-  simplicity this document will use /debug)
+Any selected ftrace option will also create a directory called tracing
+within the debugfs. The rest of the document will assume that you are in
+the ftrace directory (cd /sys/kernel/debug/tracing) and will only concentrate
+on the files within that directory and not distract from the content with
+the extended "/sys/kernel/debug/tracing" path name.

 That's it! (assuming that you have ftrace configured into your kernel)

@@ -389,18 +401,18 @@ trace_options
 The trace_options file is used to control what gets printed in
 the trace output. To see what is available, simply cat the file:

-  cat /debug/tracing/trace_options
+  cat ./trace_options
   print-parent nosym-offset nosym-addr noverbose noraw nohex nobin \
   noblock nostacktrace nosched-tree nouserstacktrace nosym-userobj

 To disable one of the options, echo in the option prepended with
 "no".

-  echo noprint-parent > /debug/tracing/trace_options
+  echo noprint-parent > ./trace_options

 To enable an option, leave off the "no".

-  echo sym-offset > /debug/tracing/trace_options
+  echo sym-offset > ./trace_options

 Here are the available options:

@@ -476,11 +488,11 @@ sched_switch
 This tracer simply records schedule switches. Here is an example
 of how to use it.

- # echo sched_switch > /debug/tracing/current_tracer
- # echo 1 > /debug/tracing/tracing_enabled
+ # echo sched_switch > ./current_tracer
+ # echo 1 > ./tracing_enabled
  # sleep 1
- # echo 0 > /debug/tracing/tracing_enabled
- # cat /debug/tracing/trace
+ # echo 0 > ./tracing_enabled
+ # cat ./trace

 # tracer: sched_switch
 #
@@ -574,13 +586,13 @@ new trace is saved.
 To reset the maximum, echo 0 into tracing_max_latency. Here is
 an example:

- # echo irqsoff > /debug/tracing/current_tracer
- # echo 0 > /debug/tracing/tracing_max_latency
- # echo 1 > /debug/tracing/tracing_enabled
+ # echo irqsoff > ./current_tracer
+ # echo 0 > ./tracing_max_latency
+ # echo 1 > ./tracing_enabled
  # ls -ltr
  [...]
- # echo 0 > /debug/tracing/tracing_enabled
- # cat /debug/tracing/latency_trace
+ # echo 0 > ./tracing_enabled
+ # cat ./latency_trace
 # tracer: irqsoff
 #
 irqsoff latency trace v1.1.5 on 2.6.26
@@ -681,13 +693,13 @@ Like the irqsoff tracer, it records the maximum
latency for
 which preemption was disabled. The control of preemptoff tracer
 is much like the irqsoff tracer.

- # echo preemptoff > /debug/tracing/current_tracer
- # echo 0 > /debug/tracing/tracing_max_latency
- # echo 1 > /debug/tracing/tracing_enabled
+ # echo preemptoff > ./current_tracer
+ # echo 0 > ./tracing_max_latency
+ # echo 1 > ./tracing_enabled
  # ls -ltr
  [...]
- # echo 0 > /debug/tracing/tracing_enabled
- # cat /debug/tracing/latency_trace
+ # echo 0 > ./tracing_enabled
+ # cat ./latency_trace
 # tracer: preemptoff
 #
 preemptoff latency trace v1.1.5 on 2.6.26-rc8
@@ -828,13 +840,13 @@ tracer.
 Again, using this trace is much like the irqsoff and preemptoff
 tracers.

- # echo preemptirqsoff > /debug/tracing/current_tracer
- # echo 0 > /debug/tracing/tracing_max_latency
- # echo 1 > /debug/tracing/tracing_enabled
+ # echo preemptirqsoff > ./current_tracer
+ # echo 0 > ./tracing_max_latency
+ # echo 1 > ./tracing_enabled
  # ls -ltr
  [...]
- # echo 0 > /debug/tracing/tracing_enabled
- # cat /debug/tracing/latency_trace
+ # echo 0 > ./tracing_enabled
+ # cat ./latency_trace
 # tracer: preemptirqsoff
 #
 preemptirqsoff latency trace v1.1.5 on 2.6.26-rc8
@@ -990,12 +1002,12 @@ slightly differently than we did with the
previous tracers.
 Instead of performing an 'ls', we will run 'sleep 1' under
 'chrt' which changes the priority of the task.

- # echo wakeup > /debug/tracing/current_tracer
- # echo 0 > /debug/tracing/tracing_max_latency
- # echo 1 > /debug/tracing/tracing_enabled
+ # echo wakeup > ./current_tracer
+ # echo 0 > ./tracing_max_latency
+ # echo 1 > ./tracing_enabled
  # chrt -f 5 sleep 1
- # echo 0 > /debug/tracing/tracing_enabled
- # cat /debug/tracing/latency_trace
+ # echo 0 > ./tracing_enabled
+ # cat ./latency_trace
 # tracer: wakeup
 #
 wakeup latency trace v1.1.5 on 2.6.26-rc8
@@ -1105,11 +1117,11 @@ can be done from the debug file system. Make sure the
 ftrace_enabled is set; otherwise this tracer is a nop.

  # sysctl kernel.ftrace_enabled=1
- # echo function > /debug/tracing/current_tracer
- # echo 1 > /debug/tracing/tracing_enabled
+ # echo function > ./current_tracer
+ # echo 1 > ./tracing_enabled
  # usleep 1
- # echo 0 > /debug/tracing/tracing_enabled
- # cat /debug/tracing/trace
+ # echo 0 > ./tracing_enabled
+ # cat ./trace
 # tracer: function
 #
 #           TASK-PID   CPU#    TIMESTAMP  FUNCTION
@@ -1146,7 +1158,7 @@ int trace_fd;
 [...]
 int main(int argc, char *argv[]) {
 	[...]
-	trace_fd = open("/debug/tracing/tracing_enabled", O_WRONLY);
+	trace_fd = open("/sys/kernel/debug/tracing/tracing_enabled", O_WRONLY);
 	[...]
 	if (condition_hit()) {
 		write(trace_fd, "0", 1);
@@ -1154,26 +1166,23 @@ int main(int argc, char *argv[]) {
 	[...]
 }

-Note: Here we hard coded the path name. The debugfs mount is not
-guaranteed to be at /debug (and is more commonly at
-/sys/kernel/debug). For simple one time traces, the above is
-sufficent. For anything else, a search through /proc/mounts may
+Note: Here we hard coded the path name. A search through /proc/mounts may
 be needed to find where the debugfs file-system is mounted.


 Single thread tracing
 ---------------------

-By writing into /debug/tracing/set_ftrace_pid you can trace a
+By writing into ./set_ftrace_pid you can trace a
 single thread. For example:

-# cat /debug/tracing/set_ftrace_pid
+# cat ./set_ftrace_pid
 no pid
-# echo 3111 > /debug/tracing/set_ftrace_pid
-# cat /debug/tracing/set_ftrace_pid
+# echo 3111 > ./set_ftrace_pid
+# cat ./set_ftrace_pid
 3111
-# echo function > /debug/tracing/current_tracer
-# cat /debug/tracing/trace | head
+# echo function > ./current_tracer
+# cat ./trace | head
  # tracer: function
  #
  #           TASK-PID    CPU#    TIMESTAMP  FUNCTION
@@ -1184,8 +1193,8 @@ no pid
      yum-updatesd-3111  [003]  1637.254683: lock_hrtimer_base
<-hrtimer_try_to_cancel
      yum-updatesd-3111  [003]  1637.254685: fget_light <-do_sys_poll
      yum-updatesd-3111  [003]  1637.254686: pipe_poll <-do_sys_poll
-# echo -1 > /debug/tracing/set_ftrace_pid
-# cat /debug/tracing/trace |head
+# echo -1 > ./set_ftrace_pid
+# cat ./trace |head
  # tracer: function
  #
  #           TASK-PID    CPU#    TIMESTAMP  FUNCTION
@@ -1217,12 +1226,12 @@ int main (int argc, char **argv)
                 char line[64];
                 int s;

-                ffd = open("/debug/tracing/current_tracer", O_WRONLY);
+                ffd =
open("/sys/kernel/debug/tracing/current_tracer", O_WRONLY);
                 if (ffd < 0)
                         exit(-1);
                 write(ffd, "nop", 3);

-                fd = open("/debug/tracing/set_ftrace_pid", O_WRONLY);
+                fd = open("/sys/kernel/debug/tracing/set_ftrace_pid",
O_WRONLY);
                 s = sprintf(line, "%d\n", getpid());
                 write(fd, line, s);

@@ -1374,22 +1383,22 @@ want, depending on your needs.
   tracing_cpu_mask file) or you might sometimes see unordered
   function calls while cpu tracing switch.

-	hide: echo nofuncgraph-cpu > /debug/tracing/trace_options
-	show: echo funcgraph-cpu > /debug/tracing/trace_options
+	hide: echo nofuncgraph-cpu > ./trace_options
+	show: echo funcgraph-cpu > ./trace_options

 - The duration (function's time of execution) is displayed on
   the closing bracket line of a function or on the same line
   than the current function in case of a leaf one. It is default
   enabled.

-	hide: echo nofuncgraph-duration > /debug/tracing/trace_options
-	show: echo funcgraph-duration > /debug/tracing/trace_options
+	hide: echo nofuncgraph-duration > ./trace_options
+	show: echo funcgraph-duration > ./trace_options

 - The overhead field precedes the duration field in case of
   reached duration thresholds.

-	hide: echo nofuncgraph-overhead > /debug/tracing/trace_options
-	show: echo funcgraph-overhead > /debug/tracing/trace_options
+	hide: echo nofuncgraph-overhead > ./trace_options
+	show: echo funcgraph-overhead > ./trace_options
 	depends on: funcgraph-duration

   ie:
@@ -1418,8 +1427,8 @@ want, depending on your needs.
 - The task/pid field displays the thread cmdline and pid which
   executed the function. It is default disabled.

-	hide: echo nofuncgraph-proc > /debug/tracing/trace_options
-	show: echo funcgraph-proc > /debug/tracing/trace_options
+	hide: echo nofuncgraph-proc > ./trace_options
+	show: echo funcgraph-proc > ./trace_options

   ie:

@@ -1442,8 +1451,8 @@ want, depending on your needs.
   system clock since it started. A snapshot of this time is
   given on each entry/exit of functions

-	hide: echo nofuncgraph-abstime > /debug/tracing/trace_options
-	show: echo funcgraph-abstime > /debug/tracing/trace_options
+	hide: echo nofuncgraph-abstime > ./trace_options
+	show: echo funcgraph-abstime > ./trace_options

   ie:

@@ -1540,7 +1549,7 @@ listed in:

    available_filter_functions

- # cat /debug/tracing/available_filter_functions
+ # cat ./available_filter_functions
 put_prev_task_idle
 kmem_cache_create
 pick_next_task_rt
@@ -1552,12 +1561,12 @@ mutex_lock
 If I am only interested in sys_nanosleep and hrtimer_interrupt:

  # echo sys_nanosleep hrtimer_interrupt \
-		> /debug/tracing/set_ftrace_filter
- # echo ftrace > /debug/tracing/current_tracer
- # echo 1 > /debug/tracing/tracing_enabled
+		> ./set_ftrace_filter
+ # echo ftrace > ./current_tracer
+ # echo 1 > ./tracing_enabled
  # usleep 1
- # echo 0 > /debug/tracing/tracing_enabled
- # cat /debug/tracing/trace
+ # echo 0 > ./tracing_enabled
+ # cat ./trace
 # tracer: ftrace
 #
 #           TASK-PID   CPU#    TIMESTAMP  FUNCTION
@@ -1568,7 +1577,7 @@ If I am only interested in sys_nanosleep and
hrtimer_interrupt:

 To see which functions are being traced, you can cat the file:

- # cat /debug/tracing/set_ftrace_filter
+ # cat ./set_ftrace_filter
 hrtimer_interrupt
 sys_nanosleep

@@ -1588,7 +1597,7 @@ Note: It is better to use quotes to enclose the
wild cards,
       otherwise the shell may expand the parameters into names
       of files in the local directory.

- # echo 'hrtimer_*' > /debug/tracing/set_ftrace_filter
+ # echo 'hrtimer_*' > ./set_ftrace_filter

 Produces:

@@ -1609,7 +1618,7 @@ Produces:

 Notice that we lost the sys_nanosleep.

- # cat /debug/tracing/set_ftrace_filter
+ # cat ./set_ftrace_filter
 hrtimer_run_queues
 hrtimer_run_pending
 hrtimer_init
@@ -1635,17 +1644,17 @@ To append to the filters, use '>>'
 To clear out a filter so that all functions will be recorded
 again:

- # echo > /debug/tracing/set_ftrace_filter
- # cat /debug/tracing/set_ftrace_filter
+ # echo > ./set_ftrace_filter
+ # cat ./set_ftrace_filter
  #

 Again, now we want to append.

- # echo sys_nanosleep > /debug/tracing/set_ftrace_filter
- # cat /debug/tracing/set_ftrace_filter
+ # echo sys_nanosleep > ./set_ftrace_filter
+ # cat ./set_ftrace_filter
 sys_nanosleep
- # echo 'hrtimer_*' >> /debug/tracing/set_ftrace_filter
- # cat /debug/tracing/set_ftrace_filter
+ # echo 'hrtimer_*' >> ./set_ftrace_filter
+ # cat ./set_ftrace_filter
 hrtimer_run_queues
 hrtimer_run_pending
 hrtimer_init
@@ -1668,7 +1677,7 @@ hrtimer_init_sleeper
 The set_ftrace_notrace prevents those functions from being
 traced.

- # echo '*preempt*' '*lock*' > /debug/tracing/set_ftrace_notrace
+ # echo '*preempt*' '*lock*' > ./set_ftrace_notrace

 Produces:

@@ -1758,13 +1767,13 @@ the effect on the tracing is different. Every read from
 trace_pipe is consumed. This means that subsequent reads will be
 different. The trace is live.

- # echo function > /debug/tracing/current_tracer
- # cat /debug/tracing/trace_pipe > /tmp/trace.out &
+ # echo function > ./current_tracer
+ # cat ./trace_pipe > /tmp/trace.out &
 [1] 4153
- # echo 1 > /debug/tracing/tracing_enabled
+ # echo 1 > ./tracing_enabled
  # usleep 1
- # echo 0 > /debug/tracing/tracing_enabled
- # cat /debug/tracing/trace
+ # echo 0 > ./tracing_enabled
+ # cat ./trace
 # tracer: function
 #
 #           TASK-PID   CPU#    TIMESTAMP  FUNCTION
@@ -1800,7 +1809,7 @@ number listed is the number of entries that can
be recorded per
 CPU. To know the full size, multiply the number of possible CPUS
 with the number of entries.

- # cat /debug/tracing/buffer_size_kb
+ # cat ./buffer_size_kb
 1408 (units kilobytes)

 Note, to modify this, you must have tracing completely disabled.
@@ -1808,21 +1817,21 @@ To do that, echo "nop" into the current_tracer. If the
 current_tracer is not set to "nop", an EINVAL error will be
 returned.

- # echo nop > /debug/tracing/current_tracer
- # echo 10000 > /debug/tracing/buffer_size_kb
- # cat /debug/tracing/buffer_size_kb
+ # echo nop > ./current_tracer
+ # echo 10000 > ./buffer_size_kb
+ # cat ./buffer_size_kb
 10000 (units kilobytes)

 The number of pages which will be allocated is limited to a
 percentage of available memory. Allocating too much will produce
 an error.

- # echo 1000000000000 > /debug/tracing/buffer_size_kb
+ # echo 1000000000000 > ./buffer_size_kb
 -bash: echo: write error: Cannot allocate memory
- # cat /debug/tracing/buffer_size_kb
+ # cat ./buffer_size_kb
 85

 ---

On Sat, May 30, 2009 at 1:48 AM, Steven Rostedt <rostedt@...dmis.org> wrote:
>
>
>
> On Sat, 30 May 2009, GeunSik Lim wrote:
>
>>
>>
>> Dear Greg and Steen,
>>
>> Thanks your advices and opinions about a confusion according to
>> too many mount directory names for debugfs. I made rfc v2 patch file again like belows.
>> Can I hear your advices about below patch contents?.
>>
>> * ref:
>> http://groups.google.com/group/linux.kernel/browse_thread/thread/c34e386587979340/dc52317f888e78b6?#dc52317f888e78b6
>>
>>
>> Regards,
>> GeunSik Lim.
>>
>> Subject: [PATCH]   Fix terminology inconsistency of dir name to mount debugfs filesystem.
>>
>>       Many developers use "/debug/" or "/debugfs/ directory name to mount
>>       debugfs filesystem for ftrace according to
>>       ./Documentation/tracers/ftrace.txt file.
>>
>>       And, three directory names(ex:/debug/, /debugfs/, /sys/kernel/debug/) is
>>       existed in kernel source like ftrace, DRM, Wireless, Network[sky2]files
>>       to mount debugfs filesystem.
>>
>>       debugfs means debug filesystem for debugging easy to use by greg kroah
>>       hartman. "/sys/kernel/debug/" name is suitable as directory name
>>       of debugfs filesystem.
>>       -debugfs related reference: http://lwn.net/Articles/115405/
>
> Note, LWN has an update this week:
>
>  http://lwn.net/Articles/334546/
>
> But it currently is subscriber only. Others would need to either buy a
> subscription (plug) or wait a week for it to become open.
>
> Still for some aspects, just having "debugfs" without the leading "/"
> might just be self explanatory. We can assume the user already knows where
> debugfs is mounted.
>
> -- Steve
>
>
>>
>>       Fix inconsistency of directory name to mount debugfs filesystem.
>>
>>          Signed-off-by: GeunSik Lim <geunsik.lim@...sung.com>
>>          Acked-By: Inaky Perez-Gonzalez <inaky@...ux.intel.com>
>>          CC: Greg KH <greg@...ah.com>
>>          CC: Steven Rostedt <rostedt@...dmis.org>
>>          CC: linux-kernel <linux-kernel@...r.kernel.org>
>



-- 
Regards,
GeunSik Lim ( SAMSUNG ELECTRONICS)
Blog : http://blog.naver.com/invain/
e-Mail: geunsik.lim@...sung.com
           leemgs@...il.com , leemgs1@...il.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists