read
glibc's
readis inglibc/sysdeps/mach/hurd/read.c:__libc_read.That calls
glibc/hurd/fd-read.c:_hurd_fd_read().That calls
__io_read, which is an RPC, i.e., that actually results into the ext2fs server callinghurd/libdiskfs/io-read.c:diskfs_S_io_read.That calls
_diskfs_rdwr_internal, which callshurd/libpager/pager-memcpy.c:pager_memcpy, which usually basically just tell the kernel to virtually project the memory object corresponding to the file in the caller process's memory. No read is actually done.Then, when the process actually reads the data, the kernel gets the user page fault (
gnumach/i386/i386/trap.c:user_trap), which callsvm_fault, etc., until actually getting tognumach/vm/vm_fault/vm_fault_pagewhich eventually callsmemory_object_data_request, which is an RPC, i.e., that actually results into the ext2fs server callinghurd/libpager/data-request.c:_pager_seqnos_memory_object_data_request.That calls
hurd/ext2fs/pager.c:pager_read_page, which looks for where the data is on the disk, and eventually callshurd/libstore/rdwr.c:store_read, which eventually callsdevice_read, which is an RPC, i.e., that actually gets into the kernel callinggnumach/linux/dev/glue/block.c:device_read.
