Message ID | 20170904074931.oyhe4gz5jnhfmnw6@hirez.programming.kicks-ass.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Peter, On 2017/9/4 15:49, Peter Zijlstra wrote: > On Sat, Sep 02, 2017 at 02:57:32PM +0800, Ethan Zhao wrote: >> diff --git a/kernel/sysctl.c b/kernel/sysctl.c >> index 6648fbb..609bed2 100644 >> --- a/kernel/sysctl.c >> +++ b/kernel/sysctl.c >> @@ -367,7 +367,7 @@ static int sysrq_sysctl_handler(struct ctl_table *table, int write, >> .data = &sysctl_sched_time_avg, >> .maxlen = sizeof(unsigned int), >> .mode = 0644, >> - .proc_handler = proc_dointvec, >> + .proc_handler = sched_time_avg_handler, > *sigh*, what's wrong with the below? Too easy? :), seems I walked zigzag several cycles to get the right point. Thanks, Ethan > > diff --git a/kernel/sysctl.c b/kernel/sysctl.c > index 6648fbbb8157..bbbc6a17c15e 100644 > --- a/kernel/sysctl.c > +++ b/kernel/sysctl.c > @@ -367,7 +367,8 @@ static struct ctl_table kern_table[] = { > .data = &sysctl_sched_time_avg, > .maxlen = sizeof(unsigned int), > .mode = 0644, > - .proc_handler = proc_dointvec, > + .proc_handler = proc_dointvec_min_max, > + .extra1 = &one, > }, > #ifdef CONFIG_SCHEDSTATS > { > >
On Mon, Sep 04, 2017 at 03:54:23PM +0800, Ethan Zhao wrote: > Peter, > > > On 2017/9/4 15:49, Peter Zijlstra wrote: > > On Sat, Sep 02, 2017 at 02:57:32PM +0800, Ethan Zhao wrote: > > > diff --git a/kernel/sysctl.c b/kernel/sysctl.c > > > index 6648fbb..609bed2 100644 > > > --- a/kernel/sysctl.c > > > +++ b/kernel/sysctl.c > > > @@ -367,7 +367,7 @@ static int sysrq_sysctl_handler(struct ctl_table *table, int write, > > > .data = &sysctl_sched_time_avg, > > > .maxlen = sizeof(unsigned int), > > > .mode = 0644, > > > - .proc_handler = proc_dointvec, > > > + .proc_handler = sched_time_avg_handler, > > *sigh*, what's wrong with the below? Too easy? > :), seems I walked zigzag several cycles to get the right point. It sounds like negative values are not possible too, right? If so then you can use proc_douintvec_minmax(). Luis
On 2017/9/7 3:50, Luis R. Rodriguez wrote: > On Mon, Sep 04, 2017 at 03:54:23PM +0800, Ethan Zhao wrote: >> Peter, >> >> >> On 2017/9/4 15:49, Peter Zijlstra wrote: >>> On Sat, Sep 02, 2017 at 02:57:32PM +0800, Ethan Zhao wrote: >>>> diff --git a/kernel/sysctl.c b/kernel/sysctl.c >>>> index 6648fbb..609bed2 100644 >>>> --- a/kernel/sysctl.c >>>> +++ b/kernel/sysctl.c >>>> @@ -367,7 +367,7 @@ static int sysrq_sysctl_handler(struct ctl_table *table, int write, >>>> .data = &sysctl_sched_time_avg, >>>> .maxlen = sizeof(unsigned int), >>>> .mode = 0644, >>>> - .proc_handler = proc_dointvec, >>>> + .proc_handler = sched_time_avg_handler, >>> *sigh*, what's wrong with the below? Too easy? >> :), seems I walked zigzag several cycles to get the right point. > It sounds like negative values are not possible too, right? If so then > you can use proc_douintvec_minmax(). V4 has been sent days ago, please see v4. Thank, Ethan > > Luis >
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 6648fbbb8157..bbbc6a17c15e 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -367,7 +367,8 @@ static struct ctl_table kern_table[] = { .data = &sysctl_sched_time_avg, .maxlen = sizeof(unsigned int), .mode = 0644, - .proc_handler = proc_dointvec, + .proc_handler = proc_dointvec_min_max, + .extra1 = &one, }, #ifdef CONFIG_SCHEDSTATS {