Эх сурвалжийг харах

SLOW_WORK: Move slow_work's proc file to debugfs

Move slow_work's debugging proc file to debugfs.

Signed-off-by: David Howells <dhowells@redhat.com>
Requested-and-acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
David Howells 15 жил өмнө
parent
commit
f13a48bd79

+ 2 - 2
Documentation/slow-work.txt

@@ -279,9 +279,9 @@ The slow-work thread pool has a number of configurables:
 VIEWING EXECUTING AND QUEUED ITEMS
 VIEWING EXECUTING AND QUEUED ITEMS
 ==================================
 ==================================
 
 
-If CONFIG_SLOW_WORK_PROC is enabled, a proc file is made available:
+If CONFIG_SLOW_WORK_DEBUG is enabled, a debugfs file is made available:
 
 
-	/proc/slow_work_rq
+	/sys/kernel/debug/slow_work/runqueue
 
 
 through which the list of work items being executed and the queues of items to
 through which the list of work items being executed and the queues of items to
 be executed may be viewed.  The owner of a work item is given the chance to
 be executed may be viewed.  The owner of a work item is given the chance to

+ 4 - 4
include/linux/slow-work.h

@@ -20,7 +20,7 @@
 #include <linux/timer.h>
 #include <linux/timer.h>
 
 
 struct slow_work;
 struct slow_work;
-#ifdef CONFIG_SLOW_WORK_PROC
+#ifdef CONFIG_SLOW_WORK_DEBUG
 struct seq_file;
 struct seq_file;
 #endif
 #endif
 
 
@@ -42,8 +42,8 @@ struct slow_work_ops {
 	/* execute a work item */
 	/* execute a work item */
 	void (*execute)(struct slow_work *work);
 	void (*execute)(struct slow_work *work);
 
 
-#ifdef CONFIG_SLOW_WORK_PROC
-	/* describe a work item for /proc */
+#ifdef CONFIG_SLOW_WORK_DEBUG
+	/* describe a work item for debugfs */
 	void (*desc)(struct slow_work *work, struct seq_file *m);
 	void (*desc)(struct slow_work *work, struct seq_file *m);
 #endif
 #endif
 };
 };
@@ -64,7 +64,7 @@ struct slow_work {
 #define SLOW_WORK_DELAYED	5	/* item is struct delayed_slow_work with active timer */
 #define SLOW_WORK_DELAYED	5	/* item is struct delayed_slow_work with active timer */
 	const struct slow_work_ops *ops; /* operations table for this item */
 	const struct slow_work_ops *ops; /* operations table for this item */
 	struct list_head	link;	/* link in queue */
 	struct list_head	link;	/* link in queue */
-#ifdef CONFIG_SLOW_WORK_PROC
+#ifdef CONFIG_SLOW_WORK_DEBUG
 	struct timespec		mark;	/* jiffies at which queued or exec begun */
 	struct timespec		mark;	/* jiffies at which queued or exec begun */
 #endif
 #endif
 };
 };

+ 4 - 4
init/Kconfig

@@ -1098,12 +1098,12 @@ config SLOW_WORK
 
 
 	  See Documentation/slow-work.txt.
 	  See Documentation/slow-work.txt.
 
 
-config SLOW_WORK_PROC
-	bool "Slow work debugging through /proc"
+config SLOW_WORK_DEBUG
+	bool "Slow work debugging through debugfs"
 	default n
 	default n
-	depends on SLOW_WORK && PROC_FS
+	depends on SLOW_WORK && DEBUG_FS
 	help
 	help
-	  Display the contents of the slow work run queue through /proc,
+	  Display the contents of the slow work run queue through debugfs,
 	  including items currently executing.
 	  including items currently executing.
 
 
 	  See Documentation/slow-work.txt.
 	  See Documentation/slow-work.txt.

+ 1 - 1
kernel/Makefile

@@ -94,7 +94,7 @@ obj-$(CONFIG_X86_DS) += trace/
 obj-$(CONFIG_RING_BUFFER) += trace/
 obj-$(CONFIG_RING_BUFFER) += trace/
 obj-$(CONFIG_SMP) += sched_cpupri.o
 obj-$(CONFIG_SMP) += sched_cpupri.o
 obj-$(CONFIG_SLOW_WORK) += slow-work.o
 obj-$(CONFIG_SLOW_WORK) += slow-work.o
-obj-$(CONFIG_SLOW_WORK_PROC) += slow-work-proc.o
+obj-$(CONFIG_SLOW_WORK_DEBUG) += slow-work-debugfs.o
 obj-$(CONFIG_PERF_EVENTS) += perf_event.o
 obj-$(CONFIG_PERF_EVENTS) += perf_event.o
 
 
 ifneq ($(CONFIG_SCHED_OMIT_FRAME_POINTER),y)
 ifneq ($(CONFIG_SCHED_OMIT_FRAME_POINTER),y)

+ 2 - 2
kernel/slow-work-proc.c → kernel/slow-work-debugfs.c

@@ -57,7 +57,7 @@ static void slow_work_print_mark(struct seq_file *m, struct slow_work *work)
 }
 }
 
 
 /*
 /*
- * Describe a slow work item for /proc
+ * Describe a slow work item for debugfs
  */
  */
 static int slow_work_runqueue_show(struct seq_file *m, void *v)
 static int slow_work_runqueue_show(struct seq_file *m, void *v)
 {
 {
@@ -211,7 +211,7 @@ static const struct seq_operations slow_work_runqueue_ops = {
 };
 };
 
 
 /*
 /*
- * open "/proc/slow_work_rq" to list queue contents
+ * open "/sys/kernel/debug/slow_work/runqueue" to list queue contents
  */
  */
 static int slow_work_runqueue_open(struct inode *inode, struct file *file)
 static int slow_work_runqueue_open(struct inode *inode, struct file *file)
 {
 {

+ 12 - 6
kernel/slow-work.c

@@ -16,7 +16,7 @@
 #include <linux/kthread.h>
 #include <linux/kthread.h>
 #include <linux/freezer.h>
 #include <linux/freezer.h>
 #include <linux/wait.h>
 #include <linux/wait.h>
-#include <linux/proc_fs.h>
+#include <linux/debugfs.h>
 #include "slow-work.h"
 #include "slow-work.h"
 
 
 static void slow_work_cull_timeout(unsigned long);
 static void slow_work_cull_timeout(unsigned long);
@@ -138,7 +138,7 @@ static void slow_work_clear_thread_processing(int id) {}
 /*
 /*
  * Data for tracking currently executing items for indication through /proc
  * Data for tracking currently executing items for indication through /proc
  */
  */
-#ifdef CONFIG_SLOW_WORK_PROC
+#ifdef CONFIG_SLOW_WORK_DEBUG
 struct slow_work *slow_work_execs[SLOW_WORK_THREAD_LIMIT];
 struct slow_work *slow_work_execs[SLOW_WORK_THREAD_LIMIT];
 pid_t slow_work_pids[SLOW_WORK_THREAD_LIMIT];
 pid_t slow_work_pids[SLOW_WORK_THREAD_LIMIT];
 DEFINE_RWLOCK(slow_work_execs_lock);
 DEFINE_RWLOCK(slow_work_execs_lock);
@@ -823,7 +823,7 @@ static void slow_work_new_thread_execute(struct slow_work *work)
 static const struct slow_work_ops slow_work_new_thread_ops = {
 static const struct slow_work_ops slow_work_new_thread_ops = {
 	.owner		= THIS_MODULE,
 	.owner		= THIS_MODULE,
 	.execute	= slow_work_new_thread_execute,
 	.execute	= slow_work_new_thread_execute,
-#ifdef CONFIG_SLOW_WORK_PROC
+#ifdef CONFIG_SLOW_WORK_DEBUG
 	.desc		= slow_work_new_thread_desc,
 	.desc		= slow_work_new_thread_desc,
 #endif
 #endif
 };
 };
@@ -1055,9 +1055,15 @@ static int __init init_slow_work(void)
 	if (slow_work_max_max_threads < nr_cpus * 2)
 	if (slow_work_max_max_threads < nr_cpus * 2)
 		slow_work_max_max_threads = nr_cpus * 2;
 		slow_work_max_max_threads = nr_cpus * 2;
 #endif
 #endif
-#ifdef CONFIG_SLOW_WORK_PROC
-	proc_create("slow_work_rq", S_IFREG | 0400, NULL,
-		    &slow_work_runqueue_fops);
+#ifdef CONFIG_SLOW_WORK_DEBUG
+	{
+		struct dentry *dbdir;
+
+		dbdir = debugfs_create_dir("slow_work", NULL);
+		if (dbdir && !IS_ERR(dbdir))
+			debugfs_create_file("runqueue", S_IFREG | 0400, dbdir,
+					    NULL, &slow_work_runqueue_fops);
+	}
 #endif
 #endif
 	return 0;
 	return 0;
 }
 }

+ 3 - 3
kernel/slow-work.h

@@ -19,7 +19,7 @@
 /*
 /*
  * slow-work.c
  * slow-work.c
  */
  */
-#ifdef CONFIG_SLOW_WORK_PROC
+#ifdef CONFIG_SLOW_WORK_DEBUG
 extern struct slow_work *slow_work_execs[];
 extern struct slow_work *slow_work_execs[];
 extern pid_t slow_work_pids[];
 extern pid_t slow_work_pids[];
 extern rwlock_t slow_work_execs_lock;
 extern rwlock_t slow_work_execs_lock;
@@ -30,9 +30,9 @@ extern struct list_head vslow_work_queue;
 extern spinlock_t slow_work_queue_lock;
 extern spinlock_t slow_work_queue_lock;
 
 
 /*
 /*
- * slow-work-proc.c
+ * slow-work-debugfs.c
  */
  */
-#ifdef CONFIG_SLOW_WORK_PROC
+#ifdef CONFIG_SLOW_WORK_DEBUG
 extern const struct file_operations slow_work_runqueue_fops;
 extern const struct file_operations slow_work_runqueue_fops;
 
 
 extern void slow_work_new_thread_desc(struct slow_work *, struct seq_file *);
 extern void slow_work_new_thread_desc(struct slow_work *, struct seq_file *);