summaryrefslogtreecommitdiff
path: root/microkernel
diff options
context:
space:
mode:
Diffstat (limited to 'microkernel')
-rw-r--r--microkernel/eros.mdwn15
-rw-r--r--microkernel/mach/gnumach/boot_trace.mdwn13
-rw-r--r--microkernel/mach/gnumach/building.mdwn2
-rw-r--r--microkernel/mach/gnumach/ports.mdwn8
-rw-r--r--microkernel/mach/memory_object/discussion.mdwn2
-rw-r--r--microkernel/mach/mig/gnu_mig/building.mdwn2
-rw-r--r--microkernel/mach/port.mdwn24
7 files changed, 48 insertions, 18 deletions
diff --git a/microkernel/eros.mdwn b/microkernel/eros.mdwn
new file mode 100644
index 00000000..be1ca90a
--- /dev/null
+++ b/microkernel/eros.mdwn
@@ -0,0 +1,15 @@
+[[!meta copyright="Copyright © 2011 Free Software Foundation, Inc."]]
+
+[[!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]]."]]"""]]
+
+[[!tag open_issue_documentation]]
+
+<http://www.eros-os.org/>
+
+TODO. <http://www.eros-os.org/essays/reliability/paper.html>
diff --git a/microkernel/mach/gnumach/boot_trace.mdwn b/microkernel/mach/gnumach/boot_trace.mdwn
index d33ef25a..1badf712 100644
--- a/microkernel/mach/gnumach/boot_trace.mdwn
+++ b/microkernel/mach/gnumach/boot_trace.mdwn
@@ -1,12 +1,13 @@
-[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]]
+[[!meta copyright="Copyright © 2007, 2008, 2011 Free Software Foundation,
+Inc."]]
[[!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]]."]]"""]]
`if NCPUS > 1` stuff is not being considered so far.
@@ -215,6 +216,12 @@ is included in the section entitled
>> kern/bootstrap.c: bootstrap\_create
+>>> The [[grub/multiboot]] modules have been put somewhere into memory by
+>>> [[GRUB]]. The boot scripts are parsed. The modules' ELF image's `PT_LOAD`
+>>> sections are \`\`read'' (that is, `vm_allocate` and `copyout`) and turned
+>>> into real [[task]]s. The multiboot modules' memory regions can be
+>>> deallocated then.
+
>> [...]
>> vm\_pageout
diff --git a/microkernel/mach/gnumach/building.mdwn b/microkernel/mach/gnumach/building.mdwn
index afcfac74..427fb083 100644
--- a/microkernel/mach/gnumach/building.mdwn
+++ b/microkernel/mach/gnumach/building.mdwn
@@ -21,7 +21,7 @@ enabled) is around 50 MiB.
You can either use the git repository (see <http://git.savannah.gnu.org/cgit/hurd/>),
- $ git clone git.savannah.gnu.org:/srv/git/hurd/gnumach.git
+ $ git clone http://git.savannah.gnu.org/cgit/hurd/gnumach.git/
... or get the Debian sources, if you're using Debian. (See
[here](http://packages.debian.net/source/unstable/gnumach).)
diff --git a/microkernel/mach/gnumach/ports.mdwn b/microkernel/mach/gnumach/ports.mdwn
index afc91d7a..f114460c 100644
--- a/microkernel/mach/gnumach/ports.mdwn
+++ b/microkernel/mach/gnumach/ports.mdwn
@@ -1,4 +1,4 @@
-[[!meta copyright="Copyright © 2007, 2008, 2009 Free Software Foundation,
+[[!meta copyright="Copyright © 2007, 2008, 2009, 2011 Free Software Foundation,
Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
@@ -6,8 +6,8 @@ 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]]."]]"""]]
* x86. This is the main port.
@@ -20,3 +20,5 @@ is included in the section entitled
started, but isn't in a usable state either.
* MIPS. Status completely unknown.
+
+ * [[open_issues/Mach_on_Top_of_POSIX]]. Status unknown.
diff --git a/microkernel/mach/memory_object/discussion.mdwn b/microkernel/mach/memory_object/discussion.mdwn
index c874b255..a2a1514b 100644
--- a/microkernel/mach/memory_object/discussion.mdwn
+++ b/microkernel/mach/memory_object/discussion.mdwn
@@ -63,3 +63,5 @@ IRC, freenode, #hurd, 2011-09-05:
pagers, the folks at OSF implemented an "advisory pageout", so servers
are "warned" that they should start paging out, and can decide which
pages are going to be flushed by themselves
+
+[[open_issues/resource_management_problems]].
diff --git a/microkernel/mach/mig/gnu_mig/building.mdwn b/microkernel/mach/mig/gnu_mig/building.mdwn
index cd588341..e7d3c150 100644
--- a/microkernel/mach/mig/gnu_mig/building.mdwn
+++ b/microkernel/mach/mig/gnu_mig/building.mdwn
@@ -19,7 +19,7 @@ using a pre-built package, follow these instructions.
You can chose between getting the [sources from the developers'
RCS](http://git.savannah.gnu.org/cgit/hurd/):
- $ git clone git://git.savannah.gnu.org:/srv/git/hurd/mig.git
+ $ git clone http://git.savannah.gnu.org/cgit/hurd/mig.git/
... or (if you are working on a Debian system) get the sources that are used for the
[current Debian mig package](http://packages.debian.net/source/unstable/mig):
diff --git a/microkernel/mach/port.mdwn b/microkernel/mach/port.mdwn
index 7f02628d..26b55456 100644
--- a/microkernel/mach/port.mdwn
+++ b/microkernel/mach/port.mdwn
@@ -1,4 +1,4 @@
-[[!meta copyright="Copyright © 2002, 2003, 2007, 2008, 2010 Free Software
+[[!meta copyright="Copyright © 2002, 2003, 2007, 2008, 2010, 2011 Free Software
Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
@@ -10,8 +10,8 @@ is included in the section entitled [[GNU Free Documentation
License|/fdl]]."]]"""]]
[[Mach]] *port*s are [[capabilities|capability]], and are also essentially
-similar to [[UNIX]] pipes. They are communication channels, implemented by
-kernel queues.
+similar to [[UNIX]] pipes. They are unforgeable communication channels,
+implemented by kernel queues.
Each port has associated with it one *receive right* and one or more *send
right*s and *send-once right*s. That is, there is one receiver and one or more
@@ -39,7 +39,7 @@ like [[UNIX file descriptors|unix/file_descriptor]]. Only these local names
can be used by [[thread]]s for invoking operations on ports, threads do not
deal with port rights directly.
-For that, each task has associated with it a *port address_space*, or *port
+For that, each task has associated with it a *port address space*, or *port
name space*. All ports are addressed via this table. Each task thus has its
own private [[naming_context]] for port rights.
@@ -58,20 +58,24 @@ The delivery of [[message]]s is reliable and strictly ordered. When a
intermediate messages that are sent by other threads.
Ports are objects that are implemented by the [[kernel]], and they are
-kernel-protected resources. There is no way for a [[task]] to do anything with
-a port unless it have corresponding port right.
+kernel-protected resources: they are unforgeable, and there is no way for a
+[[task]] to do anything with a port unless it have corresponding port right.
Due to this, ports are globally unique. This makes them ideal for constituting
-system-wide *object references*. For example, the [[RPC]] system as used by
-the GNU Hurd works by invoking *methods* on such object references. The
-available methods are defined in [[hurd/interface]] files, and are processes by
-the [[MIG]] tool.
+system-wide *object references*. (Fruther reading:
+{{$capability#wikipedia_object-capability_model}}.) For example, the [[RPC]]
+system as used by the GNU Hurd works by invoking *methods* on such object
+references. The available methods are defined in [[hurd/interface]] files, and
+are processes by the [[MIG]] tool.
Invoking an operation on a port does not transfer the current execution control
to the receiver, but instead is an asynchronous operation. For this, and
especially in a [[RPC]] system, the sender may include a *reply port* using a
send-once right, and synchronize (block) on that one.
+
+# Port Set
+
A [[thread]] can only block receiving on a single port. To work around this,
the concept of a *port set* was introduced. A receive right can be added to
(at most) one port set. These port sets look like port receive rights, but