Messages in this thread | | | Date | Thu, 12 Nov 2009 10:55:38 +0800 | Subject | Re: [PATCH] fix granularity of task_u/stime() | From | Américo Wang <> |
| |
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/
| |