On Tue, Jul 23, 2019 at 04:11:09PM +0800, Yang Xu wrote:
> > 2) according to man page passing negative value should be acceptable,
> >     though it never worked as expected. I've been grepping "git log"
> >     for this file and the former API is coming from
> > 
> > commit 6976675d94042fbd446231d1bd8b7de71a980ada
> > Author: Arjan van de Ven<[email protected]>
> > Date:   Mon Sep 1 15:52:40 2008 -0700
> > 
> >      hrtimer: create a "timer_slack" field in the task struct
> > 
> > which is 11 years old by now. Nobody complained so far even when man
> > page is saying pretty obviously
> > 
> >         PR_SET_TIMERSLACK (since Linux 2.6.28)
> >                Each thread has two associated timer slack values:  a  
> > "default"
> >                value, and a "current" value.  This operation sets the 
> > "current"
> >                timer slack value for the calling  thread.   If  the  
> > nanosecond
> >                value  supplied in arg2 is greater than zero, then the 
> > "current"
> >                value is set to this value.  If arg2 is less than  or  equal 
> >  to
> >                zero,  the  "current"  timer  slack  is  reset  to  the 
> > thread's
> >                "default" timer slack value.
> > 
> > So i think to match the man page (and assuming that accepting negative value
> > has been supposed) we should rather do
> > 
> >     if ((long)arg2<  0)
> Looks correct. But if we set a ULONG_MAX(PR_GET_TIMERSLACK also limits 
> ULONG_MAX)
> value(about 4s) on 32bit machine, this code will think this value is a 
> negative value and use default value.
> 
> I guess man page was written as "less than or equal to zero" because of this 
> confusing code(arg2<=0, but arg2
> is an unsinged long value).
> I think we can change this man page and also add bounds value description.

OK, seems reasonable. I think we should use comparision with zero
and simply update a man page.

Reply via email to