Re: 2.6.18-rc3-mm2

Balbir Singh
2006-08-07T09:53:08Z

Michal Piotrowski wrote:
> Hi,
>
> On 06/08/06, Andrew Morton <akpm@osdl.org> wrote:
>>
>> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.18-rc3/2.6.18-rc3-mm2/
>>
>>
>
> I get this error during the build.
>
> kernel/built-in.o: In function `bacct_add_tsk':
> /usr/src/linux-mm/kernel/tsacct.c:39: undefined reference to `__divdi3'
> make[1]: *** [.tmp_vmlinux1] Error 1
> make: *** [_all] Error 2
>
> I'll try with CONFIG_TASKSTATS disabled.
>
> Regards,
> Michal
>

Sounds likes we are trying to do a 64 bit division since timespec_to_ns()
returns a 64 bit value.

Here's a compile tested patch to fix the problem

Signed-off-by: Balbir Singh <balbir@in.ibm.com>
---

kernel/tsacct.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletion(-)

diff -puN kernel/tsacct.c~tsacct-build-fix kernel/tsacct.c
--- linux-2.6.18-rc3/kernel/tsacct.c~tsacct-build-fix 2006-08-07
14:20:58.000000000 +0530
+++ linux-2.6.18-rc3-balbir/kernel/tsacct.c 2006-08-07 14:51:44.000000000 +0530
@@ -36,7 +36,8 @@ void bacct_add_tsk(struct taskstats *sta
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 = (ts.tv_sec * USEC_PER_SEC) +
+ (ts.tv_nsec / NSEC_PER_USEC);
stats->ac_btime = xtime.tv_sec - ts.tv_sec;
if (thread_group_leader(tsk)) {
stats->ac_exitcode = tsk->exit_code;
_

--
Regards,
Balbir Singh,
Linux Technology Center,
IBM Software Labs