#screen1795#
Which will expand to:
#screen1798#
The macro definition for the <#1848#> syscall<#1800#> X<#1800#>()<#1848#> macros can be found in
/usr/include/linux/unistd.h, and
the user-space system call library code can be found in
/usr/src/libc/syscall/
At this point no system code for the call has been executed. Not
until the int $0x80 is executed does the call transfer to the kernel entry
point <#1801#> _system_call()<#1801#>. This entry point is the same for all system
calls. It is responsible for saving all registers, checking to make
sure a valid system call was invoked and then ultimately transferring
control to the actual system call code via the offsets in the
<#1802#> _sys_call_table<#1802#>. It is also responsible for calling <#1803#>
_ret_from_sys_call()<#1803#> when the system call has been completed, but
before returning to user space.
Actual code for <#1804#> system_call<#1804#> entry point can be found in
/usr/src/linux/kernel/sys_call.S
Actual code for many of the system calls can be found in
/usr/src/linux/kernel/sys.c, and the rest are found elsewhere.
<#1805#> find<#1805#> is your friend.
After the system call has executed, <#1806#> _ret_from_sys_call()<#1806#>
is called. It checks to see if the scheduler should be run, and if
so, calls it.
Upon return from the system call, the <#1849#> syscall<#1807#> X<#1807#>()<#1849#>
macro code checks for a negative return value, and if there is one,
puts a positive copy of the return value in the global variable
<#1808#> _errno<#1808#>, so that it can be accessed by code like <#1809#> perror()<#1809#>.