<div dir="ltr">Hi,<br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Mar 11, 2014 at 11:55 PM, Kim Chan <span dir="ltr">&lt;<a href="mailto:ckim@etri.re.kr" target="_blank">ckim@etri.re.kr</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">




<div>
<div style="font-family:Arial;font-size:10pt">
<div style="font-family:Arial">
<div>
<div style="line-height:15pt"><br>
Wow, that was it. I&#39;m happy to hear that because I thought it should end up with a system call anyway.
</div>
<div style="line-height:15pt">Then isn&#39;t there some codes making the system call? Or is it that the compiler understands that &#39;write&#39; is a system call and inserts the assembly code for calling it by itself?</div>
</div></div></div></div></blockquote><div><br></div><div>In uclibc, the write source code is found here:<br><a href="http://git.uclibc.org/uClibc/tree/libc/sysdeps/linux/common/write.c">http://git.uclibc.org/uClibc/tree/libc/sysdeps/linux/common/write.c</a><br>
<br></div><div>How the syscall is actually implemented is architecture specific, and will be in one of the directories here:<br><a href="http://git.uclibc.org/uClibc/tree/libc/sysdeps/linux">http://git.uclibc.org/uClibc/tree/libc/sysdeps/linux</a><br>
<br></div><div>For example, for ARM, with EABI, then I believe that it winds up here:<br><a href="http://git.uclibc.org/uClibc/tree/libc/sysdeps/linux/arm/syscall-eabi.S">http://git.uclibc.org/uClibc/tree/libc/sysdeps/linux/arm/syscall-eabi.S</a><br>
<br></div><div>The SWI instruction transfers control to the kernel.<br><br></div><div>On the kernel side, how the syscalls get handled is also architecture specific, but it will generally wind up at a function called sys_FUNCTION, however the generation of the function name is usually hidden behind a macro.<br>
</div><div><br></div><div>So sys_write in the kernel winds up being declared here:<br><a href="http://lxr.linux.no/#linux+v3.13.5/fs/read_write.c#L514">http://lxr.linux.no/#linux+v3.13.5/fs/read_write.c#L514</a><br><br></div>
</div>-- <br>Dave Hylands<br>Shuswap, BC, Canada<br><a href="http://www.davehylands.com" target="_blank">http://www.davehylands.com</a>
</div></div>