2004-03-12 19:44:48

by sting sting

[permalink] [raw]
Subject: do_brk() trace mystery

Hello,
for debugging purpoese I had used the strace utilitty.
The command I had traced with starce was
"cat /proc/interrupts".

Well , I saw that there were not a few calls to the brk() system calls.

What I know is the brk() is a system call that is intended to enlarge
procees
memory and is supposed to be called by the memory manager when sensing
that a process needs more memory.

But I did a search on the kernel tree fo do_brk()
and I found only 5 entries (in 2.6 kernel and also in 2.4.24).
One of the was the declaration in mm.h; the other was
implementation in mmap.c


Now the 2 others were in binfmt_out.c and in binfmt_elf.c

(in 2.4.20 it is also in ksyms.c ; in 2.6 it is not but it is in mm/nommu.c)


So the mystery is : who calls the brk() system call when I type
"cat /proc/interrupts"

It does not seem to me that it is binfmt_out.c and in binfmt_elf.c (Or am I
wrong)?


(BTW,searching for sys_mmap gives 2 results:
\linux-2.4.24\arch\i386\kernel\sys_i386.c
and the entry.s file)


regards,
Sting

_________________________________________________________________
Add photos to your messages with MSN 8. Get 2 months FREE*.
http://join.msn.com/?page=features/featuredemail


2004-03-12 20:18:10

by Chris Friesen

[permalink] [raw]
Subject: Re: do_brk() trace mystery

sting sting wrote:

> But I did a search on the kernel tree fo do_brk()
> and I found only 5 entries (in 2.6 kernel and also in 2.4.24).
> One of the was the declaration in mm.h; the other was
> implementation in mmap.c

You probably want sys_brk().

> So the mystery is : who calls the brk() system call when I type
> "cat /proc/interrupts"

cat calls malloc(), glibc calls brk(), kernel does sys_brk()

Chris

--
Chris Friesen | MailStop: 043/33/F10
Nortel Networks | work: (613) 765-0557
3500 Carling Avenue | fax: (613) 765-2986
Nepean, ON K2H 8E9 Canada | email: [email protected]