diff options
Diffstat (limited to 'Mach')
-rw-r--r-- | Mach/AdvancedGrubUsage.mdwn | 42 | ||||
-rw-r--r-- | Mach/BuildingGNUMach.mdwn | 98 | ||||
-rw-r--r-- | Mach/BuildingOskitMach.mdwn | 190 | ||||
-rw-r--r-- | Mach/GNUMach.mdwn | 48 | ||||
-rw-r--r-- | Mach/GNUMachRevivalProject.mdwn | 51 | ||||
-rw-r--r-- | Mach/MachConcepts.mdwn | 67 | ||||
-rw-r--r-- | Mach/MachHistory.mdwn | 59 | ||||
-rw-r--r-- | Mach/MicroKernelFUD.mdwn | 33 | ||||
-rw-r--r-- | Mach/MicroKernelResearch.mdwn | 15 | ||||
-rw-r--r-- | Mach/MicroKernelsForBeginners.mdwn | 17 | ||||
-rw-r--r-- | Mach/OskitMach.mdwn | 56 | ||||
-rw-r--r-- | Mach/OskitMachPatches.mdwn | 10 | ||||
-rw-r--r-- | Mach/OskitMachStatusList.mdwn | 15 | ||||
-rw-r--r-- | Mach/OskitPatches.mdwn | 67 | ||||
-rw-r--r-- | Mach/PortToL4.mdwn | 42 | ||||
-rw-r--r-- | Mach/PosixSemaphores.mdwn | 13 | ||||
-rw-r--r-- | Mach/RemoteDebugOskitMach.mdwn | 195 | ||||
-rw-r--r-- | Mach/UsefulOskitPatches.mdwn | 3 | ||||
-rw-r--r-- | Mach/WebChanges.mdwn | 1 | ||||
-rw-r--r-- | Mach/WebDiscuss.mdwn | 23 | ||||
-rw-r--r-- | Mach/WebHome.mdwn | 123 | ||||
-rw-r--r-- | Mach/WebIndex.mdwn | 3 | ||||
-rw-r--r-- | Mach/WebNotify.mdwn | 8 | ||||
-rw-r--r-- | Mach/WebPreferences.mdwn | 51 | ||||
-rw-r--r-- | Mach/WebSearch.mdwn | 1 | ||||
-rw-r--r-- | Mach/WebStatistics.mdwn | 368 | ||||
-rw-r--r-- | Mach/WebTopicList.mdwn | 3 |
27 files changed, 1602 insertions, 0 deletions
diff --git a/Mach/AdvancedGrubUsage.mdwn b/Mach/AdvancedGrubUsage.mdwn new file mode 100644 index 00000000..8e307b4f --- /dev/null +++ b/Mach/AdvancedGrubUsage.mdwn @@ -0,0 +1,42 @@ +## <a name="Advanced_Grub"> Advanced Grub </a> + +[Grub](http://www.gnu.org/software/grub/) is a capable boot loader. This document is intended to capture some of its most interesting features and try to explain them a bit better than the texinfo documentation. + +### <a name="Debian_Grub"> Debian Grub </a> + +The Debian grub packages do not have networking enabled, so you have to apt-get the source, modify the debian/rules file to include --enable-network-card and dpkg-buildpackage to get a .deb of grub that supports TFTP. + +1. cd /usr/src/debian +2. apt-get source grub +3. cd grub-\_VERSION\_ +4. Add `--enable-tulip` or similar for your NIC to the `./configure` line of the `configure-stamp` target in the `debian/rules` file. +5. `dpkg-buildpackage` (as `root`) +6. `cd ..` +7. `dpkg -i grub*.deb` +8. cp /lib/grub/\_ARCH\_/\* /boot/grub/, e.g., _ARCH_ is `i386-pc` +9. Edit your `/boot/grub/menu.lst` (see below) +10. If your boot disk is `/dev/hda` ==> `grub-install (hd0)` + +### <a name="TFTP_Boot"> </a> TFTP Boot + +Using trivial ftp to load a kernel is one of the best features of Grub. Here is how it is done. + +The `menu.lst` can look something like this: + + ifconfig --address=192.168.1.2 --server=192.168.1.1 + root (nd) + kernel /gnu/boot/oskit-mach.gz root=device:hd0s2 -- + root (hd0,1) + module /hurd/ext2fs.static \ + --multiboot-command-line=${kernel-command-line} \ + --host-priv-port=${host-port} \ + --device-master-port=${device-port} \ + --exec-server-task=${exec-task} \ + -T typed ${root} $(task-create) $(task-resume) + module /lib/ld.so.1 /hurd/exec $(exec-task=task-create) + +**Note: Make sure there are NO spaces after the trailing backslases (\\)!!** + +For more information on GNUmach modules lines and installation setup, see [[Hurd/InstallNotes]] + +-- [[Main/JoachimNilsson]] - 13 Apr 2005 diff --git a/Mach/BuildingGNUMach.mdwn b/Mach/BuildingGNUMach.mdwn new file mode 100644 index 00000000..163cc9e1 --- /dev/null +++ b/Mach/BuildingGNUMach.mdwn @@ -0,0 +1,98 @@ +# <a name="Building_GNUMach_GNU_Mach_from_S"> </a> Building [[GNUMach]] from Source + +If you want to build the [[GNUMach]] kernel yourself instead of just using a pre-built binary, follow these instructions. + +The unpacked source tree is around 20 MiB, and the build tree (with all drivers enabled) is around 50 MiB. + +## <a name="Getting_the_Source_Code"> Getting the Source Code </a> + +### <a name="Developers_s_rcs"> Developers's rcs </a> + +See [here](http://www.gnu.org/software/hurd/gnumach-download.html#cvs). + + $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co -r gnumach-1-branch gnumach + +(Most probably you want to get hold of the _GNU Mach 1 branch_ and not the trunk, which is also what we've done above.) + +You then have to create the automatically generatable files: + + $ ( cd gnumach && autoreconf --install ) + +### <a name="What_Debian_is_currently_using"> What Debian is currently using </a> + +See [here](http://packages.debian.net/source/unstable/gnumach). + + $ apt-get source gnumach + +Please see [[Distrib/DebianFAQ]] before using _apt-get source_. + +## <a name="Preparing_for_the_Build"> Preparing for the Build </a> + +### <a name="_on_Debian_systems"> ... on Debian systems </a> + +Building GNU Mach requires the _build-essential_ and _fakeroot_ packages, their dependencies and additional packages that are specified by the source gnumach package: + + # apt-get install build-essential fakeroot + # apt-get build-dep gnumach + +### <a name="_on_non_Debian_systems"> ... on non-Debian systems </a> + +Apart from the case that you only want to install GNU Mach's header files (see below), building GNU Mach requires you to have the Mach Interface Generator installed. See [[Mig/BuildingMIG]] about how to do that, then come back here. + +Additionally, building GNU Mach requires a C compiler, a standard C library and your favourite flavor of awk (gawk) and GNU make. + +## <a name="Building_and_Installing"> Building and Installing </a> + +### <a name="_Debian_deb_files"> ... Debian _.deb_ files </a> + +Change into the directory with the downloaded / unpacked _gnumach_ sources, e.g. + + $ cd gnumach-20050801 + +Start the build process with + + $ dpkg-buildpackage -us -uc -b -rfakeroot + +[[GNUMach]] is now building. To use the new kernel, you must install the resulting _.deb_ package which is located one directory above the build directory and has a similar name as the build directory, e.g. + + # dpkg -i ../gnumach_20050801-4_hurd-i386.deb + +You can now reboot your computer and enjoy the new kernel. + +### <a name="_TODO_"> [TODO] </a> + +GNU Mach should be built in a separate directory: + + $ mkdir gnumach-build + $ cd gnumach-build + +Find the path to your GNU Mach sources (_[...]/gnumach-1-branch_) and configure it: + + $ [...]/gnumach-1-branch/configure [TODO] + +Build the kernel image: + + $ make gnumach.gz + +Optionally run the (tiny) test suite: + + $ make check + +You can then install and use _gnumach.gz_. + +[TODO.] + +### <a name="Installing_only_the_Header_Files"> Installing only the Header Files </a> + +GNU Mach should be built in a separate directory: + + $ mkdir gnumach-build + $ cd gnumach-build + +Find the path to your GNU Mach sources (_[...]/gnumach-1-branch_) and configure it: + + $ [...]/gnumach-1-branch/configure --prefix= + +Install the header files into e.g. _~/gnu/include/_: + + $ make DESTDIR=~/gnu install-data diff --git a/Mach/BuildingOskitMach.mdwn b/Mach/BuildingOskitMach.mdwn new file mode 100644 index 00000000..e1bf66f7 --- /dev/null +++ b/Mach/BuildingOskitMach.mdwn @@ -0,0 +1,190 @@ +## <a name="HowTo_Build_OSKit_Mach"> </a> HowTo Build OSKit-Mach + +<table align="center" width="75%"> + <tr> + <td width="50%"> %TOC% </td> + <td width="50%"> + <p><nop></nop></p> + <h3><a name="Introduction"> Introduction </a></h3> This is a brief "<nop>HowTO build OSKit-Mach" (a.k.a GNUmach 2.0). It covers everything from getting the latest sources of both the <a href="http://www.cs.utah.edu/flux/oskit/" target="_top">OSKit</a> and the GNUmach kernel, down to building and debugging them. <p> To be able to actually make use of your recently checked out CVS version of the GNUMach kernel &amp; c:o you need a GNU system of <a href="ftp://ftp.funet.fi/pub/gnu/alpha/gnu/hurd/contrib/marcus/gnu-20020816.tar.gz" target="_top">gnu-20020816.tar.gz</a> or later. See [[Distrib/TarballNotesHome]] for more info. </p></nop></td> + </tr> +</table> + +## <a name="Getting_your_hands_on_the_source"> Getting your hands on the source </a> + +First you need to checkout the relevant sources. It comes in various flavours and the recommended way is to checkout from CVS. + +### <a name="The_OSKit_Sources"> </a> The OSKit Sources + +**_Note:_** The [Savannah OSKit](http://savannah.gnu.org/projects/oskit/) project is the recommended source today of the OSKit. Its CVS tree holds the official sources and all known patches, plus a few others. + +**_Official Sources:_** + +* St. Patricks day 2002 release: <ftp://flux.cs.utah.edu/flux/oskit/oskit-20020317.tar.gz> + +* Valentine's day 2001 release: <ftp://flux.cs.utah.edu/flux/oskit/oskit-20010214.tar.gz> + +**_Official Patches:_** + +* Download useful [[OskitPatches]] or on the nearest Debian FTP. + +**_Savannah CVS:_** + +The recommended document for accessing the Savannah OSKit CVS is <http://savannah.gnu.org/cvs?group=oskit> + +The following command should get the sources for you: + + $ export CVS_RSH="ssh" + $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/oskit co oskit + +Note: if you get a message about RSA/DSA keys, please go check it here: <http://savannah.gnu.org/cvs?group=oskit> + +### <a name="GNUmach_amp_Mig_Sources"> </a> GNUmach & Mig Sources + +The recommended document for accessing the Hurd CVS on Savannah is at <http://savannah.gnu.org/cvs/?group=hurd> + +Remember to set up you environment to use 'ssh' for cvs: + + $ export CVS_RSH="ssh" + +Note: if you get a message about RSA/DSA keys when using cvs commands, please go check it here: <http://savannah.gnu.org/cvs?group=hurd> + +**_Gnu Mach:_** + +All development, apart from critical bug fixes, is done on the upcoming 2.0 release (OSKit/Mach). A potentially confusing point is that the code for OSKit/Mach (as opposed to the 1.X release, aka "GNU Mach") is now on the `TRUNK` of the 'gnumach' CVS module. In the past the trunk was 1.X (GNU Mach) and 2.0 (OSKit/Mach) was a branch. + + $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/hurd co gnumach + +In case you have been tracking the oskit-branch and want to move to the current `HEAD` branch you can issue the following instead to update your tree. + + $ cd <YOUR MACH DIR> + $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/hurd update -Pd -A + +Where `<YOUR MACH DIR>` can be `gnumach`, `oskit-mach`, or similar. The `-A` is what moves you from a branch to the default (in this case HEAD), but without forcing a specific tag. `-P` Prunes your local copy from stale directories and `-d` creates new directories for you. + +**_The Hurd servers:_** + +In case you want to build the Hurd servers as well, you can check them out with: + + $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/hurd co hurd + +**_Inteface generator:_** + +See the [[Mig/MachInterfaceGenerator]] for more information. + +Check it out using + + $ cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/hurd co mig + +## <a name="Building"> Building </a> + +The recommended versions of GCC are + +<dl> + <dt> For the OSKit</dt> + <dd> GCC 2.95.X </dd> + <dt> For GNUmach and <nop>MiG</nop></dt> + <dd> GCC 3.2 </dd> +</dl> + +### <a name="The_OSKit"> </a> The OSKit + +Do _not_ forget to apply all known [[OskitPatches]] before starting the build! This does not apply if you use the OSKit from [Savannah](http://savannah.gnu.org/). + +The attached [[ATTACHURLmodulesx86pc]], or [[ATTACHURLmodules-lightx86pc]], is an example setup, your needs may vary but this one works for standard COTS PC's. Now, how to configure and build the OSKit. + + $ cd oskit-20020317/ + $ mkdir build + $ cd build + $ CC=gcc-2.95 \ + CFLAGS="-g" \ + ../configure --prefix=/usr/local \ + --enable-debug \ + --enable-modulefile=modules-light.x86.pc + $ make + $ sudo make install + +Comment: Barry deFreese + +For you newbies like me, I had problems using `modules.x86.pc.full` and `modules.x86.pc`. There seems to be problems with `examples/dyntest`. Make sure you pull down and use the [[ATTACHURLmodules-lightx86pc]]. + +Comment: Luis Miguel + +I needed to apply another patch that is not in CVS yet. The patch is in this [message](http://mail.gnu.org/archive/html/bug-hurd/2003-06/msg00054.html) in the bug-hurd mailing list. + +### <a name="Mach_Interface_Generator"> Mach Interface Generator </a> + +To build any Mach kernel you need an interface generator, MiG. To be on the safe side, use the CVS version. If you use Debian, you can install package [mig-i386-gnu](http://packages.debian.org/mig-i386-gnu). If you don't use Debian or want to compile MiG by yourself on Linux/\*BSD system, you must first install Mach headers. In Mach directory do: + + $ mkdir build + $ cd build + $ ../configure --prefix=/usr/local # Default prefix is / ! + $ sudo make -k install-headers # -k is for ignoring errors + +Now you are ready to compile and install MiG (commands are in Mig's source directory): + + $ automake --add-missing # sometimes it's needed + $ mkdir build + $ cd build + $ ../configure + $ make + $ sudo make install + +### <a name="GNUmach_2_0_OSKit_Mach_"> </a> GNUmach 2.0 (OSKit-Mach) + +Unlike its half sister, the OSKit-Mach kernel does _not_ need a cross compiler. The regular gcc for your x86 Linux system does just fine. However, you might want to use gcc 3.2 with the latest and greatest CVS version of Mach. + +**_Configuring:_** + + $ cd gnumach + $ mkdir build + $ cd build + $ MIG=/usr/local/bin/mig \ + CC=gcc-3.2 \ + CFLAGS="-g -O2" \ + OSKIT_LIBDIR=/usr/local/lib/oskit \ + ../configure --prefix=/gnu + +Comment: Barry deFreese + +I updated `CFLAGS` to `CFLAGS="-g -O2"`. Using just `-O` I was getting errors in the `machine_init` function. For newbies like me, the `-g` is only needed if you want to enable debugging. The `-O2` is Oh 2, not Zero 2. + +**_Building:_** + +Instead of using `make kernel` to build kernel, in OSKit-Mach you have to use <code>make kernel-<var>DRIVERS</var></code>, where <var>DRIVERS</var> is <code><var>DRIVER</var>+<var>DRIVER</var>+...+<var>DRIVER</var></code> (a list of drivers separated by `+`). <var>DRIVER</var> can be one of: + +* `ide` +* `floppy` +* <code>ethernet\_<var>ETHDRV</var></code> where <var>ETHDRV</var> is taken from `oskit/oskit/dev/linux_ethernet.h`. +* <code>scsi\_<var>SCSIDRV</var></code> where <var>SCSIDRV</var> is taken from `oskit/oskit/dev/linux_scsi.h`. + +Thus, to build a IDE capable kernel with 3Com Vortex Boomerang support you use the following: + + $ make kernel-ide+ethernet_vortex + $ sudo make install + $ sudo gzip -f /gnu/boot/oskit-mach + +If the `make` command complains about missing dependencies, then you haven't passed correct `OSKIT_LIBDIR` variable to the `configure` script. Or you can use the patch below and pass something like `--with-oskit=/usr/local` to `configure`. + +Comment: Barry deFreese + +If you receive an error like `No rule to make target Kernel-ide...`, there is a patch for an issue with finding the oskit libraries. Then run `configure` on gnumach again with the option `--with-oskit=/path/to/oskit/libraries`. + +The patch can be found here: [gnumach-oskit-path.patch](http://www.vis.ethz.ch/~wagi/hurd/gnumach/gnumach-oskit-path.patch) Thanks wagi!! + +Don't use both `--with-oskit` and `OSKIT_LIBDIR`. Choose one of these methods. + +If you want to use tftp to download the kernel from Grub and don't care about the symbols I recommend either stripping or removing the `--enable-debug` and `-g` statements. + +## <a name="Debugging"> Debugging </a> + +See the [[Mach/RemoteDebugOskitMach]] page. + +## <a name="Attachments"> Attachments </a> + +* [[ATTACHURLmodulesx86pc]]: Configures modules to build in OSKit. +> Compared to 21May04 CVS, this adds SMP but omits the random module which was added to CVS in Jan03. + +* [[ATTACHURLmodules-lightx86pc]]: Lighter version of required modules. Used for building GNUmach with OSKit, i.e. OSKit/Mach. +> Compared to the above config, this omits the Linux, MSDOS, +> +> NetBoot, and PXE loader support, bootp support, OSKit on UNIX support, some thread-safe library versions, the address map manager, fsread, fsnamespace/\{fsn,fsn\_r\}, fudp, memdebug, memfs, smp, POSIX threads, svm, uvm, the Simple Process Library, realtime support, FreeBSD devices and code, linux/fs, the UDP library, **the sets of x86 and UNIX example kernels**, the testsuite, and the security server. **The new random module is also not configured.** diff --git a/Mach/GNUMach.mdwn b/Mach/GNUMach.mdwn new file mode 100644 index 00000000..f0134a8d --- /dev/null +++ b/Mach/GNUMach.mdwn @@ -0,0 +1,48 @@ +# <a name="Table_of_Contents"> Table of Contents </a> + +%TOC% + +# <a name="Introduction_to_GNU_Mach"> </a> Introduction to GNU Mach + +GNU Mach is the microkernel of the GNU system. A microkernel provides only a limited functionality, just enough abstraction on top of the hardware to run the rest of the operating system in user space. The GNU Hurd servers and the GNU C library implement the POSIX compatible base of the GNU system on top of the microkernel architecture provided by Mach. + +Currently, GNU Mach runs on IA32 machines. GNU Mach should, and probably will, be ported to other hardware architectures in the future. Mach was ported to many operating systems in the past. + +GNU Mach is maintained by the Hurd developers for the GNU project. If you need help with GNU Mach or want to contribute to the development of the microkernel, you should [contact the Hurd people](http://www.gnu.org/software/hurd/help.html). + +For another view, please see the [Wikipedia Mach kernel entry](http://www.wikipedia.com/wiki/Mach+kernel) -- [[Main/GrantBow]] - 02 Jun 2002 + +# <a name="Advantages_of_GNU_Mach"> </a> Advantages of GNU Mach + +GNU Mach is not the most advanced microkernel known to the planet, nor is it the fastest or smallest, but it has a rich set of interfaces and some features which make it useful as the base of the Hurd system. + +<dl> + <dt><b>it's free software</b></dt> + <dd> Anybody can use, modify, and redistribute it under the terms of the <a href="http://www.gnu.org/copyleft/gpl.html" target="_top">GNU General Public License (GPL)</a>.it's built to survive As a microkernel, GNU Mach doesn't implement a lot of the features commonly found in an operating system, but only the bare minimum that is required to implement a full operating system on top of it. This means that a lot of the operating system code is maintained outside of GNU Mach, and while this code may go through a complete redesign, the code of the microkernel can remain comparatively stable. </dd> + <dt><b>it's scalable</b></dt> + <dd> Mach is particularly well suited for SMP and network cluster techniques. Thread support is provided at the kernel level, and the kernel itself takes advantage of that. Network transparency at the IPC level makes resources of the system available across machine boundaries (with NORMA IPC, currently not available in GNU Mach). </dd> + <dt><b>it exists</b></dt> + <dd> The Mach microkernel is real software that works Right Now. It is not a research or a proposal. You don't have to wait at all before you can start using and developing it. Mach has been used in many operating systems in the past, usually as the base for a single UNIX server. In the GNU system, Mach is the base of a functional multi-server operating system, the Hurd. </dd> +</dl> + +# <a name="Status_of_the_project"> Status of the project </a> + +GNU Mach is used as the default microkernel in the GNU/Hurd system. It is compatible with other popular Mach distributions. The device drivers for block devices and network cards are taken from Linux 2.0.x kernel versions, and so a broad range of common hardware is supported. + +However, the Linux device drivers have been improved greatly since the 2.0.x version, and a new version of Mach based on the OSKit library is being worked on, which uses newer drivers and in general has cleaner machine specific support code. + +---- + +Copyright (C) 2001, 2002 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA + +Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. + +-- [[Main/JoachimNilsson]] - 13 May 2002 + +A unique advantage is being able to run a [Neighbor Hurd](http://www.gnu.org/software/hurd/howto/subhurd.html). + +-- [[Main/GrantBow]] - 28 Sep 2002 + +I don't want to refactor this content as it's a Verbatim copy. However I want to add that GNUMach 1.3 uses Linux drivers as of the Linux kernel version 2.0.36. + +-- [[Main/GrantBow]] - 09 Oct 2002 diff --git a/Mach/GNUMachRevivalProject.mdwn b/Mach/GNUMachRevivalProject.mdwn new file mode 100644 index 00000000..b04b695f --- /dev/null +++ b/Mach/GNUMachRevivalProject.mdwn @@ -0,0 +1,51 @@ +## <a name="GNU_Mach_Revival_Project"> </a> GNU Mach Revival Project + +This page is a place to keep track of all those things that we need to improve in GNU Mach, so that it is a reliable microkernel for The Hurd, both in terms of stability and performance. If you find anything missing here, please feel free to add a entry with a short description. + +If you want to help with any of the task (thanks!), please send a mail to the mailing list <http://www.gnu.org/software/hurd/help.html#TOCmail> stating what task you wish to work on, so that no duplicate efforts end up. + +**_Task List_** + +* Clean up the Code. (Assigned to: **Team Leader:** _Gianluca Guida (gianluca)_, **Hackers:** _Alfredo Beaumont (abeaumont)_, _Pedro J. Ruiz Lopez (holzplatten)_, _Matheus Morais (xsun)_, _We need **YOU** here!_) + * Remove all dead files from the GNU Mach source tree. + * Restructure the tree in a sane way. + * Remove dead functions/variables/etc from source files. + * Rewrite ugly code. + +* Update the core architecture and drivers. (Assigned to: **Team Leader:** _Gianluca Guida (gianluca)_, **Hackers:** _Alfredo Beaumont (abeaumont)_, _Sergio Lopez (koro)_, _Pedro J. Ruiz Lopez (holzplatten)_, _We need **YOU** here!_) + * Check what NetBSD, FreeBSD and Linux do with their host specific code (i486, PPC, Sparc, ...). And if it might be wise to take that and use it in GNU Mach. There is no need to worry about purely internal API's, but the external ones shouldn't require any major changes. + * Write a list of all functions provided by the host dependant code in GNU Mach that gets used in the non-host specific code (kernel, IPC and VM). + * Once we have decided what the new internal API should look like, make a list of the new API and the old one, and try to make things as compatible as possible, but not at the expense of anything. + +* Implement Migrating Threads. (Assigned to: _Sergio Lopez (koro)_) + * Migrating Threads (MT) could improve IPC performance and making easier the work of the scheduler. For more information, check this <http://www.usenix.org/publications/library/proceedings/sf94/ford.html> + +* Improve the external pagers interface. (Assigned to: _We need **YOU** here!_) + * Making this interface synchronous should improve I/O performance significantly, without (almost) any drawbacks (we also get some advantage from MT's). + * Implement more paging eviction policies, so they fit better with usual behaviour of the pagers. + * Implement resource accounting for external pagers. + +* VM. (Assigned to: _We need **YOU** here!_) + * Put it on user level (?) + * Clean up the mess. + * Provide a fast way to read/write from/to a memory object. + * Simplify/normalise the code. + +* Simplify the IPC Semantics. (Assigned to: _We need **YOU** here!_) + * There are a lot of things in GNU Mach's IPC that we don't need. Track down those things, and get rid of them without requiring many changes in the Hurd (the changes will affect MiG, but that is OK). + +* Temporary mappings for Client-Server memory transfers. (Assigned to: _We need **YOU** here!_) + * Extend Mach's IPC to provide some kind of object which can represent a range of memory that can temporarily be mapped into the servers address space for sending/receiving data. This would allow us to avoid excessive memory copies. + * Find a new way to work with unaligned memory. + +* GDB remote debugging support (Assigned to: _Alfred M. Szmidt (ams)_) + * Implement support for GDB debugging via serial line and/or network. Maybe this can be done together with the host-specific work above. + +**_Wish List_** + +* Interface for userspace non-critical drivers. +* Sound Support ;-) +* WLAN support (ipw2200) with WEP/WPA +* ACPI support + +-- [[Main/SergioLopez]] - 20 Dec 2005 (Corrections by Alfred M. Szmidt) diff --git a/Mach/MachConcepts.mdwn b/Mach/MachConcepts.mdwn new file mode 100644 index 00000000..b691a119 --- /dev/null +++ b/Mach/MachConcepts.mdwn @@ -0,0 +1,67 @@ +## <a name="Table_Of_Contents"> Table Of Contents </a> + +%TOC% + +A GNU Mach system consists of many _tasks_. You can think Mach tasks as \*nix processes but they are not the same. In processes there are signals, process/group/session IDs, file descriptors and many other things. Tasks are used for resource allocation and sharing. They are _resource containers_. + +## <a name="Execution_time"> Execution time </a> + +Tasks themselves don't spend execution time. The active entities in Mach are called _threads_ (points of execution). Each thread belongs to one and only one task and runs concurrently with all the other threads of a system. Tasks are resource environments (address space and communication channels) for threads. + +Using threads is much more cheaper than using \*nix processes. Switching between threads in one task change processor registers' state but switching between threads in different tasks involves context switching (changing resource environment) which is slow on most computer architectures. + +In a general case, two threads of one task are able to run on two different _processors_ simultaneously. That's the way Mach is designed. (Note that you can't play with the SMP support in GNU Mach yet.) Mach organizes processors into _processor sets_. A thread can be assigned to a processor set in order to be executed in any of the processors in the processor set. Of course, it is expected that all the processors in a processor set use shared memory. There is an optional and experimental support for building _multicomputers_ build from _nodes_. + +Threads have scheduling parameters and contain various statistics about them. + +## <a name="Address_space"> Address space </a> + +_Address space_ in Mach defines the valid addresses that can be used by threads in the task that owns that address space. Each task has only one address space and each address space belongs to only one task. So when we want to name an address space (e.g. in the Mach API) we name it by the task it belongs to. + +Address space is divided into _pages_. Each page has individual properties like _access rights_ (read/write/execute), _inheritance attributes_ (no inheritance/copy/share) and some other system properties discussed later. Page manipulation is optimized to help moving large blocks of data from one address space to another (read: from a thread of task A to a thread of task B; further read: client/server technology). + +Memory ranges of pages that can be controlled as a whole are called _memory objects_. The physical memory is conceived as a _memory cache_ that contains _memory cache objects_. So when a thread accesses a page in its task's address space, the memory object that includes this page is cached in the memory cache. Memory objects are paged out and paged in by _memory managers_ that can be user tasks. The decision when they should be paged in or paged out is left to Mach. Each memory object has an ordered list of memory managers that provide paging. The last one tried is the default memory manager that resides in the microkernel. The others are generally user tasks. The default memory manager is needed because the microkernel can't wait infinitely someone else to free the memory cache: it just calls the next memory manager hoping it to succeed. + +As an example, `mmap` POSIX interface (it maps file content to a memory region thus "loading" a file in no time) can be implemented by assigning a special memory manager to a memory range. When a thread accesses a page in that region, our custom memory manager can load the corresponding block of the file. + +_Wired pages_ are those that cannot be paged out. For example, Mach itself is a task with its own address space and threads, and all of its pages are wired. + +_Precious pages_ are those that must not be discarded silently when they are clean and memory is needed. For example, a memory manager that shares memory across a network could not restore a page if it is silently discarded because it is unmodified. This is not valid for the well-known pager managers that use disks as backing store. + +## <a name="Communication_channels"> Communication channels </a> + +_Communication channels_ in Mach are called _ports_. They can be compared with **nix system calls but have \*much** richer semantics and are ubiquitous in a Mach environment. In the Hurd, ports are used as _object references_. Hurd programs use these object references only by calling _methods_ defined in interface files (`.defs` files). + +Ports themselves are queues of _messages_. There can be multiple senders and only one receiver of these messages -- ports are unidirectional communication channels. To send or receive a message a task must have corresponding _port right_ to the port. (Of course, a task can't execute code, it is the threads within it that do that.) Mach knows what port rights belong to each task but threads in tasks refer to ports by _port names_. They are integer numbers that form the _port name space_ of task. Ports are automatically destroyed when there is no associated port right to them. + +So, the picture is that after obtaining a _port send right_, the client uses a port name to send messages to the port. They are (probably) queued and when the server task tries to receive messages using its _port receive right_ it gets the message(s). + +Messages are not only opaque data. They can contain port rights to be passed to another task. Port rights are copied or moved. Notice that port receive right must be moved but not copied because there can't be more than one task that hold receive right to a port. The receiving task creates a new port name to the port right received. + +Some data in the message can be _out-of-line data_. In the message they are references to memory regions which are _virtually copied_. When the message is received in a task these virtual copies become part of the address space of the task. "Virtual copy" means that it is not copied immediately but when it is changed. This is primarily used to send large blocks of data efficiently because it is too expensive to store them in the kernel address space. + +The ability to send port rights to other tasks can be used to easily implement remote procedure calls (RPC) with return results and in/out arguments by sending a port right to which the result have to be returned. This is called _reply port_ and it is usually referred by tasks with _send-once port right_. These port rights allow only one message to be send and after that the port right is immediately destroyed. + +All these facilites are used by the _Mach Interface Generator (Mig)_ to provide easy RPC for Mach tasks. Procedure definitions are described in `.defs` files using a Mig-specific Interface Definition Languager (IDL). Then they are compiled by Mig to C stubs and skeletons that have to be compiled and linked to client and server programs respectively. After that client programs call remote procedures more or less like any other C function. These functions are implemented in the stubs and encode arguments into message (_marshalling_), wait for result on a newly created reply port, decode return arguments from the reply message (_unmarshalling_) and pass them to the client program. Similar actions are provided in the skeletons that are linked to server programs. Mig allows very precise semantics to be specified about what the arguments are and how to be passed. Unfortunately Mig can generate only C code. + +When server task have to listen to a large number of ports using receive rights it can organize them into _port sets_. Port set look like port receive right but cannot be passed to another task and there are additional operations for including and excluding port receive rights. Waiting for a message from a port set waits all ports in the port set and returns exactly one message from randomly selected port that have message(s) in its queue. This is the only use of port sets. + +Ports are kernel-protected resources. There is no way for a task to do anything with a port unless it have corresponding port right. Remember that threads do not deal with port rights directly -- they use port names which refer to port right in a task. The delivery of messages is reliable and strictly ordered -- when a thread sends messages 1 and 2 it is guaranteed that the receiving task will catch them in the same order (but there can be intermediate messages send by other threads). + +**Controlling tasks, their address space, threads and other system objects** in Mach is implemented by using ports. Almost all of the Mach API (creating threads, etc) is implemented by sending messages to ports. **Device drivers** that reside in kernel space are controlled by ports too. In GNU Mach 1.3, these drivers are the Linux 2.0.36 ones. [[OskitMach]] provides more recent drivers. + +Ports abstraction allows RPCs to be executed on another computer transparently. This can be implemented with user task but there is an implementation in the kernel (called _NORMA_, not tested in GNU Mach) that do that. + +More detailed information about GNU Mach interfaces can be found in [The GNU Mach Reference Manual](http://www.gnu.org/software/hurd/gnumach-doc/mach.html). + +-- [[Main/OgnyanKulev]] - 09 Dec 2002 + +Here is a link to some Mach 3 (pre GNU) documents that might be of help circa 1992. + +<http://ftp.cs.cmu.edu/afs/cs/project/mach/public/doc/osf/> + +-- [[Main/GrantBow]] - 16 Dec 2002 + +Convert from XHTML to [[TWiki/TextFormattingRules]] + +-- [[Main/OgnyanKulev]] - 16 Jun 2003 diff --git a/Mach/MachHistory.mdwn b/Mach/MachHistory.mdwn new file mode 100644 index 00000000..d108225b --- /dev/null +++ b/Mach/MachHistory.mdwn @@ -0,0 +1,59 @@ +# <a name="Table_of_Contents"> Table of Contents </a> + +%TOC% + +# <a name="Early_beginnings"> Early beginnings </a> + +Mach has quite a history. Everything actually started at the University of Rochester in 1975. It was invented to demonstrate how operating systems could be built using a modular design where processes communicated using message passing, even across networks. The system was called the Rochester Intelligent Gateway and ran on a 16 bit mini computer called Eclipse from Data General. + +One of the engineers behind the project was Richard Rashid. In 1979 he moved his socks to Carnegie Mellon University to continue his research on message passing operating systems. The result emerged in 1981 and was called Accent. + +Accent kept running at CMU until 1984 but was by then being run over by UNIX. Rashid then decided to use an early embrace strategy and started designing the third generation OS project called Mach. By making Mach compatible with UNIX, Mach was supposed to gain a lot of available UNIX software. + +Mach was a vast improvement over Accent. It incorporated parts commonly used today, such as: threads, better IPC, multiprocessor support and an advanced VM system. + +At the time of Mach's conception, DARPA was seeking a multiprocessor (MP) capable OS and found Mach. With money from the Dept. of Defense, 4.2BSD support was added, to bloat the kernel; but most of all, to add complete UNIX compatibility. + +Now enters the UNIX war. + +UNIX was owned by AT&T which controlled the market almost completely. Industry giants such as IBM, DEC and H got together and formed the Open Software Foundation, OSF. In an effort to conquer market share, OSF took the Mach 2.5 release and made it the OSF/1 system. By that time Mach contained a lot of BSD and AT&T code but the OSF hoped that it would be able to take control of the rudder with OSF/1. What happens after that is a story better told by someone else ... + +In 1989 CMU decided to revamp Mach. They removed the bloat and put the UNIX emulation in user space making the Mach 3.0 release -- the pure Mach release. + +Later on support for Mach 3.0 at CMU vaned and the project was taken over by the University of Utah. The FLUX group started the Mach4 project. An ambitious project which included complete rewrite of the x86 support code and integration of Linux 2.0 drivers. That's right, Linux awoke around 1991 so this makes it apx. 1994. + +# <a name="GNU_Mach_and_OSKit_Mach"> </a> GNU Mach and OSKit-Mach + +GNU Mach is based on Mach4 from University of Utah, which in turn is based on Mach3 from Carnegie-Mellon University. The last release of Mach4 was the [UK22 release](http://www.cs.utah.edu/flux/mach4-i386/html/mach4-UK22.html). + +The OSKit was what evolved when the Mach4 project at University of Utah was dropped. The people involved wanted to reuse the work they had put into Mach in the form of hardware support and drivers. + +The oskit-mach version of GNU Mach was presented in November 1999 by Roland McGrath. <http://mail.gnu.org/pipermail/bug-hurd/1999-November/003554.html> The purpose of the port was to get better hardware support through new drivers and platform code available in the OSKit. + +On May 27 2002, after the Gnumach 1.3 release, Roland McGrath merged OSKit-Mach onto the HEAD of CVS making it the Gnumach 2.x mainline. + +Meanwhile, OSKit became unmaintained, thus posing more of a burden on than being helpful in GNU Mach development. Consequently, as of March 2006, nobody is working on OSKit Mach, or trying to use it. + +In 2005 Gianluca Guida started a different attempt to use the osenv interface with minimal changes to GNU Mach 1.x, thus allowing use of the generic driver interface while importing as little of the umaintained OSKit code as possible. However, there turned out to be serious problems with OSKit, so this attempt was abandoned as well. + +Today, GNU Mach development focuses on the 1.x branch again -- see also [[GNUMachRevivalProject]]. + +# <a name="Status_of_the_project"> Status of the project </a> + +GNU Mach 1.3 was released in May 2002, and features advanced boot script support, support for large disks (>= 10GB) and an improved console. + +GNU Mach is used as the default microkernel in the GNU/Hurd system. It is compatible with other popular Mach distributions. The device drivers for block devices and network cards are taken from Linux 2.0.x kernel versions (plus some backports of more recent drivers), so most newer hardware is not supported. + +As of March 2006 a GNU Mach 1.4 release is planned, focusing on code cleanup. It is meant to serve as a starting point for more radical future changes while maintaining 1.4.x as a stable branch. + +---- + +Copyright (C) 2001 Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA + +Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. + +-- [[Main/JoachimNilsson]] - 24 Oct 2002 + +Apple's Macintosh OSX (OS 10.x) is based on [Darwin](http://www.apple.com/macosx/technologies/darwin.html). _"Darwin uses a monolithic kernel based on [[TWiki/FreeBSD]] 4.4 and the OSF/mk Mach 3."_ Darwin also has a [Kernel Programming](http://developer.apple.com/techpubs/macosx/Darwin/General/KernelProgramming/About/index.html) Book. + +-- [[Main/GrantBow]] - 22 Oct 2002 diff --git a/Mach/MicroKernelFUD.mdwn b/Mach/MicroKernelFUD.mdwn new file mode 100644 index 00000000..1961f6d2 --- /dev/null +++ b/Mach/MicroKernelFUD.mdwn @@ -0,0 +1,33 @@ +# <a name="The_Microkernel_Experiment_is_Go"> The Microkernel Experiment is Going On </a> + +by [Wolfgang J�hrling](mailto:wolfgang AT pro-linux DOT de) and [Jeroen Dekkers](mailto:jeroen AT dekkers DOT cx) + +This article is a response to an [earlier article](http://www.linuxjournal.com/print.php?sid=6105) by Miles Nordin in Linux Journal, where he expressed his personal feelings about microkernels and monolithic kernels. We will try to present a different point of view. Of course, we are also biased, as we are both young hackers who try to turn [the GNU Hurd](http://www.gnu.org/software/hurd/) into a software useful for everyday-work; for those who don't know it (yes, we're abusing this article as an advertisement): The Hurd is a collection of Daemons, currently running on top of the Mach microkernel and providing a replacement for the Unix kernel together with the GNU C Library. + +Miles Nordin claimed that microkernels are dead already. But this is not completely true. The first generation of microkernels, which were in fact no real microkernels, are dead. But there is a new generation, which uses a radically different strategy than the original (so-called) microkernels. Thus, microkernels are still a research topic, and today they look more promising than ever before. By now, this is just something we claim, but read on, and you'll find out why we do so. + +Out of our own experience, we can confirm that the first generation microkernel Mach is quite slow, but being microkernel independent is one of the goals of the Hurd and people are already working on porting the Hurd from Mach to the second generation microkernel L4. Those new second generation kernels aren't as slow as Mach and we think that one should not talk about the performance of microkernel based systems without having read at least some of the papers on L4. The L4 people did some interesting benchmarks, which indicate that one can get a lot of performance by making a microkernel really small. How is this supposed to work? Well, the microkernel provides very primitive, highly optimized operations, and applications use them to implement whichever way of interprocess communication is apropriate for them in an efficient way. By deciding this on a per-case basis, you get optimal performance for all applications. + +But L4 takes this even further. For example, you can have schedulers in userspace. Therefore you can use a scheduler which is optimized for the specific tasks your system performs. With the Linux kernel, different schedulers are only possible by using a different source tree, thus you cannot switch at run-time and/or have different schedulers for different groups of processes. + +Of course, microkernels still have some problems, mainly because we are bound to today's technology, and current processors have not been designed with microkernels in mind. On a processor that is not optimized for systems with monolithic kernels, where the currently still problematic overhead of context switches would vanish, microkernels would get another performance boost. This sounds like an excuse, but it is intended as a reminder about the fact that the problem is not the general concept of microkernels. However, the L4 people have done a lot of good hacks to work around all this and have reached reasonable performance already. + +All this could be discussed in arbitrary detail, but we won't do that now, as we have more urgent things to do than reacting on FUD about microkernels. So we will conclude by saying that it is too easy to claim that one design is fast and the other one is slow, but everything depends on how exactly a system is designed and implemented. Maybe microkernels will eventually turn out to be slower in almost any case; we doubt that, but who knows? But even then, a microkernel based system will offer enough other advantages so that people will prefer to use it in some cases. But on the other hand, history has shown that new concepts seldom replace old ones completely, but rather establish themselfes in addition to the old ones, therefore we will have the opportunity to argue about which concept is best at least for another couple of years.. or decades? + +If you are interested in research about the performance of microkernel based systems, visit <http://www.l4ka.org> and <http://os.inf.tu-dresden.de/L4/> + +---- + +Copyright (C) 2002 Wolfgang J�hrling <br /> Copyright (C) 2002 Jeroen Dekkers + +Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. + +---- + +First appearance in the Hurd wiki. + +-- [[Main/RobertMillan]] - 11 Jun 2002 + +Spelling and grammatical corrections as well as adaptation to TWiki syntax (or lack of specific HTML horror). + +-- [[Main/JoachimNilsson]] - 13 Jun 2002 diff --git a/Mach/MicroKernelResearch.mdwn b/Mach/MicroKernelResearch.mdwn new file mode 100644 index 00000000..4eefe602 --- /dev/null +++ b/Mach/MicroKernelResearch.mdwn @@ -0,0 +1,15 @@ +## <a name="Research"> Research </a> + +Listed here are references to academical research papers related to Micro Kernels. + +* [Networking Performance for Microkernels](http://citeseer.nj.nec.com/maeda92networking.html) (1992) -- An article by Chris Maeda and Brian N. Bershad discussing microkernel optimizations of an UDP driver. + +* [The Increasing Irrelevance of IPC Performance for Microkernel-Based Operating Systems](http://citeseer.nj.nec.com/bershad92increasing.html) (1992) + +* [Linux Device Driver Emulation in Mach](http://citeseer.nj.nec.com/goel96linux.html) (1996) + +* [Microkernels Meet Recursive Virtual Machines](http://citeseer.nj.nec.com/ford96microkernel.html) (1996) + +* [The Flux OS Toolkit: Reusable Components for OS Implementation](http://citeseer.nj.nec.com/ford97flux.html) (1997) + +* [The Flux OSKit: A Substrate for Kernel and Language Research](http://www.cs.utah.edu/flux/papers/oskit-sosp97.html) (1997) diff --git a/Mach/MicroKernelsForBeginners.mdwn b/Mach/MicroKernelsForBeginners.mdwn new file mode 100644 index 00000000..d7ae45c7 --- /dev/null +++ b/Mach/MicroKernelsForBeginners.mdwn @@ -0,0 +1,17 @@ +Think of this as a Wiki Pos^H^H^H Yellow Sticky Note Note + +This page is linked to from Gnufans.Mach.Webhome. I created it for the purpose of creating a 'beginners meta guide to microkernels'. + +Essentially, the rationale is as follows. There are many users of this Wiki who understand microkernels. Many users who come here may want to know more about microkernels, having just heard about them. (I heard years ago, but haven't taken a direct interest in the issues related to them.) + +As a suggestion as to what should go here: + +* Good books to read +* Good websites to visit +* Any easy to read papers concerning the topic + +...you get the idea. + +nb. The above text is intended as a placeholder for actual content, which I cannot supply myself but think should go here. (Rationale is a reverse application of the 'do unto others...', namely I am most likely not the only thinking this and registering the initial suggestion may help as a catalyst to helping others...) + +-- [[Main/JohnAllsup]] - 29 Oct 2003 diff --git a/Mach/OskitMach.mdwn b/Mach/OskitMach.mdwn new file mode 100644 index 00000000..449e8eb8 --- /dev/null +++ b/Mach/OskitMach.mdwn @@ -0,0 +1,56 @@ +## <a name="Table_of_Contents"> Table of Contents </a> + +%TOC% + +## <a name="About"> About </a> + +OSKit-Mach began as a branch of the GNUMach 1.2 kernel, but since the release of GNU Mach 1.3, OSKit-Mach has been merged as the new GNUMach 2.x mainline. The [[Mach/MachHistory]] page tells a more interesting story including other operating systems who use Mach in their kernels. + +GNU Mach 2.0 makes use of the drivers provided by [the OSKit](http://www.cs.utah.edu/flux/oskit/) from [the Flux Research Group](http://www.cs.utah.edu/flux/). The OSKit provided a neat driver base where both [[TWiki/FreeBSD]] and Linux (2.2.12) drivers are made available to [Mach](http://www-2.cs.cmu.edu/afs/cs/project/mach/public/www/mach.html) and thus the Hurd. However, OSKit isn't maintained anymore. + +## <a name="Status"> Status </a> + +The OSKit-Mach version of GNUmach is today (2005) more or less defunct. Nobody is working on it. Few people ever got it running, and by now there are also problems building with recent toolchains. Instead, the Hurd developers now concentrate on completely different microkernels (Coyotos being the current favourite), as well as on improving the original GNU Mach 1.x codebase. (See also [[GNUMachRevivalProject]].) + +The [[Hurd/MailLists]], or the [[Hurd/HurdIRC]] is, like always, the best source of more current information. + +There also exist other efforts: + +* [OSKit and OSKit-Mach PPC Port](http://es.gnu.org/~jemarch/ppc-oskit/) - Maintained by [Jos� Marchesi](mailto:jemarch AT gnu DOT org) + +* [OSKit-Mach Alpha Port](http://savannah.gnu.org/projects/gnumach-alpha/). - This work has been integrated into the actual OSkit cvs tree at utah. + +## <a name="Building"> Building </a> + +First you need to get the latest OSKit release and, preferrably, the latest CVS version of GNUmach. Take a look at the following [tutorial](http://www.etherhogz.org/doc/oskit-mach.html) to get started. Or the locally kept version, [[BuildingOskitMach]]. + +## <a name="Starting"> Starting </a> + +You start Oskit-Mach almost the same way as the old 1.x version of GNUmach. Using [[Hurd/GrubNotes]] an entry can look like this: + + title GNUmach 1.90 (CVS) + root (hd0,1) + kernel /boot/oskit-mach.gz root=device:hd0s2 -- + module /hurd/ext2fs.static \ + --multiboot-command-line=${kernel-command-line} \ + --host-priv-port=${host-port} \ + --device-master-port=${device-port} \ + --exec-server-task=${exec-task} \ + -T typed ${root} $(task-create) $(task-resume) + module /lib/ld.so.1 /hurd/exec $(exec-task=task-create) + +_Remember_ to ensure that there are no trailing spaces after the backslashes on the lines above if you copy-paste this into your menu.list file. + +## <a name="Bugs"> Bugs </a> + +We have bugs, just like any other software product. To get around the more nasty ones you can apply the unofficial patches found on + +* [[OskitMachPatches]] + +## <a name="Debugging"> Debugging </a> + +See Igor Khavkine's, [i\_khavki@alcor.concordiaNOSPAM.ca](mailto:i_khavki@alcor.concordiaNOSPAM.ca), excellent help to [remote debug oskit-mach over a serial line](http://www.etherhogz.org/doc/oskit-boot.txt), or the local [[RemoteDebugOskitMach]]. + +---- + +**_Comments:_** diff --git a/Mach/OskitMachPatches.mdwn b/Mach/OskitMachPatches.mdwn new file mode 100644 index 00000000..c1e1b068 --- /dev/null +++ b/Mach/OskitMachPatches.mdwn @@ -0,0 +1,10 @@ +## <a name="GNUmach2_oskit_mach_Patches"> </a> GNUmach2 (oskit-mach) Patches + +The following patches are here for your convenience only. They are probably not accepted yet and should thus only be used by people working on the bleeding edge of ... oh well, use at your own risk. :-) + +**_Daniel Wagner:_** + +* Fix GNUmach2 panic related to buggy softint handling [[ATTACHURLpatch-gnumach_softint-wagidiffgz]] +* Eliminate GNUmach2 assertion that triggers a bug [[ATTACHURLpatch-gnumach_assertion-wagidiffgz]] + +- [[Main/GrantBow]] - 03 Mar 2004 diff --git a/Mach/OskitMachStatusList.mdwn b/Mach/OskitMachStatusList.mdwn new file mode 100644 index 00000000..f62e0686 --- /dev/null +++ b/Mach/OskitMachStatusList.mdwn @@ -0,0 +1,15 @@ +**NOTE**: As of March 2006, nobody is using or working on OSKit-Mach. Consider below text for historic reference only. + +The only thing that is needed before we will switch to the OSKit-Mach variant of GNU Mach is the missing console: OSKit-Mach has no console in the kernel, so we need an implementation in user space. Marcus Brinkmann is writing a console implementation with a client-server design, Unicode support and lots of other goodies. The server is working, the ncurses client is working (which is useful for testing and results in something similar to screen) and the VGA client is the one missing component. A part of the code for it already exists; it will share some code with the ncurses client via a console-client library. After it works, some testing of OSKit-Mach will also be needed. + +-- [[Main/WolfgangJ]] - 24 Jul 2002 + +There was quite a bit of coding and testing in September as described in several [bug-hurd threads](http://mail.gnu.org/pipermail/bug-hurd/2002-September/thread.html). + +Unfortunately this work still needs to be ported from GNUmach 1.3 (commonly used today) to GNUmach 2.0 (a.k.a OSKit-Mach). + +-- [[Main/GrantBow]] - 07 Oct 2002 + +There should now exist a working console-client for [[OskitMach]] as well. + +-- [[Main/JoachimNilsson]] - 28 Nov 2002 diff --git a/Mach/OskitPatches.mdwn b/Mach/OskitPatches.mdwn new file mode 100644 index 00000000..d189bb6d --- /dev/null +++ b/Mach/OskitPatches.mdwn @@ -0,0 +1,67 @@ +## <a name="Table_of_Contents"> Table of Contents </a> + +%TOC% + +## <a name="Flux_OS_Toolkit"> Flux OS Toolkit </a> + +[The OSKit](http://www.cs.utah.edu/flux/oskit/) is a framework and a set of libraries for building and extending operating systems developed by [the Flux Project](http://www.cs.utah.edu/flux/). + +**_Note:_** All of these patches, and more, are now avilable directly through the [Savannah OSKit](http://savannah.gnu.org/projects/oskit/) project. This is also the recommended source today of the OSKit, especially if you want to use it with GNUmach2. + +## <a name="OSKit_2001_02_14"> </a> OSKit 2001-02-14 + +These are extra patches for people who, for some reason, use the 2001 version of the OSKit. + +* Patrick Tullman [[ATTACHURLpatch-oskit-097-tullmandiffgz]] + +* This patch is necessary to get the `--enable-indirect-osenv` flag to the configure script. The flag is enabled by default for OSKit 2002-03-17 and later. Kevin Kraemer [[ATTACHURLpatch-oskit-097-kkraemerdiffgz]] + +## <a name="OSKit_2002_03_17"> </a> OSKit 2002-03-17 + +**_Critical Patches:_** + +Here are the patches critical to get [[OskitMach]] running. These are absolutely essential to get a working Mach kernel. Many of these patches are included with the Debian distribution of the OSKit. + +* Igor Khavkine [[ATTACHURLpatch-oskit-097-i_khavkidiffgz]] + +* Famous removal of only one line in sbrk-hack.c - needed for people with newer libc's (e.g. Debian Woody) [[ATTACHURLpatch-oskit-097-sbrk_hackdiffgz]] + +* Jonathan S. Arney - Important patch to diskpart library. Without it you cannot activate swap in oskit-mach. [[ATTACHURLpatch-oskit-097-jon_arneydiffgz]] + +* Richard Kreuter's [patches](http://anduril.rutgers.edu/richard/oskit/) ([announcement](ftp://flux.cs.utah.edu/flux/oskit/mail/html/oskit-users/msg01560.html)). Needed when your Hurd partition is embedded inside an extended partition created by Windows. The patches also include: + * support for extended partitions with lba + * support for 16-entry BSD disklabels, as are supported by recent Net- and [[TWiki/FreeBSD]] kernels. + * support for the recognition of NetBSD's slice id (169) in the BIOS partition table. + +**_Cosmetic Patches:_** + +* Kevin Kraemer - Removes annoying debug output from eepro.c driver. [[ATTACHURLpatch-oskit-097-eeprodiffgz]] + +* Ognyan Kulev - Reduce warnings when compiling with GCC 3.2. <http://debian.fmi.uni-sofia.bg/~ogi/hurd/oskit/> + +**_New Functionality:_** + +* [Roland McGrath](http://www.frob.com/) - [i8042 support](http://mail.gnu.org/archive/html/bug-hurd/2002-10/msg00146.html). Thread continues at <http://mail.gnu.org/archive/html/bug-hurd/2002-11/msg00110.html> + +* Daniel Wagner - PCMCIA support. <http://www.vis.ethz.ch/~wagi/hurd/oskit/> ([instructions](http://www.vis.ethz.ch/~wagi/hurd/oskit/readme.txt)) + +* [[Main/JoachimNilsson]] - See [[Hurd/JoachimNilssonHurdPage]] + * Upgrade to Linux 2.2.22 drivers + * More Linux NIC drivers + * **_Soon:_** ATA-100 patches (α-release available) + +* [[Main/DerekDavies]] - [OSKit Entropy patch](http://www.ddavies.net/oskit-entropy/). A Linux entropy driver, see [bug-hurd posting](http://mail.gnu.org/archive/html/bug-hurd/2003-01/msg00000.html) for more information. + +---- + +## <a name="Comments"> Comments </a> + +Divided this growing topic into sections. <br /> -- [[Main/JoachimNilsson]] 19 Nov 2002 + +Updates by [[Main/OgnyanKulev]] -- 19 Nov 2002 + +All small patches are as attachments now. -- [[Main/OgnyanKulev]] - 16 Dec 2002 + +Minor updates, also, added Davids Entropy patch -- [[Main/JoachimNilsson]] - 03 Jan 2003 + +Fixed some gnu mail links -- [[Main/MattGrant]] - 26 Feb 2003 diff --git a/Mach/PortToL4.mdwn b/Mach/PortToL4.mdwn new file mode 100644 index 00000000..fb7f0004 --- /dev/null +++ b/Mach/PortToL4.mdwn @@ -0,0 +1,42 @@ +**_The Hurd-L4 port has an [official page](http://www.gnu.org/software/hurd/hurd-l4.html) with more up-to-date information_** -- [[Main/OgnyanKulev]] - 05 Feb 2005 + +A group of one being led by Neal H. Walfield is working on porting the Hurd to the pistachio version of the L4 microkernel. This second generation microkernel provides a significantly different API than the one offered by the Mach microkernel, a first generation microkernel. One of the primary goals of the project, outside of porting the Hurd to L4, is to reevaluate the current Hurd abstractions and consider how they can be modified to be more general. + +I have no web page describing my efforts. There is a mailing list[1]. + +[1] <http://mail.gnu.org/mailman/listinfo/l4-hurd> + +-- Neal Walfield, 18 Sep 2002 + +Neal noted [1] that there are licensing issues being worked out so no code is yet released. His work was performed in the summer of 2002 at Karlsruhe. + +[1] <http://mail.gnu.org/pipermail/l4-hurd/2002-September/000673.html> + +-- [[Main/GrantBow]] - 21 Sep 2002 + +There are several important pages that are of interest for the L4 & hurd communities. + +* Main L4 home page - <http://www.l4ka.org/> +* Hurd on L4 - <http://www.freesoftware.fsf.org/l4hurd/> +* Hurd on L4 - <http://savannah.gnu.org/projects/l4hurd/> +* <http://www.informatik.uni-freiburg.de/~ganter/comp/l4-hurd.html> + +-- [[Main/GrantBow]] - 22 May 2002 + +<http://os.inf.tu-dresden.de/fiasco/> + +-- [[Main/GrantBow]] - 24 Oct 2002 + +There was [discussion in October 2002](http://mail.gnu.org/pipermail/l4-hurd/2002-October/000727.html) about the differences between Hurd on Mach and Hurd on L4 with some interesting URLs. In the thread Okuji [responds](http://mail.gnu.org/pipermail/l4-hurd/2002-October/000728.html) confirming his document is two years old and outdated by the directions that Neal is taking in furthering this effort. The URLs in that email might be helpful to those learning more about Hurd and L4 ideas that were considered yet abandoned. + +-- [[Main/GrantBow]] - 04 Jan 2003 + +A "Porting GNU Hurd to L4" website: + +* <http://www.gnu.org/software/hurd/l4-hurd.html> + +-- [[Main/SebastianGabriel]] - 29 Sep 2003 + +The only valid L4-Hurd link on <http://hurd.gnu.org> is <http://www.freesoftware.fsf.org/l4hurd/> + +-- [[Main/JoachimNilsson]] - 29 Sep 2003 diff --git a/Mach/PosixSemaphores.mdwn b/Mach/PosixSemaphores.mdwn new file mode 100644 index 00000000..be5586bd --- /dev/null +++ b/Mach/PosixSemaphores.mdwn @@ -0,0 +1,13 @@ +Posix Semaphores are an optional part of pthreads. There is currently an implementation for Neal Walfields libpthread, which is included in the hurd sources tree. This implemention uses a mutex and a condition variable. The implmentation is in the mailing list archives at [ [http://mail.gnu.org/archive/html/bug-hurd/2002-11/msg00316.html](http://mail.gnu.org/archive/html/bug-hurd/2002-11/msg00316.html</a>)](http://mail.gnu.org/archive/html/bug-hurd/2002-11/msg00316.html). + +Neal does not want to use this implementation because it adds the overhead of a condition variable. The condition variable imposes the following penalties: 1 extra spinlock/unlock 1 an extra call to a pthread cleanup function. + +The first penalty has virtually no cost because we know that we will never spin trying to get this spin lock because we already have a mutex lock outside the condition variable serializing accesses to the condition variable. + +The second may be more of a performance penalty, but it saves reimplmenting the code in pt-cond-signal.c pt-cond-wait.c, and pthread-timedwait.c . + +-- [[Main/JamesAMorrison]] - 19 Jan 2003 + +Moved page to Mach web. + +-- [[Main/GrantBow]] - 21 Jan 2003 diff --git a/Mach/RemoteDebugOskitMach.mdwn b/Mach/RemoteDebugOskitMach.mdwn new file mode 100644 index 00000000..c260ce25 --- /dev/null +++ b/Mach/RemoteDebugOskitMach.mdwn @@ -0,0 +1,195 @@ +# <a name="Remote_Debug_GNUmach"> </a> Remote Debug GNUmach + +# <a name="Table_of_Contents"> Table of Contents </a> + +%TOC% + +# <a name="Booting_oskit_mach_with_a_serial"> Booting oskit-mach with a serial console </a> + +**Original Author:** Igor Khavkine **Last Updated:** Mon Jul 30 17:58:55 EDT 2001 + +---- + +## <a name="Introduction"> Introduction </a> + +This document now has a wider audience. The OSKit branch of GNUmach has been merged with the main branch, HEAD. Please note that the instructions here are not tested with the latest stable release, GNUmach 1.3. + +Here you will find out how to access, build, bootstrap and debug the latest CVS version of the GNUmach kernel (the OSKit based 2.x series of GNUmach). + +## <a name="Why_"> Why? </a> + +Because it's covenient. If you have a second computer, but not a second monitor or keyboard, you can connect your second box to your main one using null-modem serial cables. Once that is done, you can configure the GRUB bootloader to use the serial port when starting up and boot [GNUmach](http://savannah.gnu.org/cgi-bin/viewcvs/hurd/gnumach/?only_with_tag=HEAD) (a.k.a [[OskitMach]]) without having to switch monitor cables or type blindly at a second keyboard. + +Also, [[OskitMach]] supports the GDB remote debugging protocol over a serial line. This way it is now possible to debug the running kernel relatively unobtrusively, because the debugger will not be running on the same machine. + +## <a name="How_"> How? </a> + +First you need some equipment: two computers, each one should have at least one (two is preferable) free serial port(s) and one (or two) null-modem serial cable(s). + +While developing the kernel it might also be a good idea to use grub to get the Mach kernel via tftp from the same server you do the remote debugging and building on. This way you don't need to reboot the target to copy or build a new kernel on its hard drive. See the [[AdvancedGrubUsage]] document for more information on this. + +Last you need to follow the instructions given below. + +1. The first step is to the get source for oskit-mach and OSKit. + Currently the [St. Patrick's day release](ftp://flux.cs.utah.edu/flux/oskit/oskit-20020317.tar.gz), 2002-03-17, of the OSKit is the latest. Get the sources and compile them yourself, compile OSKit with debugging symbols if that is what you need. If you encounter errors while compiling, try removing anything that has to do with `unix` or `examples` from the file `modules.x86.pc`. + Then you need to get the sources for oskit-mach version of the GNU Mach kernel, available from the GNU CVS repository[3]. Previously you needed to check out the `gnumach` module with the flag `-roskit-branch`. Today the 2.0 branch of GNU Mach resides on the HEAD branch, so you don't have to provide any specifc branch information to get the correct version. Use the update command with `-rHEAD` to move from the oskit-branch to the HEAD branch. + Again now is your chance to compile oskit-mach with debugging symbols. + (More detailed instructions can be found in [[BuildingOskitMach]].) +2. Now you need to setup GRUB on your second box so it accepts input from a serial port while booting up. This is simple to do by adding the following lines to your `menu.lst` file, before any of the menu entries: + serial --unit=0 --speed=9600 + terminal serial + Unit refers to the serial port you wish to use (0 is COM1), and speed is optional. For more information see the GRUB documentation. +3. You need to make sure that your main box has the necessary utilities to communicate with your second box over a serial line. You can use a terminal emulator like _minicom_(1), _seyon_(1), _tip_(1), or a simple serial communication program _cu_(1) which comes with the GNU uucp package. Or if you feel really lazy you can use this hack: + stty raw + cat > /dev/ttyS1 # in one terminal window + cat /dev/ttyS1 # in a second terminal window +4. Now you have to make sure your computer has an at least partially setup Hurd partition. You can find instructions how to do that here [4,5]. Copy the oskit-mach kernel binary compressed with gzip to `/boot/oskit-mach.gz` and use the following command line[1] to boot it from GRUB: + kernel /boot/oskit-mach.gz -h CONS_COM=1 -d GDB_COM=2 BAUD=9600 root=device:hd0s2 -- +<dl> + <p> + </p> + <dt><tt>-h</tt></dt> + <dd>use serial console:<ul> + <li><tt>CONS_COM=1</tt> (COM1)</li> + <li><tt>CONS_COM=2</tt> (COM2)</li> + <li><tt>CONS_COM=3</tt> (COM3)</li> + <li><tt>CONS_COM=4</tt> (COM4)</li> + </ul> + </dd> + <p> + </p> + <dt><tt>-d</tt></dt> + <dd>enable serial port debugging, optional</dd> + <p> + </p> + <dt><tt>GDB_COM=2</tt></dt> + <dd>use a different port other then <tt>CONS_COM</tt>, default is to use the same as <tt>CONS_COM</tt></dd> + <p> + </p> + <dt><tt>BAUD=9600</tt></dt> + <dd>use this baud rate, optional, default is 9600</dd> + <p> + </p> + <dt><tt>--</tt></dt> + <dd>delimits the arguments passed to the oskit from those to the kernel</dd> + <p> + </p> + <dt><tt>root=device:hd0s2</tt></dt> + <dd>tell gnumach which is your root partition, in this case it's <tt>hd0s2</tt></dd> + <p> + </p> +</dl> +5. Now I suggest that you familiarize yourself with [the GDB documentation](http://vmlinux.org/doc/gdb/), especially on remote debugging. If you pass the `-d` boot flag to oskit-mach, then it will automatically insert a breakpoint at main() and wait for further instructions from GDB over the serial line. Here's a simple example of how to attach GDB to a remote target over a serial line: + $ script # record the debugging session + $ gdb # assume you're in the oskit-mach build dir. + (gdb) file kernel + (gdb) set remotebaud 9600 + (gdb) target remote /dev/ttyS1 + [...gdb attached, blah, blah, blah...] + (gdb) break panic + (gdb) continue + (gdb) continue + [...] + (gdb) quit + $ ^D # finish recording the session + This way you can catch any kernel panics (except for the really nasty ones and try to debug them). + I've noticed that once Mach is running under GDB, pressing C-c from GDB will not suspend it, this makes it hard to set additional breakpoints after the kernel is running. So optionally you can modify Mach to add a dummy system call that will be used only for setting breakpoints, and make a small program that calls it, you can use it whenever you want to pause the kernel and examine something under GDB. An example of how to do this is attached in Appendix A. + +TODO: OSKit overrides interrupts 1 and 3 in kern/x86/gate\_init.c:gate\_init. A patch that skips src->vector `= 1 || =` 3 have to be prepared and attached to this page. More robust solution is to make OSKit/GNUMach recognize when it's debugged and change vector table accordingly. + +Now you're all set to do some serious kernel hacking. I hope more people will take advantage of this opportunity. + +## <a name="Appendix_A"> Appendix A </a> + +TODO: Move inline diff and code into 2 attached files: one for patching GNU Mach, and one for gdb-break.c. + +Apply this patch to oskit-mach to add a dummy system call: + + --- gdb-stub.diff --- + Index: kern/syscall_sw.c + =================================================================== + RCS file: /cvs/gnumach/kern/syscall_sw.c,v + retrieving revision 1.1.1.1.2.2 + diff -u -r1.1.1.1.2.2 syscall_sw.c + --- kern/syscall_sw.c 2001/04/05 06:52:47 1.1.1.1.2.2 + +++ kern/syscall_sw.c 2001/07/30 21:45:14 + @@ -98,6 +98,8 @@ + extern kern_return_t syscall_fipc_recv(); + #endif /* FIPC */ + + +/*XXX*/extern kern_return_t gdb_break_stub (); + + + mach_trap_t mach_trap_table[] = { + MACH_TRAP(kern_invalid, 0), /* 0 */ /* Unix */ + MACH_TRAP(kern_invalid, 0), /* 1 */ /* Unix */ + @@ -283,7 +285,14 @@ + MACH_TRAP(kern_invalid, 0), /* 126 */ + MACH_TRAP(kern_invalid, 0), /* 127 */ + MACH_TRAP(kern_invalid, 0), /* 128 */ + - MACH_TRAP(kern_invalid, 0), /* 129 */ + + MACH_TRAP(gdb_break_stub, 1), /* 129 */ + }; + + +volatile int gdb_break_stub (void *addr) /*XXX*/ + +{ + + void *dummy; + + dummy = addr; + + return 0; + +} + + + int mach_trap_count = (sizeof(mach_trap_table) / sizeof(mach_trap_table[0])); + --- end --- + +When starting an oskit-mach debug session with GDB set a break point at `gdb_break_stub`. Then use this program to invoke the system call when desired: + + --- gdb-break.c --- + /* Compile with: gcc -o gdb-break gdb-break.c gdb-break-stub.S */ + + #include <mach.h> + + #include <stdio.h> + #include <string.h> + + extern int gdb_break_stub (void *addr); + + int main () + { + kern_return_t err; + + err = gdb_break_stub (&main); + printf ("result from syscall: %s\n", strerror(err)); + + return 0; + } + --- end --- + --- gdb-break-stub.S --- + #include <mach/syscall_sw.h> + + kernel_trap(gdb_break_stub,-129,1) + --- end --- + +## <a name="References"> References </a> + +* [1] OSKit documentation, section 1.6.3. +* [2] <http://www.cs.utah.edu/flux/oskit/> +* [3] <http://www.gnu.org/software/devel.html> +* [4] <http://www.walfield.org/papers/hurd-installation-guide/> +* [5] <http://www.pick.ucam.org/~mcv21/hurd.html> + + vim:ts=8:tw=72:sw=8: + +---- + +This HowTo is (C) Copyright 2001 Igor Khavkine. + +Minor additions and grammatical fixups by [[JoachimNilsson]]. + +-- [[Main/JoachimNilsson]] - 14 May 2002 + +Additions on booting GNU Mach via TFTP + +-- [[Main/JoachimNilsson]] - 13 Jun 2002 + +Text formatting. + +-- [[Main/OgnyanKulev]] - 16 Dec 2002 diff --git a/Mach/UsefulOskitPatches.mdwn b/Mach/UsefulOskitPatches.mdwn new file mode 100644 index 00000000..6718610c --- /dev/null +++ b/Mach/UsefulOskitPatches.mdwn @@ -0,0 +1,3 @@ +This page has been moved to [[OskitPatches]]. + +-- [[Main/JoachimNilsson]] - 08 Jan 2003 diff --git a/Mach/WebChanges.mdwn b/Mach/WebChanges.mdwn new file mode 100644 index 00000000..de565147 --- /dev/null +++ b/Mach/WebChanges.mdwn @@ -0,0 +1 @@ +%INCLUDE\{"%TWIKIWEB%.WebChanges"\}% diff --git a/Mach/WebDiscuss.mdwn b/Mach/WebDiscuss.mdwn new file mode 100644 index 00000000..589e302d --- /dev/null +++ b/Mach/WebDiscuss.mdwn @@ -0,0 +1,23 @@ +## <a name="Maintenance_of_the_Mach_web"> Maintenance of the Mach web </a> + +**_Old discussions:_** [[WIKIHOMEURLMachTOPICrev13]] + +Interesting, for consistency sake I'll think about making your changes you made on the right hand side to the other web WebHome pages. I guess it's not critical that they are identical, but I was trying to keep them identical if possible. I also wanted it to be "light" enough feature wise that it doesn't overpower the page. You've added back a few of the features, so we obviously differ in how important you and I think these features are. That's OK, I'll think about it some more and we'll see what happens. + +Oh, I see you added back [[WebTopicList]] and [[WebPreferences]]. I purposely removed [[WebPreferences]] from the lists on the right because it has nothing to do with navigation. I also didn't think that people actually use topic names to navigate. If they do they could search for them. Keeping the number to four items instead of six and keeping the descriptions concise makes a big difference when I view the page. + +(goes off to think more...) + +and eat... ;-) + +-- [[Main/GrantBow]] - 29 Dec 2002 + +**_Reasons for my change:_** + +1. [[WebTopicList]] is a lot quicker than the [[WebIndex]] - brings down the load times and the load of the server +2. [[WebPreferences]] - users might be curious to see what can be modified. Changes should of course only be made in their home topics, like in %WIKIUSERNAME%. However, the [[WebPreferences]] can serve as an inspiration. Therefore we should perhaps make sure only the [[Main/TWikiAdminGroup]] members can alter the \*Preferences topics. +3. If you look closely I've also reordered the links. Shorter names first and long ones last, I tried to keep the descriptions brief and in proportional length as well. + +I don't know about you, but keeping the number of items to four rather than six doesn't really matter to me. The text is quite small and if it's the space we're after the [[WebStatistics]] does take up more than the navigation links. + +-- [[Main/JoachimNilsson]] - 29 Dec 2002 diff --git a/Mach/WebHome.mdwn b/Mach/WebHome.mdwn new file mode 100644 index 00000000..3b98c70c --- /dev/null +++ b/Mach/WebHome.mdwn @@ -0,0 +1,123 @@ +## <a name="GNU_Mach"> </a> GNU Mach + +<form action="%SCRIPTURLPATH%/search%SCRIPTSUFFIX%/%WEB%/"> + <table> + <tr> + <td valign="top" width="65%"> This web deals with the Mach micro kernel, the base for the Hurd servers which makes out the GNU operating system. This is also the logical place for any other future microkernel, like <a href="http://www.l4ka.org" target="_top">L4</a> for instance. <p> Feel free to add relevant content. </p> + <p><strong><em>Table of Contents:</em></strong></p> + <p> + </p> + <ul> + <li>[[MachHistory]]: History of Mach </li> + </ul> + <p> + </p> + <ul> + <li>[[MachConcepts]]: <a href="http://www.dina.dk/~abraham/Linus_vs_Tanenbaum.html" target="_top">Linus vs. Tanenbaum</a></li> + </ul> + <p> + </p> + <p> + </p> + <ul> + <li><a href="http://www.cs.cornell.edu/Info/People/ulfar/ukernel/ukernel.html" target="_top">Microkernels</a> (an HTML review of the area from late 1996) </li> + </ul> + <p> + </p> + <ul> + <li><a href="http://www.nongnu.org/hurdextras/ipc_guide/ipc_guide.html" target="_top">The Unofficial GNU Mach IPC beginner's guide</a> (part of <a href="http://savannah.nongnu.org/projects/hurdextras/" target="_top">Hurd Extras project</a>) </li> + </ul> + <p> + </p> + <ul> + <li><a href="http://foobar-qux.org:8080/hde/MACH_DOCS_PDFS/" target="_top">Documents about Mach</a></li> + </ul> + <p> + </p> + <ul> + <li>[[GNUMach]]: GNUmach 1.x kernel <ul> + <li>[[BuildingGNUMach]]</li> + </ul> + </li> + </ul> + <p> + </p> + <ul> + <li>[[OskitMach]]: GNUmach 2.0 (DEFUNCT) <ul> + <li>[[OskitMachStatusList]]: Status and TODO list (<a href="http://packages.debian.org/gnumach" target="_top">deb status</a>) </li> + <li>[[OskitMachPatches]]: Bleeding edge patches </li> + <li>[[OskitPatches]]: Useful patches for the OSKit </li> + <li>[[BuildingOskitMach]]: How to build your own GNUmach kernel </li> + <li>[[RemoteDebugOskitMach]]: How to use gdb to remote debug the GNUmach kernel </li> + </ul> + </li> + </ul> + <p> + </p> + <ul> + <li>[[MicroKernelFUD]]: Fear, Uncertainty, Doubt - The Micro Kernel Experiment Continues </li> + </ul> + <p> + </p> + <ul> + <li>[[MicroKernelResearch]]: Papers on Mach related topics, [[PosixSemaphores]], [[PortToL4]]. </li> + </ul> + <p> + </p> + <ul> + <li>[[MicroKernelsForBeginners]]: (suggested page, better description needed) For experienced users who know little about microkernels but wish to learn about them. </li> + </ul> + <p> + </p> + <ul> + <li><a href="http://i30www.ira.uka.de/teaching/pastcourses/lecture.php?courseid=80" target="_top">Microkernel construction</a> (lectures by the <a href="http://l4ka.org/projects/pistachio/" target="_top">L4Ka::Pistachio</a> team) </li> + </ul> + <p> + </p> + <ul> + <li> Other <nop>Mach kernels that can be of interest (noone even investigate yet if they can be of some use): <ul> + <li><a href="http://developer.apple.com/darwin/" target="_top">Darwin</a>: The kernel of <a href="http://www.apple.com/macosx/" target="_top">Max OS X</a> (<a href="http://developer.apple.com/techpubs/macosx/Darwin/General/KernelProgramming/" target="_top">Kernel Programming book</a>) </li> + <li><a href="http://www.kerneltrap.org/node.php?id=543" target="_top">Darwin binary compatibilty</a> in <a href="http://www.netbsd.org/" target="_top">NetBSD</a></li> + <li><a href="http://www.morphos.org" target="_top">http://www.morphos.org</a></li> + <li> a small <a href="http://cliki.tunes.org/Microkernel%20Debate" target="_top">Microkernel debate</a></li> + <li> a <a href="http://www.ussg.iu.edu/hypermail/linux/kernel/0206.2/1337.html" target="_top">reply</a> to Alan Cox re: Amiga DOS </li> + </ul></nop></li> + </ul> + <p> + </p> + <ul> + <li>[[GNUMachRevivalProject]]: Task and Wish list for a new effort to make GNU Mach a reliable (in stability and performance terms) microkernel for The Hurd. </li> + </ul> + <p> + </p> + </td> + <td> + </td> + <td valign="top" width="35%"> + <p> + </p> + <table border="1" cellpadding="1" cellspacing="0"> + <tr> + <th bgcolor="#99CCCC"><strong>Hot Topics <font size="-1">([[WebStatistics]])</font></strong></th> + <th bgcolor="#99CCCC"><strong>Top Contributors</strong></th> + </tr> + </table> %INCLUDE{"WebStatistics" pattern=".*?\-\-statTopContributors\-\-\&gt;[^\|]+\|[^\|]+\|[^\|]+\|[^\|]+\|[^\|]+\|[^\|]+(\|[^\|]+\|[^\|]+\|).*"}% <p> + </p><input name="search" size="20" type="text" /> <input type="submit" value="Search %WEB%" /><br /><font size="-1">More search options in [[WebSearch]]</font><br /> + <p> Currently, Web refers to the Mach Web. </p> + <p> + </p> + <ul> + <li>[[WebIndex]] - Alphabetical index </li> + <li>[[WebNotify]] - Email notification </li> + <li>[[WebChanges]] - Web <nop>ChangeLog </nop></li> + <li>[[WebDiscuss]] - Content discussions </li> + <li>[[WebTopicList]] - Index by Topic </li> + <li>[[WebStatistics]] - Statistical trivia </li> + <li>[[WebPreferences]] - Administrative settings </li> + </ul> + <p> + </p> + </td> + </tr> + </table> +</form> diff --git a/Mach/WebIndex.mdwn b/Mach/WebIndex.mdwn new file mode 100644 index 00000000..0732324b --- /dev/null +++ b/Mach/WebIndex.mdwn @@ -0,0 +1,3 @@ +%SEARCH\{"\\.\*" scope="topic" regex="on" nosearch="on"\}% + +See also the faster [[WebTopicList]] diff --git a/Mach/WebNotify.mdwn b/Mach/WebNotify.mdwn new file mode 100644 index 00000000..2cba92a7 --- /dev/null +++ b/Mach/WebNotify.mdwn @@ -0,0 +1,8 @@ +%NOTIFYTOPIC% is a subscription service to be automatically notified by email when topics change in the **%WIKITOOLNAME%.%WEB%** web. This is a convenient service, so you do not have to come back and check all the time if something has changed. To subscribe to the service, please put yourself on the list below. The format is: `3 spaces * %MAINWEB%.yourWikiName - yourEmailAddress` + +* [[Main/JoachimNilsson]] - <joachim@gnufansNOSPAM.org> +* [[Main/ThomasSchwinge]] - <tschwinge@gnuNOSPAM.org> + +**_Note:_** It is helpful to insert your name in alphabetical order (by first name -- ignore the "Main.") -- then you can find your name (or not) more easily if you wish to remove it or confirm that you are on the list. + +**_Related topics:_** %MAINWEB%.%WIKIUSERSTOPIC%, %TWIKIWEB%.TWikiRegistration diff --git a/Mach/WebPreferences.mdwn b/Mach/WebPreferences.mdwn new file mode 100644 index 00000000..cb6ccc21 --- /dev/null +++ b/Mach/WebPreferences.mdwn @@ -0,0 +1,51 @@ +## <a name="_WIKITOOLNAME_WEB_Web_Preference"> %WIKITOOLNAME%.%WEB% Web Preferences </a> + +The following settings are **_web preferences_** of the %WIKITOOLNAME%.%WEB% web. These preferences overwrite the **_site-level preferences_** in %TWIKIWEB%.%WIKIPREFSTOPIC%, and can be overwritten by **_user preferences_** (your personal topic, i.e. %MAINWEB%.TWikiGuest in the %WIKITOOLNAME%.%MAINWEB% web) + +**_Preferences:_** + +* List of topics of the %WIKITOOLNAME%.%WEB% web: + * Set WEBTOPICLIST = [[HOMETOPIC]] %SEP% [[WebChanges]] %SEP% [[WebIndex]] %SEP% [[WebSearch]] %SEP% Go <input name="topic" size="16" type="text" /> + +* Web specific background color: (Pick a lighter one of the %TWIKIWEB%.StandardColors) + * Set WEBBGCOLOR = #FFD7D7 + +* Exclude web from a `web="all"` search: (Set to `on` for hidden webs) + * Set NOSEARCHALL = + +* Default template for new topics and form(s) for this web: + * [[WebTopicEditTemplate]]: Default template for new topics in this web. (Site-level is used if topic does not exist) + * [[TWIKIWEBWebTopicEditTemplate]]: Site-level default template + * %TWIKIWEB%.TWikiForms: How to enable form(s) + * Set WEBFORMS = + +* Users or groups who **_are not_** / **_are_** allowed to **_view_** / **_change_** / **_rename_** topics in the %WEB% web: (See %TWIKIWEB%.TWikiAccessControl) + * Set DENYWEBVIEW = + * Set ALLOWWEBVIEW = + * Set DENYWEBCHANGE = + * Set ALLOWWEBCHANGE = + * Set DENYWEBRENAME = + * Set ALLOWWEBRENAME = + +* Users or groups allowed to change or rename this %TOPIC% topic: (I.e. %MAINWEB%.TWikiAdminGroup) + * Set ALLOWTOPICCHANGE = %MAINWEB%.TWikiAdminGroup + * Set ALLOWTOPICRENAME = %MAINWEB%.TWikiAdminGroup + +* Web preferences that are **not** allowed to be overridden by user preferences: + * Set FINALPREFERENCES = WEBTOPICLIST, DENYWEBVIEW, ALLOWWEBVIEW, DENYWEBCHANGE, ALLOWWEBCHANGE, DENYWEBRENAME, ALLOWWEBRENAME + +**_Notes:_** + +* A preference is defined as: <br />`6 spaces * Set NAME = value`<br /> Example: + * Set WEBBGCOLOR = #FFFFC0 +* Preferences are used as %TWIKIWEB%.TWikiVariables by enclosing the name in percent signs. Example: + * When you write variable <code>%WEBBGCOLOR%</code> , it gets expanded to `%WEBBGCOLOR%` . +* The sequential order of the preference settings is significant. Define preferences that use other preferences first, i.e. set <code>WEBCOPYRIGHT</code> before <code>WIKIWEBMASTER</code> since <code>%WEBCOPYRIGHT%</code> uses the <code>%WIKIWEBMASTER%</code> variable. +* You can introduce new preferences variables and use them in your topics and templates. There is no need to change the %WIKITOOLNAME% engine (Perl scripts). + +**_Related Topics:_** + +* %TWIKIWEB%.%WIKIPREFSTOPIC% has site-level preferences. +* %MAINWEB%.%WIKIUSERSTOPIC% has a list of user topics. User topics can have optional user preferences. +* %TWIKIWEB%.TWikiVariables has a list of common <code>%VARIABLES%</code>. +* %TWIKIWEB%.TWikiAccessControl explains how to restrict access by users or groups. diff --git a/Mach/WebSearch.mdwn b/Mach/WebSearch.mdwn new file mode 100644 index 00000000..b6d43d86 --- /dev/null +++ b/Mach/WebSearch.mdwn @@ -0,0 +1 @@ +%INCLUDE\{"%TWIKIWEB%.WebSearch"\}% diff --git a/Mach/WebStatistics.mdwn b/Mach/WebStatistics.mdwn new file mode 100644 index 00000000..bc21137a --- /dev/null +++ b/Mach/WebStatistics.mdwn @@ -0,0 +1,368 @@ +## <a name="Statistics_for_WIKITOOLNAME_WEB_"> Statistics for %WIKITOOLNAME%.%WEB% Web </a> + +<table border="1" cellpadding="1" cellspacing="0"> + <tr> + <th bgcolor="#99CCCC"><strong>Month:</strong></th> + <th bgcolor="#99CCCC"><strong>Topic <br /> views:</strong></th> + <th bgcolor="#99CCCC"><strong>Topic <br /> saves:</strong></th> + <th bgcolor="#99CCCC"><strong>File <br /> uploads:</strong></th> + <th bgcolor="#99CCCC"><strong>Most popular <br /> topic views:</strong></th> + <th bgcolor="#99CCCC"><strong>Top contributors for <br /> topic save and uploads:</strong></th> + </tr> + <tr> + <td> + </td> + <td> + </td> + <td> + </td> + <td> + </td> + <td> + </td> + <td> + </td> + </tr> + <tr> + <td> Mar 2006 </td> + <td align="right"> 436 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 83 [[WebHome]]<br /> 65 [[GNUMachRevivalProject]]<br /> 24 [[OskitMach]]<br /> 24 [[BuildingOskitMach]]<br /> 21 [[MachHistory]]<br /> 20 [[GNUMach]]<br /> 19 [[PortToL4]]<br /> 17 [[RemoteDebugOskitMach]]<br /> 16 [[MachConcepts]]<br /> 14 [[OskitPatches]]<br /> 14 [[OskitMachStatusList]]</td> + <td> </td> + </tr> + <tr> + <td> Feb 2006 </td> + <td align="right"> 842 </td> + <td align="right"> 1 </td> + <td align="right"> 0 </td> + <td> 248 [[GNUMachRevivalProject]]<br /> 174 [[WebHome]]<br /> 67 [[OskitMach]]<br /> 60 [[BuildingOskitMach]]<br /> 55 [[GNUMach]]<br /> 54 [[MachHistory]]<br /> 22 [[MachConcepts]]<br /> 19 [[OskitPatches]]<br /> 19 [[OskitMachPatches]]<br /> 17 [[WebChanges]]<br /> 17 [[OskitMachStatusList]]</td> + <td> 1 [[Main/MichaelBanck]]</td> + </tr> + <tr> + <td> Jan 2006 </td> + <td align="right"> 4570 </td> + <td align="right"> 3 </td> + <td align="right"> 0 </td> + <td> 2988 [[GNUMachRevivalProject]]<br /> 444 [[WebHome]]<br /> 296 [[GNUMach]]<br /> 270 [[MachHistory]]<br /> 164 [[OskitMach]]<br /> 83 [[BuildingOskitMach]]<br /> 52 [[MachConcepts]]<br /> 45 [[OskitPatches]]<br /> 43 [[PortToL4]]<br /> 37 [[OskitMachPatches]]<br /> 29 [[MicroKernelFUD]]</td> + <td> 3 [[Main/TWikiGuest]]</td> + </tr> + <tr> + <td> Dec 2005 </td> + <td align="right"> 749 </td> + <td align="right"> 14 </td> + <td align="right"> 0 </td> + <td> 231 [[GNUMachRevivalProject]]<br /> 193 [[WebHome]]<br /> 53 [[OskitMach]]<br /> 47 [[GNUMach]]<br /> 44 [[MachHistory]]<br /> 40 [[BuildingOskitMach]]<br /> 22 [[PortToL4]]<br /> 20 [[MachConcepts]]<br /> 16 [[WebChanges]]<br /> 16 [[MicroKernelFUD]]<br /> 13 [[OskitMachPatches]]</td> + <td> 8 [[Main/TWikiGuest]]<br /> 6 [[Main/SergioLopez]]</td> + </tr> + <tr> + <td> Nov 2005 </td> + <td align="right"> 388 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 144 [[WebHome]]<br /> 39 [[OskitMach]]<br /> 27 [[MachHistory]]<br /> 27 [[GNUMach]]<br /> 26 [[BuildingOskitMach]]<br /> 18 [[OskitMachStatusList]]<br /> 17 [[MachConcepts]]<br /> 15 [[PortToL4]]<br /> 11 [[MicroKernelsForBeginners]]<br /> 10 [[OskitPatches]]<br /> 9 [[OskitMachPatches]]</td> + <td> </td> + </tr> + <tr> + <td> Oct 2005 </td> + <td align="right"> 304 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 120 [[WebHome]]<br /> 47 [[OskitMach]]<br /> 27 [[MachHistory]]<br /> 24 [[GNUMach]]<br /> 18 [[BuildingOskitMach]]<br /> 13 [[PortToL4]]<br /> 11 [[MicroKernelFUD]]<br /> 9 [[OskitPatches]]<br /> 7 [[MachConcepts]]<br /> 6 [[OskitMachStatusList]]<br /> 6 [[MicroKernelsForBeginners]]</td> + <td> </td> + </tr> + <tr> + <td> Sep 2005 </td> + <td align="right"> 459 </td> + <td align="right"> 1 </td> + <td align="right"> 0 </td> + <td> 149 [[WebHome]]<br /> 37 [[OskitMach]]<br /> 33 [[GNUMach]]<br /> 32 [[MachHistory]]<br /> 32 [[BuildingOskitMach]]<br /> 25 [[PortToL4]]<br /> 24 [[MachConcepts]]<br /> 15 [[MicroKernelsForBeginners]]<br /> 14 [[OskitMachPatches]]<br /> 14 [[MicroKernelFUD]]<br /> 12 [[OskitPatches]]</td> + <td> 1 [[Main/ThomasSchwinge]]</td> + </tr> + <tr> + <td> Aug 2005 </td> + <td align="right"> 546 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 164 [[WebHome]]<br /> 55 [[OskitMach]]<br /> 49 [[GNUMach]]<br /> 48 [[BuildingOskitMach]]<br /> 37 [[MachHistory]]<br /> 31 [[MicroKernelFUD]]<br /> 25 [[PortToL4]]<br /> 20 [[MachConcepts]]<br /> 18 [[MicroKernelsForBeginners]]<br /> 17 [[OskitMachPatches]]<br /> 15 [[OskitPatches]]</td> + <td> </td> + </tr> + <tr> + <td> Jul 2005 </td> + <td align="right"> 411 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 174 [[WebHome]]<br /> 54 [[OskitMach]]<br /> 35 [[BuildingOskitMach]]<br /> 28 [[MachHistory]]<br /> 23 [[GNUMach]]<br /> 22 [[PortToL4]]<br /> 16 [[MachConcepts]]<br /> 13 [[MicroKernelsForBeginners]]<br /> 12 [[MicroKernelFUD]]<br /> 10 [[OskitMachPatches]]<br /> 9 [[OskitPatches]]</td> + <td> </td> + </tr> + <tr> + <td> Jun 2005 </td> + <td align="right"> 475 </td> + <td align="right"> 1 </td> + <td align="right"> 0 </td> + <td> 129 [[WebHome]]<br /> 62 [[OskitMach]]<br /> 43 [[MachHistory]]<br /> 40 [[GNUMach]]<br /> 36 [[BuildingOskitMach]]<br /> 22 [[MachConcepts]]<br /> 17 [[PortToL4]]<br /> 17 [[OskitMachPatches]]<br /> 16 [[OskitPatches]]<br /> 16 [[OskitMachStatusList]]<br /> 12 [[MicroKernelsForBeginners]]</td> + <td> 1 [[Main/OgnyanKulev]]</td> + </tr> + <tr> + <td> May 2005 </td> + <td align="right"> 573 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 189 [[WebHome]]<br /> 74 [[OskitMach]]<br /> 43 [[BuildingOskitMach]]<br /> 36 [[PortToL4]]<br /> 35 [[GNUMach]]<br /> 34 [[OskitMachStatusList]]<br /> 29 [[MachHistory]]<br /> 25 [[MachConcepts]]<br /> 18 [[OskitPatches]]<br /> 16 [[MicroKernelFUD]]<br /> 15 [[MicroKernelsForBeginners]]</td> + <td> </td> + </tr> + <tr> + <td> Apr 2005 </td> + <td align="right"> 548 </td> + <td align="right"> 6 </td> + <td align="right"> 0 </td> + <td> 260 [[WebHome]]<br /> 57 [[OskitMach]]<br /> 39 [[MachHistory]]<br /> 29 [[BuildingOskitMach]]<br /> 23 [[MachConcepts]]<br /> 21 [[OskitMachStatusList]]<br /> 20 [[GNUMach]]<br /> 15 [[PortToL4]]<br /> 15 [[OskitPatches]]<br /> 14 [[OskitMachPatches]]<br /> 12 [[MicroKernelsForBeginners]]</td> + <td> 5 [[Main/JoachimNilsson]]<br /> 1 [[Main/ThomasSchwinge]]</td> + </tr> + <tr> + <td> Mar 2005 </td> + <td align="right"> 1155 </td> + <td align="right"> 1 </td> + <td align="right"> 0 </td> + <td> 372 [[WebHome]]<br /> 91 [[OskitMach]]<br /> 82 [[GNUMach]]<br /> 80 [[BuildingOskitMach]]<br /> 73 [[OskitPatches]]<br /> 66 [[MachHistory]]<br /> 52 [[PortToL4]]<br /> 46 [[OskitMachPatches]]<br /> 37 [[MachConcepts]]<br /> 32 [[RemoteDebugOskitMach]]<br /> 31 [[MicroKernelFUD]]</td> + <td> 1 [[Main/JoachimNilsson]]</td> + </tr> + <tr> + <td> Feb 2005 </td> + <td align="right"> 704 </td> + <td align="right"> 3 </td> + <td align="right"> 0 </td> + <td> 254 [[WebHome]]<br /> 73 [[PortToL4]]<br /> 69 [[OskitMach]]<br /> 55 [[MachHistory]]<br /> 55 [[BuildingOskitMach]]<br /> 40 [[GNUMach]]<br /> 38 [[OskitMachStatusList]]<br /> 25 [[MachConcepts]]<br /> 23 [[OskitPatches]]<br /> 21 [[MicroKernelsForBeginners]]<br /> 12 [[MicroKernelFUD]]</td> + <td> 2 [[Main/OgnyanKulev]]<br /> 1 [[Main/JoachimNilsson]]</td> + </tr> + <tr> + <td> Jan 2005 </td> + <td align="right"> 2491 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 492 [[WebHome]]<br /> 277 [[BuildingOskitMach]]<br /> 213 [[OskitMach]]<br /> 163 [[MachHistory]]<br /> 160 [[GNUMach]]<br /> 125 [[OskitPatches]]<br /> 109 [[PortToL4]]<br /> 105 [[OskitMachStatusList]]<br /> 99 [[RemoteDebugOskitMach]]<br /> 89 [[OskitMachPatches]]<br /> 78 [[WebStatistics]]</td> + <td> </td> + </tr> + <tr> + <td> Dec 2004 </td> + <td align="right"> 2303 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 462 [[WebHome]]<br /> 217 [[BuildingOskitMach]]<br /> 206 [[OskitMach]]<br /> 135 [[MachHistory]]<br /> 134 [[GNUMach]]<br /> 124 [[OskitMachStatusList]]<br /> 113 [[PortToL4]]<br /> 104 [[OskitPatches]]<br /> 97 [[RemoteDebugOskitMach]]<br /> 82 [[OskitMachPatches]]<br /> 75 [[WebStatistics]]</td> + <td> </td> + </tr> + <tr> + <td> Nov 2004 </td> + <td align="right"> 2199 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 456 [[WebHome]]<br /> 233 [[BuildingOskitMach]]<br /> 172 [[OskitMach]]<br /> 122 [[GNUMach]]<br /> 116 [[MachHistory]]<br /> 97 [[PortToL4]]<br /> 94 [[OskitMachStatusList]]<br /> 92 [[OskitPatches]]<br /> 91 [[RemoteDebugOskitMach]]<br /> 89 [[WebChanges]]<br /> 84 [[WebStatistics]]</td> + <td> </td> + </tr> + <tr> + <td> Oct 2004 </td> + <td align="right"> 2040 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 470 [[WebHome]]<br /> 208 [[OskitMach]]<br /> 195 [[BuildingOskitMach]]<br /> 123 [[MachHistory]]<br /> 101 [[GNUMach]]<br /> 99 [[OskitMachStatusList]]<br /> 85 [[PortToL4]]<br /> 73 [[OskitPatches]]<br /> 73 [[MicroKernelFUD]]<br /> 65 [[MachConcepts]]<br /> 58 [[RemoteDebugOskitMach]]</td> + <td> </td> + </tr> + <tr> + <td> Sep 2004 </td> + <td align="right"> 2132 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 449 [[WebHome]]<br /> 247 [[BuildingOskitMach]]<br /> 176 [[OskitMach]]<br /> 117 [[MachHistory]]<br /> 114 [[GNUMach]]<br /> 95 [[OskitMachStatusList]]<br /> 92 [[RemoteDebugOskitMach]]<br /> 84 [[PortToL4]]<br /> 83 [[OskitPatches]]<br /> 69 [[WebChanges]]<br /> 57 [[OskitMachPatches]]</td> + <td> </td> + </tr> + <tr> + <td> Aug 2004 </td> + <td align="right"> 2297 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 460 [[WebHome]]<br /> 242 [[BuildingOskitMach]]<br /> 182 [[OskitMach]]<br /> 138 [[GNUMach]]<br /> 132 [[PortToL4]]<br /> 116 [[MachHistory]]<br /> 108 [[OskitMachStatusList]]<br /> 93 [[OskitPatches]]<br /> 87 [[MachConcepts]]<br /> 78 [[RemoteDebugOskitMach]]<br /> 66 [[WebChanges]]</td> + <td> </td> + </tr> + <tr> + <td> Jul 2004 </td> + <td align="right"> 1944 </td> + <td align="right"> 1 </td> + <td align="right"> 0 </td> + <td> 387 [[WebHome]]<br /> 195 [[BuildingOskitMach]]<br /> 180 [[OskitMach]]<br /> 122 [[GNUMach]]<br /> 107 [[MachHistory]]<br /> 100 [[OskitMachStatusList]]<br /> 94 [[PortToL4]]<br /> 87 [[OskitPatches]]<br /> 83 [[MachConcepts]]<br /> 73 [[RemoteDebugOskitMach]]<br /> 58 [[OskitMachPatches]]</td> + <td> 1 [[Main/ThierryLacoste]]</td> + </tr> + <tr> + <td> Jun 2004 </td> + <td align="right"> 1358 </td> + <td align="right"> 2 </td> + <td align="right"> 0 </td> + <td> 315 [[WebHome]]<br /> 144 [[BuildingOskitMach]]<br /> 132 [[OskitMach]]<br /> 85 [[MachHistory]]<br /> 78 [[GNUMach]]<br /> 65 [[OskitPatches]]<br /> 55 [[PortToL4]]<br /> 53 [[OskitMachStatusList]]<br /> 41 [[RemoteDebugOskitMach]]<br /> 39 [[MachConcepts]]<br /> 37 [[OskitMachPatches]]</td> + <td> 2 [[Main/FabriceBauzac]]</td> + </tr> + <tr> + <td> May 2004 </td> + <td align="right"> 1218 </td> + <td align="right"> 1 </td> + <td align="right"> 0 </td> + <td> 309 [[WebHome]]<br /> 119 [[OskitMach]]<br /> 95 [[BuildingOskitMach]]<br /> 68 [[PortToL4]]<br /> 66 [[GNUMach]]<br /> 58 [[OskitMachStatusList]]<br /> 57 [[MachHistory]]<br /> 46 [[MicroKernelFUD]]<br /> 40 [[MachConcepts]]<br /> 37 [[MicroKernelsForBeginners]]<br /> 36 [[WebChanges]]</td> + <td> 1 [[Main/KurtBKaiser]]</td> + </tr> + <tr> + <td> Apr 2004 </td> + <td align="right"> 993 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 282 [[WebHome]]<br /> 99 [[OskitMach]]<br /> 98 [[BuildingOskitMach]]<br /> 64 [[PortToL4]]<br /> 62 [[GNUMach]]<br /> 52 [[OskitMachStatusList]]<br /> 46 [[WebChanges]]<br /> 45 [[MachHistory]]<br /> 29 [[OskitPatches]]<br /> 29 [[OskitMachPatches]]<br /> 24 [[MachConcepts]]</td> + <td> </td> + </tr> + <tr> + <td> Mar 2004 </td> + <td align="right"> 1556 </td> + <td align="right"> 6 </td> + <td align="right"> 1 </td> + <td> 364 [[WebHome]]<br /> 154 [[BuildingOskitMach]]<br /> 131 [[OskitMach]]<br /> 88 [[GNUMach]]<br /> 67 [[OskitMachStatusList]]<br /> 66 [[WebChanges]]<br /> 64 [[OskitMachPatches]]<br /> 61 [[MachHistory]]<br /> 55 [[MicroKernelFUD]]<br /> 54 [[RemoteDebugOskitMach]]<br /> 52 [[OskitPatches]]</td> + <td> 6 [[Main/GrantBow]]<br /> 1 [[Main/OgnyanKulev]]</td> + </tr> + <tr> + <td> Feb 2004 </td> + <td align="right"> 1240 </td> + <td align="right"> 3 </td> + <td align="right"> 0 </td> + <td> 319 [[WebHome]]<br /> 180 [[BuildingOskitMach]]<br /> 125 [[OskitMach]]<br /> 77 [[GNUMach]]<br /> 54 [[MachHistory]]<br /> 53 [[OskitPatches]]<br /> 45 [[OskitMachPatches]]<br /> 41 [[OskitMachStatusList]]<br /> 41 [[MachConcepts]]<br /> 40 [[PortToL4]]<br /> 36 [[RemoteDebugOskitMach]]</td> + <td> 2 [[Main/MatSei]]<br /> 1 [[Main/OgnyanKulev]]</td> + </tr> + <tr> + <td> Jan 2004 </td> + <td align="right"> 1153 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 264 [[WebHome]]<br /> 114 [[OskitMach]]<br /> 100 [[BuildingOskitMach]]<br /> 64 [[PortToL4]]<br /> 56 [[GNUMach]]<br /> 49 [[OskitMachStatusList]]<br /> 44 [[MachHistory]]<br /> 41 [[OskitPatches]]<br /> 38 [[RemoteDebugOskitMach]]<br /> 36 [[OskitMachPatches]]<br /> 33 [[WebStatistics]]</td> + <td> </td> + </tr> + <tr> + <td> Dec 2003 </td> + <td align="right"> 1174 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 275 [[WebHome]]<br /> 119 [[OskitMach]]<br /> 91 [[BuildingOskitMach]]<br /> 75 [[MachHistory]]<br /> 68 [[GNUMach]]<br /> 65 [[PortToL4]]<br /> 59 [[OskitMachStatusList]]<br /> 41 [[OskitPatches]]<br /> 40 [[MicroKernelFUD]]<br /> 40 [[MachConcepts]]<br /> 33 [[OskitMachPatches]]</td> + <td> </td> + </tr> + <tr> + <td> Nov 2003 </td> + <td align="right"> 1165 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 214 [[WebHome]]<br /> 119 [[OskitMach]]<br /> 106 [[BuildingOskitMach]]<br /> 71 [[PortToL4]]<br /> 57 [[OskitMachStatusList]]<br /> 55 [[GNUMach]]<br /> 52 [[OskitPatches]]<br /> 48 [[MicroKernelFUD]]<br /> 48 [[MachHistory]]<br /> 43 [[MachConcepts]]<br /> 32 [[WebStatistics]]</td> + <td> </td> + </tr> + <tr> + <td> Oct 2003 </td> + <td align="right"> 866 </td> + <td align="right"> 5 </td> + <td align="right"> 0 </td> + <td> 209 [[WebHome]]<br /> 75 [[OskitMach]]<br /> 71 [[BuildingOskitMach]]<br /> 62 [[PortToL4]]<br /> 43 [[MachHistory]]<br /> 41 [[GNUMach]]<br /> 34 [[OskitMachStatusList]]<br /> 29 [[RemoteDebugOskitMach]]<br /> 29 [[MicroKernelFUD]]<br /> 26 [[WebStatistics]]<br /> 26 [[OskitPatches]]</td> + <td> 3 [[Main/JohnAllsup]]<br /> 2 [[Main/OgnyanKulev]]</td> + </tr> + <tr> + <td> Sep 2003 </td> + <td align="right"> 1509 </td> + <td align="right"> 10 </td> + <td align="right"> 0 </td> + <td> 259 [[WebHome]]<br /> 210 [[BuildingOskitMach]]<br /> 164 [[OskitMach]]<br /> 90 [[OskitMachStatusList]]<br /> 84 [[OskitPatches]]<br /> 78 [[PortToL4]]<br /> 63 [[GNUMach]]<br /> 54 [[MachHistory]]<br /> 52 [[MachConcepts]]<br /> 49 [[RemoteDebugOskitMach]]<br /> 46 [[MicroKernelFUD]]</td> + <td> 6 [[Main/JoachimNilsson]]<br /> 2 [[Main/OgnyanKulev]]<br /> 1 [[Main/SebastianGabriel]]<br /> 1 [[Main/GaborGreif]]</td> + </tr> + <tr> + <td> Aug 2003 </td> + <td align="right"> 1017 </td> + <td align="right"> 4 </td> + <td align="right"> 0 </td> + <td> 281 [[WebHome]]<br /> 120 [[BuildingOskitMach]]<br /> 83 [[OskitMach]]<br /> 59 [[RemoteDebugOskitMach]]<br /> 52 [[GNUMach]]<br /> 50 [[OskitMachStatusList]]<br /> 47 [[MicroKernelFUD]]<br /> 43 [[MachHistory]]<br /> 41 [[OskitPatches]]<br /> 38 [[PortToL4]]<br /> 31 [[WebStatistics]]</td> + <td> 3 [[Main/OgnyanKulev]]<br /> 1 [[Main/LuisMiguel]]</td> + </tr> + <tr> + <td> Jul 2003 </td> + <td align="right"> 1049 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 265 [[WebHome]]<br /> 145 [[BuildingOskitMach]]<br /> 122 [[OskitMach]]<br /> 60 [[GNUMach]]<br /> 48 [[OskitPatches]]<br /> 46 [[OskitMachStatusList]]<br /> 43 [[MachHistory]]<br /> 41 [[RemoteDebugOskitMach]]<br /> 41 [[MachConcepts]]<br /> 36 [[PortToL4]]<br /> 30 [[OskitMachPatches]]</td> + <td> </td> + </tr> + <tr> + <td> Jun 2003 </td> + <td align="right"> 1101 </td> + <td align="right"> 7 </td> + <td align="right"> 0 </td> + <td> 279 [[WebHome]]<br /> 106 [[OskitMach]]<br /> 100 [[BuildingOskitMach]]<br /> 73 [[MachHistory]]<br /> 65 [[GNUMach]]<br /> 49 [[PortToL4]]<br /> 46 [[OskitPatches]]<br /> 45 [[OskitMachStatusList]]<br /> 43 [[MachConcepts]]<br /> 37 [[OskitMachPatches]]<br /> 36 [[MicroKernelFUD]]</td> + <td> 5 [[Main/OgnyanKulev]]<br /> 2 [[Main/JoachimNilsson]]</td> + </tr> + <tr> + <td> May 2003 </td> + <td align="right"> 1187 </td> + <td align="right"> 6 </td> + <td align="right"> 0 </td> + <td> 286 [[WebHome]]<br /> 157 [[BuildingOskitMach]]<br /> 113 [[OskitMach]]<br /> 79 [[OskitPatches]]<br /> 68 [[GNUMach]]<br /> 65 [[OskitMachStatusList]]<br /> 59 [[PortToL4]]<br /> 48 [[MachHistory]]<br /> 39 [[MicroKernelFUD]]<br /> 35 [[MachConcepts]]<br /> 30 [[OskitMachPatches]]</td> + <td> 3 [[Main/OgnyanKulev]]<br /> 3 [[Main/BarryDeFreese]]</td> + </tr> + <tr> + <td> Apr 2003 </td> + <td align="right"> 985 </td> + <td align="right"> 7 </td> + <td align="right"> 0 </td> + <td> 225 [[WebHome]]<br /> 104 [[OskitMach]]<br /> 79 [[BuildingOskitMach]]<br /> 59 [[OskitMachStatusList]]<br /> 56 [[OskitPatches]]<br /> 55 [[GNUMach]]<br /> 53 [[PortToL4]]<br /> 46 [[MachHistory]]<br /> 29 [[OskitMachPatches]]<br /> 27 [[RemoteDebugOskitMach]]<br /> 27 [[MicroKernelFUD]]</td> + <td> 6 [[Main/JoachimNilsson]]<br /> 1 [[Main/OgnyanKulev]]</td> + </tr> + <tr> + <td> Mar 2003 </td> + <td align="right"> 1047 </td> + <td align="right"> 0 </td> + <td align="right"> 0 </td> + <td> 272 [[WebHome]]<br /> 114 [[OskitMach]]<br /> 97 [[BuildingOskitMach]]<br /> 65 [[OskitMachStatusList]]<br /> 63 [[PortToL4]]<br /> 62 [[MachHistory]]<br /> 58 [[OskitPatches]]<br /> 50 [[GNUMach]]<br /> 38 [[MachConcepts]]<br /> 32 [[MicroKernelFUD]]<br /> 29 [[RemoteDebugOskitMach]]</td> + <td> </td> + </tr> + <tr> + <td> Feb 2003 </td> + <td align="right"> 765 </td> + <td align="right"> 8 </td> + <td align="right"> 1 </td> + <td> 220 [[WebHome]]<br /> 108 [[OskitMach]]<br /> 66 [[BuildingOskitMach]]<br /> 56 [[OskitPatches]]<br /> 48 [[OskitMachStatusList]]<br /> 46 [[PortToL4]]<br /> 42 [[GNUMach]]<br /> 38 [[MachHistory]]<br /> 26 [[MicroKernelFUD]]<br /> 23 [[OskitMachPatches]]<br /> 19 [[MachConcepts]]</td> + <td> 5 [[Main/JoachimNilsson]]<br /> 3 [[Main/MattGrant]]<br /> 1 [[Main/OgnyanKulev]]</td> + </tr> + <tr> + <td> Jan 2003 </td> + <td align="right"> 1173 </td> + <td align="right"> 43 </td> + <td align="right"> 0 </td> + <td> 311 [[WebHome]]<br /> 187 [[OskitMach]]<br /> 120 [[BuildingOskitMach]]<br /> 77 [[GNUMach]]<br /> 76 [[OskitMachStatusList]]<br /> 74 [[MachHistory]]<br /> 52 [[PortToL4]]<br /> 45 [[UsefulOskitPatches]]<br /> 36 [[OskitMachPatches]]<br /> 31 [[MachConcepts]]<br /> 27 [[OskitPatches]]</td> + <td> 18 [[Main/JoachimNilsson]]<br /> 12 [[Main/GrantBow]]<br /> 5 [[Main/MattGrant]]<br /> 3 [[Main/TWikiGuest]]<br /> 2 [[Main/OgnyanKulev]]<br /> 2 [[Main/JamesAMorrison]]<br /> 1 [[Main/DerekDavies]]</td> + </tr> + <tr> + <td> Dec 2002 </td> + <td align="right"> 869 </td> + <td align="right"> 39 </td> + <td align="right"> 5 </td> + <td> 254 [[WebHome]]<br /> 130 [[OskitMach]]<br /> 65 [[OskitPatches]]<br /> 65 [[BuildingOskitMach]]<br /> 57 [[GNUMach]]<br /> 55 [[MachHistory]]<br /> 54 [[OskitMachStatusList]]<br /> 53 [[MicroKernelFUD]]<br /> 36 [[MachConcepts]]<br /> 23 [[PortToL4]]<br /> 21 [[WebDiscuss]]</td> + <td> 17 [[Main/OgnyanKulev]]<br /> 15 [[Main/JoachimNilsson]]<br /> 12 [[Main/GrantBow]]</td> + </tr> + <tr> + <td> Nov 2002 </td> + <td align="right"> 618 </td> + <td align="right"> 42 </td> + <td align="right"> 7 </td> + <td> 128 [[OskitMach]]<br /> 104 [[WebHome]]<br /> 70 [[OskitMachStatusList]]<br /> 65 [[BuildingOskitMach]]<br /> 54 [[MachHistory]]<br /> 50 [[GNUMach]]<br /> 41 [[OskitPatches]]<br /> 20 [[RemoteDebugOskitMach]]<br /> 17 [[MicroKernelResearch]]<br /> 9 [[WebStatistics]]<br /> 9 [[WebChanges]]</td> + <td> 32 [[Main/JoachimNilsson]]<br /> 11 [[Main/OgnyanKulev]]<br /> 6 [[Main/GrantBow]]</td> + </tr> + <tr> + <td> Oct 2002 </td> + <td align="right"> 88 </td> + <td align="right"> 18 </td> + <td align="right"> 0 </td> + <td> 25 [[WebHome]]<br /> 16 [[OskitMach]]<br /> 13 [[MachHistory]]<br /> 7 [[NewMachHistory]]<br /> 6 [[WebPreferences]]<br /> 6 [[OskitMachStatusList]]<br /> 4 [[BuildingOskitMach]]<br /> 3 [[WebNotify]]<br /> 2 [[WebTopicList]]<br /> 2 [[GNUMach]]<br /> 1 [[WebIndex]]</td> + <td> 16 [[Main/JoachimNilsson]]<br /> 2 [[Main/GrantBow]]</td> + </tr> +</table> + +**_Notes:_** + +* Do not edit this topic, it is updated automatically. (You can also [force](%SCRIPTURLPATH%/statistics%SCRIPTSUFFIX%/%WEB%) an update) +* %TWIKIWEB%.TWikiDocumentation tells you how to enable the automatic updates of the statistics. +* Suggestion: You could archive this topic once a year and delete the previous year's statistics from the table. diff --git a/Mach/WebTopicList.mdwn b/Mach/WebTopicList.mdwn new file mode 100644 index 00000000..fb9b2001 --- /dev/null +++ b/Mach/WebTopicList.mdwn @@ -0,0 +1,3 @@ +%TOPICLIST\{" \* [[Name]]"\}% + +See also the verbose [[WebIndex]]. |