2.6.18-rc3-mm2 Compile Error
I got an Error while compiling 2.6.18-rc3-mm2:
AR arch/i386/lib/lib.a GEN .version CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o LD init/built-in.o LD .tmp_vmlinux1
kernel/built-in.o(.text+0x45667): In function `bacct_add_tsk':include/linux/time.h:130: undefined reference to `__divdi3'
make: *** [.tmp_vmlinux1] Error 1
I attached the .config file.
Have a good day.
Matt
Quoted 9 lines · On Sun, 6 Aug 2006 23:30:19 -0400 Matt Reuther <[email protected]> wrote:
I got an Error while compiling 2.6.18-rc3-mm2:
AR arch/i386/lib/lib.a GEN .version CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o LD init/built-in.o LD .tmp_vmlinux1
Quoted 6 lines
kernel/built-in.o(.text+0x45667): In function `bacct_add_tsk':
include/linux/time.h:130: undefined reference to `__divdi3'
make: *** [.tmp_vmlinux1] Error 1I attached the .config file.
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.18-rc3/2.6.18-rc3-mm2/hot-fixes/csa-basic-accounting-over-taskstats-fix.patch should fix this, thanks.
Quoted 16 lines · Andrew Morton
On Sun, 6 Aug 2006 23:30:19 -0400
Quoted 13 lines · Matt Reuther
I got an Error while compiling 2.6.18-rc3-mm2:
AR arch/i386/lib/lib.a GEN .version CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o LD init/built-in.o LD .tmp_vmlinux1kernel/built-in.o(.text+0x45667): In function `bacct_add_tsk':
include/linux/time.h:130: undefined reference to `__divdi3'
make: *** [.tmp_vmlinux1] Error 1
Quoted 5 lines
Quoted 1 line
I attached the .config file.
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.18-rc3/2.
6.18-rc3-mm2/hot-fixes/csa-basic-accounting-over-taskstats-fix.patchshould fix this, thanks.
It does indeed fix the error. Thank you!
Matt
PATCH 1/1 add timespec_to_us() and use it in kernel/tsacct.c
In reply to Andrew MortonQuoted 16 lines · Andrew Morton
Quoted 13 lines · On Sun, 6 Aug 2006 23:30:19 -0400 Matt Reuther <[email protected]> wrote:
I got an Error while compiling 2.6.18-rc3-mm2:
AR arch/i386/lib/lib.a GEN .version CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o LD init/built-in.o LD .tmp_vmlinux1kernel/built-in.o(.text+0x45667): In function `bacct_add_tsk':
include/linux/time.h:130: undefined reference to `__divdi3'
make: *** [.tmp_vmlinux1] Error 1
Quoted 5 lines
Quoted 2 lines
I attached the .config file.
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.18-rc3/2.6.18-rc3-mm2/hot-fixes/csa-basic-accounting-over-taskstats-fix.patch should fix this, thanks.
This doesn't look correct since do_div() does not guarantee to return more than 32bit.
What about the patch below that adds a timespec_to_us() to time.h and uses this function in kernel/tsacct.c?
<-- snip -->
This patch adds a timespec_to_us() to include/linux/time.h and uses it to fix a compile error in kernel/tsacct.c .
---
include/linux/time.h | 12 ++++++++++++ kernel/tsacct.c | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-)
include/linux/time.h renamed from include/linux/time.h.old +12 -0
@@ -132,6 +132,18 @@ }/** +* timespec_to_us - Convert timespec to microseconds +* @ts: pointer to the timespec variable to be converted +* +* Returns the scalar microsecond representation of the timespec +* parameter. +*/ +static inline s64 timespec_to_us (const struct timespec *ts) +{ +return ((s64 ) ts->tv_sec *USEC_PER_SEC ) + ts->tv_nsec /NSEC_PER_USEC ; +} + +/** * timeval_to_ns - Convert timeval to nanoseconds * @ts: pointer to the timeval variable to be converted *
kernel/tsacct.c renamed from kernel/tsacct.c.old +1 -1
@@ -36,7 +36,7 @@do_posix_clock_monotonic_gettime (&uptime); ts =timespec_sub (uptime, current->group_leader->start_time);/* rebase elapsed time to usec */ - stats->ac_etime = (timespec_to_ns (&ts))/NSEC_PER_USEC ; + stats->ac_etime =timespec_to_us (&ts); stats->ac_btime = xtime.tv_sec - ts.tv_sec;if (thread_group_leader (tsk)) { stats->ac_exitcode = tsk->exit_code;
Re: [-mm patch] add timespec_to_us() and use it in kernel/tsacct.c
Quoted 17 lines · On Mon, 7 Aug 2006 15:32:41 +0200 Adrian Bunk <[email protected]> wrote:
Quoted 16 lines · Andrew Morton
Quoted 13 lines · On Sun, 6 Aug 2006 23:30:19 -0400 Matt Reuther <[email protected]> wrote:
I got an Error while compiling 2.6.18-rc3-mm2:
AR arch/i386/lib/lib.a GEN .version CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o LD init/built-in.o LD .tmp_vmlinux1kernel/built-in.o(.text+0x45667): In function `bacct_add_tsk':
include/linux/time.h:130: undefined reference to `__divdi3'
make: *** [.tmp_vmlinux1] Error 1
Quoted 8 lines
Quoted 5 lines
Quoted 2 lines
I attached the .config file.
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.18-rc3/2.6.18-rc3-mm2/hot-fixes/csa-basic-accounting-over-taskstats-fix.patch should fix this, thanks.
This doesn't look correct since
do_div()does not guarantee to return more than 32bit.
eh? We use do_div() to do 64bit/something all the time??
Quoted 2 lines
What about the patch below that adds a
timespec_to_us()totime.hand uses this function inkernel/tsacct.c?
Seems reasonable, but it'd be better as two patches..
Do we do timespec->microseconds anywhere else?
Re: [-mm patch] add timespec_to_us() and use it in kernel/tsacct.c
Quoted 23 lines · Andrew Morton
Quoted 20 lines · On Mon, 7 Aug 2006 15:32:41 +0200 Adrian Bunk <[email protected]> wrote:
Quoted 19 lines · Andrew Morton
Quoted 15 lines · On Sun, 6 Aug 2006 23:30:19 -0400 Matt Reuther <[email protected]> wrote:
I got an Error while compiling 2.6.18-rc3-mm2:
AR arch/i386/lib/lib.a GEN .version CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o LD init/built-in.o LD .tmp_vmlinux1kernel/built-in.o(.text+0x45667): In function `bacct_add_tsk':
include/linux/time.h:130: undefined reference to `__divdi3'
make: *** [.tmp_vmlinux1] Error 1I attached the .config file.
Quoted 7 lines
Quoted 5 lines
Quoted 2 lines
ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.18-rc3/2.6.18-rc3-mm2/hot-fixes/csa-basic-accounting-over-taskstats-fix.patch should fix this, thanks.
This doesn't look correct since
do_div()does not guarantee to return more than 32bit.eh? We use
do_div()to do 64bit/something all the time??
Sorry, this was my thinko.
Quoted 4 lines
Quoted 2 lines
What about the patch below that adds a
timespec_to_us()totime.hand uses this function inkernel/tsacct.c?Seems reasonable, but it'd be better as two patches..
Feel free to split this patch however you want, I thought it was not worth splitting it.
Quoted 1 line
Do we do
timespec->microsecondsanywhere else?
I haven't found another place.
cu
Adrian
Signature · 4 lines
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon SeedRe: [-mm patch] add timespec_to_us() and use it in kernel/tsacct.c
In reply to Andrew MortonQuoted 6 lines · Andrew Morton
Quoted 2 lines · On Mon, 7 Aug 2006 15:32:41 +0200 Adrian Bunk <[email protected]> wrote:
This doesn't look correct since
do_div()does not guarantee to return more than 32bit.eh? We use
do_div()to do 64bit/something all the time??
Indeed. If do_div didn't return a 64-bit quotient then printk("%lld", ...) wouldn't work. (The remainder is 32-bit of course, because the divisor is 32-bit.)
Paul.
Re: [-mm patch] add timespec_to_us() and use it in kernel/tsacct.c
In reply to Adrian BunkQuoted 47 lines · Adrian Bunk
Quoted 1 line · Andrew Morton
On Sun, 6 Aug 2006 23:30:19 -0400
What about the patch below that adds a
timespec_to_us()totime.hand uses this function inkernel/tsacct.c?<-- snip -->
This patch adds a
timespec_to_us()toinclude/linux/time.hand uses it to fix a compile error inkernel/tsacct.c.Signed-off-by Adrian Bunk <[email protected]>---
include/linux/time.h | 12 ++++++++++++ kernel/tsacct.c | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-)--- linux-2.6.18-rc3-mm2-full/include/linux/time.h.old 2006-08-06
19:56:50.000000000 +0200 +++linux-2.6.18-rc3-mm2-full/include/linux/time.h2006-08-06
20:00:51.000000000 +0200 @@ -132,6 +132,18 @@
}/**
+ *timespec_to_us- Convert timespec to microseconds
+ * @ts: pointer to the timespec variable to be converted
+ *
+ * Returns the scalar microsecond representation of the timespec
+ * parameter.
+ */include/linux/time.h renamed from include/linux/time.h.old +6
-1+static inline s64 timespec_to_us (const struct timespec *ts) +{ +return ((s64 ) ts->tv_sec *USEC_PER_SEC ) + ts->tv_nsec /NSEC_PER_USEC ; +} + +/** * timeval_to_ns - Convert timeval to nanoseconds * @ts: pointer to the timeval variable to be converted * --- linux-2.6.18-rc3-mm2-full/kernel/tsacct.c.old 2006-08-06 19:54:45.000000000 +0200 +++
linux-2.6.18-rc3-mm2-full/kernel/tsacct.c2006-08-06 19:56:44.000000000
+0200 @@ -36,7 +36,7 @@
kernel/tsacct.c line 42
Quoted 8 lines
kernel/tsacct.c renamed from kernel/tsacct.c.old +1
-1do_posix_clock_monotonic_gettime (&uptime); ts =timespec_sub (uptime, current->group_leader->start_time);/* rebase elapsed time to usec */ - stats->ac_etime = (timespec_to_ns (&ts))/NSEC_PER_USEC ; + stats->ac_etime =timespec_to_us (&ts); stats->ac_btime = xtime.tv_sec - ts.tv_sec;if (thread_group_leader (tsk)) { stats->ac_exitcode = tsk->exit_code;
This patch also compiles for me without errors.
Matt