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>] [day] [month] [year] [list]
Date:	Fri, 27 Apr 2012 15:41:20 +0800
From:	Michael Wang <wangyun@...ux.vnet.ibm.com>
To:	LKML <linux-kernel@...r.kernel.org>
CC:	Paul Turner <pjt@...gle.com>, Dhaval Giani <dhaval.giani@...il.com>
Subject: [PATCH 1/2] linsched: add the functions for setting scheduler proc
 parameters

From: Michael Wang <wangyun@...ux.vnet.ibm.com>

This patch add the functions for setting scheduler proc parameters.
Currently support:
	sysctl_sched_child_runs_first;
	sysctl_sched_min_granularity;
	sysctl_sched_latency;
	sysctl_sched_wakeup_granularity;

Signed-off-by: Michael Wang <wangyun@...ux.vnet.ibm.com>
---
 arch/linsched/kernel/misc.c     |    3 --
 tools/linsched/Makefile.inc     |    3 +-
 tools/linsched/linsched_proc.c  |   46 +++++++++++++++++++++++++++++++++++++++
 tools/linsched/linsched_proc.h  |    6 +++++
 tools/linsched/linux_linsched.c |    1 +
 5 files changed, 55 insertions(+), 4 deletions(-)
 create mode 100644 tools/linsched/linsched_proc.c
 create mode 100644 tools/linsched/linsched_proc.h

diff --git a/arch/linsched/kernel/misc.c b/arch/linsched/kernel/misc.c
index abb1cb4..a76d397 100644
--- a/arch/linsched/kernel/misc.c
+++ b/arch/linsched/kernel/misc.c
@@ -334,8 +334,5 @@ int proc_dointvec(struct ctl_table *table, int write,
 int proc_dointvec_minmax(struct ctl_table *table, int write,
 		    void __user *buffer, size_t *lenp, loff_t *ppos)
 {
-	/* should be unused */
-	BUG();
-
 	return 0;
 }
diff --git a/tools/linsched/Makefile.inc b/tools/linsched/Makefile.inc
index 441f7e3..15a344b 100644
--- a/tools/linsched/Makefile.inc
+++ b/tools/linsched/Makefile.inc
@@ -25,7 +25,8 @@ LINSCHED_OBJS = ${LINSCHED_DIR}/linux_linsched.o \
 		${LINSCHED_DIR}/nohz_tracking.o \
 		${LINSCHED_DIR}/linsched_rand.o \
 		${LINSCHED_DIR}/linsched_sim.o \
-		${LINSCHED_DIR}/stubs/sched.o
+		${LINSCHED_DIR}/stubs/sched.o \
+		${LINSCHED_DIR}/linsched_proc.o
 
 LINUX_OBJS =	${LINUXDIR}/kernel/notifier.o \
 		${LINUXDIR}/kernel/timer.o \
diff --git a/tools/linsched/linsched_proc.c b/tools/linsched/linsched_proc.c
new file mode 100644
index 0000000..7731da6
--- /dev/null
+++ b/tools/linsched/linsched_proc.c
@@ -0,0 +1,46 @@
+#include "linsched_proc.h"
+#include "linsched.h"
+
+int min_sched_granularity_ns = 100000;           /* 100 usecs */
+int max_sched_granularity_ns = NSEC_PER_SEC;     /* 1 second */
+
+enum {
+	MIN_GRANULARITY,
+	LATENCY,
+	WAKEUP_GRANULARITY
+};
+
+void linsched_sched_proc_update_handler(int key, unsigned long value)
+{
+	if (value < min_sched_granularity_ns || value > max_sched_granularity_ns)
+		return;
+
+	switch (key) {
+		case MIN_GRANULARITY:
+			sysctl_sched_min_granularity = value;
+			break;
+		case LATENCY:
+			sysctl_sched_latency = value;
+			break;
+		case WAKEUP_GRANULARITY:
+			sysctl_sched_wakeup_granularity = value;
+			break;
+		default:
+			break;
+	}
+        sched_proc_update_handler(NULL,1,NULL,NULL,NULL);
+}
+
+void set_linsched_proc(char *procname, unsigned long value)
+{
+	if (!strcmp(procname, "sched_child_runs_first")) {
+		sysctl_sched_child_runs_first = value;
+	} else if (!strcmp(procname, "sched_min_granularity_ns")) {
+		linsched_sched_proc_update_handler(MIN_GRANULARITY, value);	
+	} else if (!strcmp(procname, "sched_latency_ns")) {
+		linsched_sched_proc_update_handler(LATENCY, value);	
+	} else if (!strcmp(procname, "sched_wakeup_granularity_ns")) {
+		linsched_sched_proc_update_handler(WAKEUP_GRANULARITY, value);	
+	}
+}
+
diff --git a/tools/linsched/linsched_proc.h b/tools/linsched/linsched_proc.h
new file mode 100644
index 0000000..4c27297
--- /dev/null
+++ b/tools/linsched/linsched_proc.h
@@ -0,0 +1,6 @@
+#ifndef LINSCHED_PROC_H
+#define LINSCHED_PROC_H
+
+void set_linsched_proc(char *procname, unsigned long value);
+
+#endif
diff --git a/tools/linsched/linux_linsched.c b/tools/linsched/linux_linsched.c
index ca07a73..6c24578 100644
--- a/tools/linsched/linux_linsched.c
+++ b/tools/linsched/linux_linsched.c
@@ -41,6 +41,7 @@
 
 #include "linsched_rand.h"
 #include "load_balance_score.h"
+#include "linsched_proc.h"
 
 /* linsched variables and functions */
 
-- 
1.7.1

--
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ