summaryrefslogtreecommitdiff
path: root/hurd/io_path.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'hurd/io_path.mdwn')
-rw-r--r--hurd/io_path.mdwn37
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).