<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>P {MARGIN-TOP: 0mm; MARGIN-BOTTOM: 0mm}</style>
</head>
<body>
<div style="FONT-FAMILY: Arial; FONT-SIZE: 10pt" id="ezFormProc_div">
<div style="FONT-FAMILY: Arial" id="msgbody">
<div>
<div style="LINE-HEIGHT: 15pt"><br>
Hi, Mohan,</div>
<div style="LINE-HEIGHT: 15pt">Thanks!&nbsp; so the printf is name chagned to _printf by the compiler. I missed that.
<br>
Chan</div>
<div style="LINE-HEIGHT: 15pt" id="MailSign"><br>
</div>
<div style="LINE-HEIGHT: 15pt">
<hr tabindex="-1">
</div>
<div style="LINE-HEIGHT: 15pt"><b>From : </b>&quot;Mohan L&quot; &lt;l.mohanphy@gmail.com&gt;<br>
<b>Sent : </b>2014-03-12 11:07:45 ( &#43;09:00 )<br>
<b>To : </b>Kim Chan &lt;ckim@etri.re.kr&gt;<br>
<b>Cc : </b>kernelnewbies@kernelnewbies.org &lt;kernelnewbies@kernelnewbies.org&gt;<br>
<b>Subject : </b>Re: where is the printf source for busybox?<br>
<br>
</div>
<div style="LINE-HEIGHT: 15pt" dir="ltr">
<div class="gmail_extra">On Wed, Mar 12, 2014 at 7:14 AM, Kim Chan <span dir="ltr">
&lt;<a href="mailto:ckim@etri.re.kr" target="_blank">ckim@etri.re.kr</a>&gt;</span> wrote:<br>
<div class="gmail_quote">
<blockquote style="BORDER-LEFT: rgb(204,204,204) 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" class="gmail_quote">
<div>
<div style="FONT-FAMILY: Arial; FONT-SIZE: 10pt">
<div style="FONT-FAMILY: Arial"><br>
<div>
<div style="LINE-HEIGHT: 15pt"><br>
Hi,</div>
<div style="LINE-HEIGHT: 15pt">I've had this question for some time past and I would like to know the answer now..</div>
<div style="LINE-HEIGHT: 15pt">I wanted to follow a printf in busybox but couldn't find the source of the printf function.</div>
<div style="LINE-HEIGHT: 15pt">Then I throught probably the printf is provided by the system library where printf is connected to proper linux system call. (Is it printk?)</div>
<div style="LINE-HEIGHT: 15pt">So I checkd LD_LIBRARY_PATH of my shell and found libc.so under /lib. I could see by 'nm libc.so' that printf is in the library.</div>
<div style="LINE-HEIGHT: 15pt">But where can I see the printf source? Is it under gcc source? in GNU sdk, under glibc-2.16.0, I tried
</div>
<div style="LINE-HEIGHT: 15pt">#&nbsp;grep 'int printf(' * -r</div>
<div style="LINE-HEIGHT: 15pt">but nothing comes up.</div>
<div style="LINE-HEIGHT: 15pt">In linux kernel source doing the same gaves me</div>
<div style="LINE-HEIGHT: 15pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arch/x86/boot/boot.h:int printf(const char *fmt, ...);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arch/x86/boot/printf.c:int printf(const char *fmt, ...)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arch/um/include/shared/kern.h:extern int printf(const char *fmt, ...);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arch/um/os-Linux/user_syms.c:extern int printf(const char *, ...);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arch/powerpc/boot/stdio.h:extern int printf(const char *fmt, ...) __attribute__((format(printf, 1, 2)));</div>
<div style="LINE-HEIGHT: 15pt">so printf is defined only for x86 architecture?</div>
<div style="LINE-HEIGHT: 15pt">I understand printf is for user program not kernel, so I want to see how the printf is connected to kernel print function. (the system call, I know in sparc, linux system call is trap 0x90, function 59 when using assembly)</div>
<div style="LINE-HEIGHT: 15pt">Where can I find the printf (user program) source?</div>
<div style="LINE-HEIGHT: 15pt">Thanks in advance.</div>
<span><font color="#888888">
<div style="LINE-HEIGHT: 15pt">Chan</div>
</font></span></div>
</div>
</div>
</div>
</blockquote>
<div><br>
<div style="DISPLAY: inline; FONT-FAMILY: courier new,monospace; FONT-SIZE: small" class="gmail_default">
Hi Chan,<br>
&nbsp;<br>
</div>
<div style="DISPLAY: inline; FONT-FAMILY: courier new,monospace; FONT-SIZE: small" class="gmail_default">
Here is Glibc printf.c code:<br>
</div>
<div style="DISPLAY: inline; FONT-FAMILY: courier new,monospace; FONT-SIZE: small" class="gmail_default">
<br>
int<br>
__printf (const char *format, ...)<br>
{<br>
&nbsp; va_list arg;<br>
&nbsp; int done;<br>
<br>
&nbsp; va_start (arg, format);<br>
&nbsp; done = vfprintf (stdout, format, arg);<br>
&nbsp; va_end (arg);<br>
<br>
&nbsp; return done;<br>
}<br>
<br>
it in turn call vfprintf. You can see Glibc vfprintf.c (glibc-2.18/stdio-common/vfprintf.c)<br>
<br>
</div>
<div style="DISPLAY: inline; FONT-FAMILY: courier new,monospace; FONT-SIZE: small" class="gmail_default">
Correct me If my understanding is wrong.<br>
</div>
<div style="DISPLAY: inline; FONT-FAMILY: courier new,monospace; FONT-SIZE: small" class="gmail_default">
<br>
</div>
<div style="DISPLAY: inline; FONT-FAMILY: courier new,monospace; FONT-SIZE: small" class="gmail_default">
Thanks<br>
</div>
<div style="DISPLAY: inline; FONT-FAMILY: courier new,monospace; FONT-SIZE: small" class="gmail_default">
Mohan L<br>
</div>
<div style="DISPLAY: inline; FONT-FAMILY: courier new,monospace; FONT-SIZE: small" class="gmail_default">
</div>
&nbsp;</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>