* [PATCH v2 0/3] sched/debug: Add uclamp values to procfs @ 2020-02-26 12:45 Valentin Schneider 2020-02-26 12:45 ` [PATCH v2 1/3] sched/debug: Remove redundant macro define Valentin Schneider ` (3 more replies) 0 siblings, 4 replies; 8+ messages in thread From: Valentin Schneider @ 2020-02-26 12:45 UTC (permalink / raw) To: linux-kernel Cc: mingo, peterz, vincent.guittot, Dietmar.Eggemann, patrick.bellasi, qais.yousef, t1zhou Hi, This is a small debug series I've been sitting on. It's been helpful in testing and reviewing some uclamp stuff, for instance the issue Qais fixed at [1] was really easy to observe with those debug prints. [1]: https://lore.kernel.org/lkml/20191224115405.30622-1-qais.yousef@arm.com/ Cheers, Valentin Revisions ========= v1 -> v2 -------- o Added parentheses for the casting part of the macros (Tao) Valentin Schneider (3): sched/debug: Remove redundant macro define sched/debug: Bunch up printing formats in common macros sched/debug: Add task uclamp values to SCHED_DEBUG procfs kernel/sched/debug.c | 44 ++++++++++++++++++-------------------------- 1 file changed, 18 insertions(+), 26 deletions(-) -- 2.24.0 ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 1/3] sched/debug: Remove redundant macro define 2020-02-26 12:45 [PATCH v2 0/3] sched/debug: Add uclamp values to procfs Valentin Schneider @ 2020-02-26 12:45 ` Valentin Schneider 2020-04-08 12:20 ` [tip: sched/urgent] " tip-bot2 for Valentin Schneider 2020-02-26 12:45 ` [PATCH v2 2/3] sched/debug: Bunch up printing formats in common macros Valentin Schneider ` (2 subsequent siblings) 3 siblings, 1 reply; 8+ messages in thread From: Valentin Schneider @ 2020-02-26 12:45 UTC (permalink / raw) To: linux-kernel Cc: mingo, peterz, vincent.guittot, Dietmar.Eggemann, patrick.bellasi, qais.yousef, t1zhou Most printing macros for procfs are defined globally in debug.c, and they are re-defined (to the exact same thing) within proc_sched_show_task(). Get rid of the duplicate defines. Signed-off-by: Valentin Schneider <valentin.schneider@arm.com> --- kernel/sched/debug.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 8331bc04aea2..4670151eb131 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -868,16 +868,8 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, SEQ_printf(m, "---------------------------------------------------------" "----------\n"); -#define __P(F) \ - SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)F) -#define P(F) \ - SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)p->F) #define P_SCHEDSTAT(F) \ SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)schedstat_val(p->F)) -#define __PN(F) \ - SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)F)) -#define PN(F) \ - SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)p->F)) #define PN_SCHEDSTAT(F) \ SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)schedstat_val(p->F))) @@ -963,11 +955,7 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, P(dl.deadline); } #undef PN_SCHEDSTAT -#undef PN -#undef __PN #undef P_SCHEDSTAT -#undef P -#undef __P { unsigned int this_cpu = raw_smp_processor_id(); -- 2.24.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [tip: sched/urgent] sched/debug: Remove redundant macro define 2020-02-26 12:45 ` [PATCH v2 1/3] sched/debug: Remove redundant macro define Valentin Schneider @ 2020-04-08 12:20 ` tip-bot2 for Valentin Schneider 0 siblings, 0 replies; 8+ messages in thread From: tip-bot2 for Valentin Schneider @ 2020-04-08 12:20 UTC (permalink / raw) To: linux-tip-commits Cc: Qais Yousef, Valentin Schneider, Peter Zijlstra (Intel), Ingo Molnar, x86, LKML The following commit has been merged into the sched/urgent branch of tip: Commit-ID: c745a6212c9923eb2253f4229e5d7277ca3d9d8e Gitweb: https://git.kernel.org/tip/c745a6212c9923eb2253f4229e5d7277ca3d9d8e Author: Valentin Schneider <valentin.schneider@arm.com> AuthorDate: Wed, 26 Feb 2020 12:45:41 Committer: Ingo Molnar <mingo@kernel.org> CommitterDate: Wed, 08 Apr 2020 11:35:24 +02:00 sched/debug: Remove redundant macro define Most printing macros for procfs are defined globally in debug.c, and they are re-defined (to the exact same thing) within proc_sched_show_task(). Get rid of the duplicate defines. Reviewed-by: Qais Yousef <qais.yousef@arm.com> Signed-off-by: Valentin Schneider <valentin.schneider@arm.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Link: https://lkml.kernel.org/r/20200226124543.31986-2-valentin.schneider@arm.com --- kernel/sched/debug.c | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 8331bc0..4670151 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -868,16 +868,8 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, SEQ_printf(m, "---------------------------------------------------------" "----------\n"); -#define __P(F) \ - SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)F) -#define P(F) \ - SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)p->F) #define P_SCHEDSTAT(F) \ SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)schedstat_val(p->F)) -#define __PN(F) \ - SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)F)) -#define PN(F) \ - SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)p->F)) #define PN_SCHEDSTAT(F) \ SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)schedstat_val(p->F))) @@ -963,11 +955,7 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, P(dl.deadline); } #undef PN_SCHEDSTAT -#undef PN -#undef __PN #undef P_SCHEDSTAT -#undef P -#undef __P { unsigned int this_cpu = raw_smp_processor_id(); ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 2/3] sched/debug: Bunch up printing formats in common macros 2020-02-26 12:45 [PATCH v2 0/3] sched/debug: Add uclamp values to procfs Valentin Schneider 2020-02-26 12:45 ` [PATCH v2 1/3] sched/debug: Remove redundant macro define Valentin Schneider @ 2020-02-26 12:45 ` Valentin Schneider 2020-04-08 12:20 ` [tip: sched/urgent] sched/debug: Factor out printing formats into " tip-bot2 for Valentin Schneider 2020-02-26 12:45 ` [PATCH v2 3/3] sched/debug: Add task uclamp values to SCHED_DEBUG procfs Valentin Schneider 2020-02-27 10:42 ` [PATCH v2 0/3] sched/debug: Add uclamp values to procfs Qais Yousef 3 siblings, 1 reply; 8+ messages in thread From: Valentin Schneider @ 2020-02-26 12:45 UTC (permalink / raw) To: linux-kernel Cc: mingo, peterz, vincent.guittot, Dietmar.Eggemann, patrick.bellasi, qais.yousef, t1zhou The printing macros in debug.c keep redefining the same output format. Collect each output format in a single definition, and reuse that definition in the other macros. While at it, add a layer of parentheses and replace printf's with the newly introduced macros. Signed-off-by: Valentin Schneider <valentin.schneider@arm.com> --- kernel/sched/debug.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 4670151eb131..315ef6de3cc4 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -816,10 +816,12 @@ static int __init init_sched_debug_procfs(void) __initcall(init_sched_debug_procfs); -#define __P(F) SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)F) -#define P(F) SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)p->F) -#define __PN(F) SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)F)) -#define PN(F) SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)p->F)) +#define __PS(S, F) SEQ_printf(m, "%-45s:%21Ld\n", S, (long long)(F)) +#define __P(F) __PS(#F, F) +#define P(F) __PS(#F, p->F) +#define __PSN(S, F) SEQ_printf(m, "%-45s:%14Ld.%06ld\n", S, SPLIT_NS((long long)(F))) +#define __PN(F) __PSN(#F, F) +#define PN(F) __PSN(#F, p->F) #ifdef CONFIG_NUMA_BALANCING @@ -868,10 +870,9 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, SEQ_printf(m, "---------------------------------------------------------" "----------\n"); -#define P_SCHEDSTAT(F) \ - SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)schedstat_val(p->F)) -#define PN_SCHEDSTAT(F) \ - SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)schedstat_val(p->F))) + +#define P_SCHEDSTAT(F) __PS(#F, schedstat_val(p->F)) +#define PN_SCHEDSTAT(F) __PSN(#F, schedstat_val(p->F)) PN(se.exec_start); PN(se.vruntime); @@ -931,10 +932,8 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, } __P(nr_switches); - SEQ_printf(m, "%-45s:%21Ld\n", - "nr_voluntary_switches", (long long)p->nvcsw); - SEQ_printf(m, "%-45s:%21Ld\n", - "nr_involuntary_switches", (long long)p->nivcsw); + __PS("nr_voluntary_switches", p->nvcsw); + __PS("nr_involuntary_switches", p->nivcsw); P(se.load.weight); #ifdef CONFIG_SMP @@ -963,8 +962,7 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, t0 = cpu_clock(this_cpu); t1 = cpu_clock(this_cpu); - SEQ_printf(m, "%-45s:%21Ld\n", - "clock-delta", (long long)(t1-t0)); + __PS("clock-delta", t1-t0); } sched_show_numa(p, m); -- 2.24.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [tip: sched/urgent] sched/debug: Factor out printing formats into common macros 2020-02-26 12:45 ` [PATCH v2 2/3] sched/debug: Bunch up printing formats in common macros Valentin Schneider @ 2020-04-08 12:20 ` tip-bot2 for Valentin Schneider 0 siblings, 0 replies; 8+ messages in thread From: tip-bot2 for Valentin Schneider @ 2020-04-08 12:20 UTC (permalink / raw) To: linux-tip-commits Cc: Qais Yousef, Valentin Schneider, Peter Zijlstra (Intel), Ingo Molnar, x86, LKML The following commit has been merged into the sched/urgent branch of tip: Commit-ID: 9e3bf9469c29f7e4e49c5c0d8fecaf8ac57d1fe4 Gitweb: https://git.kernel.org/tip/9e3bf9469c29f7e4e49c5c0d8fecaf8ac57d1fe4 Author: Valentin Schneider <valentin.schneider@arm.com> AuthorDate: Wed, 26 Feb 2020 12:45:42 Committer: Ingo Molnar <mingo@kernel.org> CommitterDate: Wed, 08 Apr 2020 11:35:26 +02:00 sched/debug: Factor out printing formats into common macros The printing macros in debug.c keep redefining the same output format. Collect each output format in a single definition, and reuse that definition in the other macros. While at it, add a layer of parentheses and replace printf's with the newly introduced macros. Reviewed-by: Qais Yousef <qais.yousef@arm.com> Signed-off-by: Valentin Schneider <valentin.schneider@arm.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Link: https://lkml.kernel.org/r/20200226124543.31986-3-valentin.schneider@arm.com --- kernel/sched/debug.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 4670151..315ef6d 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -816,10 +816,12 @@ static int __init init_sched_debug_procfs(void) __initcall(init_sched_debug_procfs); -#define __P(F) SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)F) -#define P(F) SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)p->F) -#define __PN(F) SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)F)) -#define PN(F) SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)p->F)) +#define __PS(S, F) SEQ_printf(m, "%-45s:%21Ld\n", S, (long long)(F)) +#define __P(F) __PS(#F, F) +#define P(F) __PS(#F, p->F) +#define __PSN(S, F) SEQ_printf(m, "%-45s:%14Ld.%06ld\n", S, SPLIT_NS((long long)(F))) +#define __PN(F) __PSN(#F, F) +#define PN(F) __PSN(#F, p->F) #ifdef CONFIG_NUMA_BALANCING @@ -868,10 +870,9 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, SEQ_printf(m, "---------------------------------------------------------" "----------\n"); -#define P_SCHEDSTAT(F) \ - SEQ_printf(m, "%-45s:%21Ld\n", #F, (long long)schedstat_val(p->F)) -#define PN_SCHEDSTAT(F) \ - SEQ_printf(m, "%-45s:%14Ld.%06ld\n", #F, SPLIT_NS((long long)schedstat_val(p->F))) + +#define P_SCHEDSTAT(F) __PS(#F, schedstat_val(p->F)) +#define PN_SCHEDSTAT(F) __PSN(#F, schedstat_val(p->F)) PN(se.exec_start); PN(se.vruntime); @@ -931,10 +932,8 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, } __P(nr_switches); - SEQ_printf(m, "%-45s:%21Ld\n", - "nr_voluntary_switches", (long long)p->nvcsw); - SEQ_printf(m, "%-45s:%21Ld\n", - "nr_involuntary_switches", (long long)p->nivcsw); + __PS("nr_voluntary_switches", p->nvcsw); + __PS("nr_involuntary_switches", p->nivcsw); P(se.load.weight); #ifdef CONFIG_SMP @@ -963,8 +962,7 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, t0 = cpu_clock(this_cpu); t1 = cpu_clock(this_cpu); - SEQ_printf(m, "%-45s:%21Ld\n", - "clock-delta", (long long)(t1-t0)); + __PS("clock-delta", t1-t0); } sched_show_numa(p, m); ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 3/3] sched/debug: Add task uclamp values to SCHED_DEBUG procfs 2020-02-26 12:45 [PATCH v2 0/3] sched/debug: Add uclamp values to procfs Valentin Schneider 2020-02-26 12:45 ` [PATCH v2 1/3] sched/debug: Remove redundant macro define Valentin Schneider 2020-02-26 12:45 ` [PATCH v2 2/3] sched/debug: Bunch up printing formats in common macros Valentin Schneider @ 2020-02-26 12:45 ` Valentin Schneider 2020-04-08 12:20 ` [tip: sched/urgent] " tip-bot2 for Valentin Schneider 2020-02-27 10:42 ` [PATCH v2 0/3] sched/debug: Add uclamp values to procfs Qais Yousef 3 siblings, 1 reply; 8+ messages in thread From: Valentin Schneider @ 2020-02-26 12:45 UTC (permalink / raw) To: linux-kernel Cc: mingo, peterz, vincent.guittot, Dietmar.Eggemann, patrick.bellasi, qais.yousef, t1zhou Requested and effective uclamp values can be a bit tricky to decipher when playing with cgroup hierarchies. Add them to a task's procfs when SCHED_DEBUG is enabled. Signed-off-by: Valentin Schneider <valentin.schneider@arm.com> --- kernel/sched/debug.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 315ef6de3cc4..a562df57a86e 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -946,6 +946,12 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, P(se.avg.last_update_time); P(se.avg.util_est.ewma); P(se.avg.util_est.enqueued); +#endif +#ifdef CONFIG_UCLAMP_TASK + __PS("uclamp.min", p->uclamp[UCLAMP_MIN].value); + __PS("uclamp.max", p->uclamp[UCLAMP_MAX].value); + __PS("effective uclamp.min", uclamp_eff_value(p, UCLAMP_MIN)); + __PS("effective uclamp.max", uclamp_eff_value(p, UCLAMP_MAX)); #endif P(policy); P(prio); -- 2.24.0 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [tip: sched/urgent] sched/debug: Add task uclamp values to SCHED_DEBUG procfs 2020-02-26 12:45 ` [PATCH v2 3/3] sched/debug: Add task uclamp values to SCHED_DEBUG procfs Valentin Schneider @ 2020-04-08 12:20 ` tip-bot2 for Valentin Schneider 0 siblings, 0 replies; 8+ messages in thread From: tip-bot2 for Valentin Schneider @ 2020-04-08 12:20 UTC (permalink / raw) To: linux-tip-commits Cc: Qais Yousef, Valentin Schneider, Peter Zijlstra (Intel), Ingo Molnar, x86, LKML The following commit has been merged into the sched/urgent branch of tip: Commit-ID: 96e74ebf8d594496f3dda5f8e26af6b4e161e4e9 Gitweb: https://git.kernel.org/tip/96e74ebf8d594496f3dda5f8e26af6b4e161e4e9 Author: Valentin Schneider <valentin.schneider@arm.com> AuthorDate: Wed, 26 Feb 2020 12:45:43 Committer: Ingo Molnar <mingo@kernel.org> CommitterDate: Wed, 08 Apr 2020 11:35:27 +02:00 sched/debug: Add task uclamp values to SCHED_DEBUG procfs Requested and effective uclamp values can be a bit tricky to decipher when playing with cgroup hierarchies. Add them to a task's procfs when SCHED_DEBUG is enabled. Reviewed-by: Qais Yousef <qais.yousef@arm.com> Signed-off-by: Valentin Schneider <valentin.schneider@arm.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Ingo Molnar <mingo@kernel.org> Link: https://lkml.kernel.org/r/20200226124543.31986-4-valentin.schneider@arm.com --- kernel/sched/debug.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c index 315ef6d..a562df5 100644 --- a/kernel/sched/debug.c +++ b/kernel/sched/debug.c @@ -947,6 +947,12 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, P(se.avg.util_est.ewma); P(se.avg.util_est.enqueued); #endif +#ifdef CONFIG_UCLAMP_TASK + __PS("uclamp.min", p->uclamp[UCLAMP_MIN].value); + __PS("uclamp.max", p->uclamp[UCLAMP_MAX].value); + __PS("effective uclamp.min", uclamp_eff_value(p, UCLAMP_MIN)); + __PS("effective uclamp.max", uclamp_eff_value(p, UCLAMP_MAX)); +#endif P(policy); P(prio); if (task_has_dl_policy(p)) { ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 0/3] sched/debug: Add uclamp values to procfs 2020-02-26 12:45 [PATCH v2 0/3] sched/debug: Add uclamp values to procfs Valentin Schneider ` (2 preceding siblings ...) 2020-02-26 12:45 ` [PATCH v2 3/3] sched/debug: Add task uclamp values to SCHED_DEBUG procfs Valentin Schneider @ 2020-02-27 10:42 ` Qais Yousef 3 siblings, 0 replies; 8+ messages in thread From: Qais Yousef @ 2020-02-27 10:42 UTC (permalink / raw) To: Valentin Schneider Cc: linux-kernel, mingo, peterz, vincent.guittot, Dietmar.Eggemann, patrick.bellasi, t1zhou On 02/26/20 12:45, Valentin Schneider wrote: > Hi, > > This is a small debug series I've been sitting on. It's been helpful in > testing and reviewing some uclamp stuff, for instance the issue Qais fixed > at [1] was really easy to observe with those debug prints. > > [1]: https://lore.kernel.org/lkml/20191224115405.30622-1-qais.yousef@arm.com/ That would be handy indeed. And nice cleanup along the way. For the series Reviewed-by: Qais Yousef <qais.yousef@arm.com> Cheers -- Qais Yousef > > Cheers, > Valentin > > Revisions > ========= > > v1 -> v2 > -------- > o Added parentheses for the casting part of the macros (Tao) > > Valentin Schneider (3): > sched/debug: Remove redundant macro define > sched/debug: Bunch up printing formats in common macros > sched/debug: Add task uclamp values to SCHED_DEBUG procfs > > kernel/sched/debug.c | 44 ++++++++++++++++++-------------------------- > 1 file changed, 18 insertions(+), 26 deletions(-) > > -- > 2.24.0 > ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-04-08 12:21 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-02-26 12:45 [PATCH v2 0/3] sched/debug: Add uclamp values to procfs Valentin Schneider 2020-02-26 12:45 ` [PATCH v2 1/3] sched/debug: Remove redundant macro define Valentin Schneider 2020-04-08 12:20 ` [tip: sched/urgent] " tip-bot2 for Valentin Schneider 2020-02-26 12:45 ` [PATCH v2 2/3] sched/debug: Bunch up printing formats in common macros Valentin Schneider 2020-04-08 12:20 ` [tip: sched/urgent] sched/debug: Factor out printing formats into " tip-bot2 for Valentin Schneider 2020-02-26 12:45 ` [PATCH v2 3/3] sched/debug: Add task uclamp values to SCHED_DEBUG procfs Valentin Schneider 2020-04-08 12:20 ` [tip: sched/urgent] " tip-bot2 for Valentin Schneider 2020-02-27 10:42 ` [PATCH v2 0/3] sched/debug: Add uclamp values to procfs Qais Yousef
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).