lkml.org 
[lkml]   [2009]   [Nov]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH] fix granularity of task_u/stime()
    From
    On Thu, Nov 12, 2009 at 10:49 AM, Hidetoshi Seto
    <seto.hidetoshi@jp.fujitsu.com> wrote:
    > Hidetoshi Seto wrote:
    >> Stanislaw Gruszka wrote:
    >>> On Tue, Nov 10, 2009 at 02:47:34PM +0900, Hidetoshi Seto wrote:
    >>>> Remove casting to clock_t from task_u/stime(), and keep granularity of
    >>>> cputime_t over the calculation.
    >>>>
    >>>> Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
    >>>> ---
    >>>>  kernel/sched.c |   21 ++++++++++++---------
    >>>>  1 files changed, 12 insertions(+), 9 deletions(-)
    >>>>
    >>>> diff --git a/kernel/sched.c b/kernel/sched.c
    >>>> index 28dd4f4..1632e82 100644
    >>>> --- a/kernel/sched.c
    >>>> +++ b/kernel/sched.c
    >>>> @@ -5171,41 +5171,44 @@ cputime_t task_stime(struct task_struct *p)
    >>>>     return p->stime;
    >>>>  }
    >>>>  #else
    >>>> +
    >>>> +#ifndef nsecs_to_cputime
    >>>> +# define nsecs_to_cputime(__nsecs) msecs_to_cputime((__nsecs) / NSEC_PER_MSEC)
    >>>> +#endif
    >>>> +
    >>> I would like to test, but unfortunately with the patch kernel not build
    >>> on my system:
    >>>
    >>> kernel/built-in.o: In function `task_utime':
    >>> /usr/src/rhel5/linux-2.6/kernel/sched.c:5187: undefined reference to
    >>> `__udivdi3'
    >>> kernel/built-in.o: In function `task_stime':
    >>> /usr/src/rhel5/linux-2.6/kernel/sched.c:5208: undefined reference to
    >>> `__udivdi3'
    >>> make: *** [.tmp_vmlinux1] Error 1
    >>
    >> Wow, what arch?
    >> Could you provide your .config?
    >
    > Oh, I found I can hit this error on x86_32 (but not on x86_64).
    > Maybe something on dividing u64...
    >
    > I'll try to find fix/workaround for this, but would appreciate if someone
    > could tell me what is happening here.

    Yeah, this is because on 32-bit gcc tries to use libgcc to do 64-bit
    integer computing. You can insert inline asm to force gcc not to
    optimize this code. ;)
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2009-11-12 03:57    [W:0.026 / U:90.744 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site