diff options
Diffstat (limited to 'hurd/io_path.mdwn')
-rw-r--r-- | hurd/io_path.mdwn | 37 |
1 files changed, 28 insertions, 9 deletions
diff --git a/hurd/io_path.mdwn b/hurd/io_path.mdwn index b55dc20f..492edffe 100644 --- a/hurd/io_path.mdwn +++ b/hurd/io_path.mdwn @@ -1,14 +1,23 @@ -[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2008, 2010, 2011 Free Software Foundation, +Inc."]] -[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable +[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled -[[GNU_Free_Documentation_License|/fdl]]."]]"""]] +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] -# read +[[!meta title="I/O Path"]] + +[[!tag open_issue_documentation]] <!-- Someone still needs to make a pass over +this text. --> + +[[!toc]] + + +# `read`, [[libtrivfs]] [[glibc]]'s `read` is in `glibc/sysdeps/mach/hurd/read.c:__libc_read`. @@ -29,7 +38,7 @@ call `hurd/trans/hello.c:trivfs_S_io_read`. A 2048 byte buffer is provided. -> `trivfs_S_io_read`. Depending on the internatl state, either a new memory +> `trivfs_S_io_read`. Depending on the internal state, either a new memory > region is set-up (and returned as out-of-line data), or the desired amount of > data is returned in-line. @@ -59,9 +68,7 @@ Leave server-side RPC stub `_Xio_read`. > Back in `__libc_read`. ---- - -Samuel: +# `read`, [[hurd/translator/ext2fs]]/[[hurd/libdiskfs]] (For example) [[translator/ext2fs]] server, enter server-side RPC stub `hurd.obj/libdiskfs/ioServer.c:_Xio_read`. Process stuff, call @@ -88,3 +95,15 @@ A 2048 byte buffer is provided. `hurd/libstore/rdwr.c:store_read`, which eventually calls `device_read`, which is an [[RPC]], i.e., that actually gets into the kernel calling `gnumach/linux/dev/glue/block.c:device_read`. + + * ext2fs eventually finishes the data_request() function, the kernel installs + the page into the process that got a fault. + + +# Documentation + + * In [*Linux kernel design patterns - part + 3*](http://lwn.net/Articles/336262/) (2009-06-22), Neil Brown gives a + nice overview of the related layering inside the Linux kernel, + including the VFS layer, page cache and directory entry cache + (dcache). |