--- Gnu-Mach/doc/mach.texi 2020/09/02 04:44:18 1.1.1.1 +++ Gnu-Mach/doc/mach.texi 2020/09/02 04:46:45 1.1.1.2 @@ -18,35 +18,30 @@ @c Get the Mach version we are documenting. @include version.texi @set EDITION 0.4 -@set UPDATED 2001-09-01 @c @set ISBN X-XXXXXX-XX-X -@ifinfo +@copying This file documents the GNU Mach microkernel. -This is Edition @value{EDITION}, last updated @value{UPDATED}, of -@cite{The GNU Mach Reference Manual}, for Version @value{VERSION}. +This is edition @value{EDITION}, last updated on @value{UPDATED}, of @cite{The +GNU Mach Reference Manual}, for version @value{VERSION}. -Copyright @copyright{} 2001 Free Software Foundation, Inc. +Copyright @copyright{} 2001, 2002, 2006, 2007, 2008 Free Software +Foundation, Inc. +@c @sp 2 +@c Published by the Free Software Foundation @* +@c 59 Temple Place -- Suite 330, @* +@c Boston, MA 02111-1307 USA @* +@c ISBN @value{ISBN} @* + +@quotation Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.1 or -any later version published by the Free Software Foundation; with the -Invariant Sections being "Free Software Needs Free Documentation" and -"GNU Lesser General Public License", the Front-Cover texts being (a) -(see below), and with the Back-Cover Texts being (b) (see below). A -copy of the license is included in the section entitled "GNU Free -Documentation License". - -(a) The FSF's Front-Cover Text is: - - A GNU Manual - -(b) The FSF's Back-Cover Text is: - - You have freedom to copy and modify this GNU Manual, like GNU - software. Copies published by the Free Software Foundation raise - funds for GNU development. +under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no +Invariant Section, with no Front-Cover Texts, and with no Back-Cover +Texts. A copy of the license is included in the section entitled +``GNU Free Documentation License''. This work is based on manual pages under the following copyright and license: @@ -64,7 +59,8 @@ thereof, and that both notices appear in CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. -@end ifinfo +@end quotation +@end copying @iftex @shorttitlepage The GNU Mach Reference Manual @@ -86,48 +82,7 @@ ANY DAMAGES WHATSOEVER RESULTING FROM TH @center for version @value{VERSION} @page @vskip 0pt plus 1filll -Copyright @copyright{} 2001 Free Software Foundation, Inc. -@c @sp 2 -@c Published by the Free Software Foundation @* -@c 59 Temple Place -- Suite 330, @* -@c Boston, MA 02111-1307 USA @* -@c ISBN @value{ISBN} @* - -Permission is granted to copy, distribute and/or modify this document -under the terms of the GNU Free Documentation License, Version 1.1 or -any later version published by the Free Software Foundation; with the -Invariant Sections being "Free Software Needs Free Documentation" and -"GNU Lesser General Public License", the Front-Cover texts being (a) -(see below), and with the Back-Cover Texts being (b) (see below). A -copy of the license is included in the section entitled "GNU Free -Documentation License". - -(a) The FSF's Front-Cover Text is: - - A GNU Manual - -(b) The FSF's Back-Cover Text is: - - You have freedom to copy and modify this GNU Manual, like GNU - software. Copies published by the Free Software Foundation raise - funds for GNU development. - -This work is based on manual pages under the following copyright and license: - -@noindent -Mach Operating System@* -Copyright @copyright{} 1991,1990 Carnegie Mellon University@* -All Rights Reserved. - -Permission to use, copy, modify and distribute this software and its -documentation is hereby granted, provided that both the copyright -notice and this permission notice appear in all copies of the -software, derivative works or modified versions, and any portions -thereof, and that both notices appear in supporting documentation. - -CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" -CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR -ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. +@insertcopying @end titlepage @c @titlepage @c @finalout @@ -140,7 +95,7 @@ ANY DAMAGES WHATSOEVER RESULTING FROM TH @c @author Richard P. Draves @c (rpd) @c @author Mary R. Thompson @c (mrt) @c @author Joseph S. Barrera @c (jsb) -@c @c The following occure rarely in the rcs commit logs of the man pages: +@c @c The following occur rarely in the rcs commit logs of the man pages: @c @c Dan Stodolsky, (danner) @c @c David B. Golub, (dbg) @c @c Terri Watson, (elf) @@ -160,9 +115,8 @@ ANY DAMAGES WHATSOEVER RESULTING FROM TH @ifnottex @node Top @top Main Menu -This is Edition @value{EDITION}, last updated @value{UPDATED}, of -@cite{The GNU Mach Reference Manual}, for Version @value{VERSION} of the -GNU Mach microkernel. + +@insertcopying @end ifnottex @menu @@ -175,7 +129,7 @@ GNU Mach microkernel. * Threads and Tasks:: Handling of threads and tasks. * Host Interface:: Interface to a Mach host. * Processors and Processor Sets:: Handling processors and sets of processors. -* Device Interface:: Accesing kernel devices. +* Device Interface:: Accessing kernel devices. * Kernel Debugger:: How to use the built-in kernel debugger. Appendices @@ -341,7 +295,7 @@ Kernel Debugger Documentation License -* Free Documentation License:: The GNU Free Documentation License. +* GNU Free Documentation License:: The GNU Free Documentation License. * CMU License:: The CMU license applies to the original Mach kernel and its documentation. @@ -433,7 +387,7 @@ multi-server operating system, the Hurd. @c This paragraph by Gordon Matzigkeit from the Hurd manual. An operating system kernel provides a framework for programs to share a computer's hardware resources securely and efficiently. This requires -that the programs are seperated and protected from each other. To make +that the programs are separated and protected from each other. To make running multiple programs in parallel useful, there also needs to be a facility for programs to exchange information by communication. @@ -506,7 +460,7 @@ info manual. If you already have a running GNU system, and only want to recompile the kernel, for example to select a different set of included hardware drivers, you can easily do this. You need the GNU C compiler and -MiG, the Mach interface generator, which both come in their own +MIG, the Mach interface generator, which both come in their own packages. Building and installing the kernel is as easy as with any other GNU @@ -523,337 +477,509 @@ To install the kernel and its header fil make install @end example -This will install the kernel into $(prefix)/boot/gnumach and the header -files into $(prefix)/include. You can also only install the kernel or -the header files. For this, the two targets install-kernel and -install-headers are provided. - +This will install the kernel as @file{EXEC_PREFIX/boot/gnumach}, the header +files into @file{PREFIX/include/}, the list of message ids as +@file{PREFIX/share/msgids/gnumach.msgids} and the documentation into +@file{PREFIX/share/info/}. + +Note that there is also a way to only install the header and documentation +files without having to actually build the whole package: run @command{make +install-data} after having ran @command{configure} to do so. (This is needed +for bootstrapping a cross compiler and similar procedures.) @node Configuration @section Configuration -The following options can be passed to the configure script as command -line arguments and control what components are built into the kernel, or -where it is installed. +See the following tables for the options can be passed to the +@command{configure} script as command line arguments to control what components +are built into the kernel, how certain things are configured and so on. + +See the top-level @file{INSTALL} file for information about generic +@command{configure} options, like under which paths to install the package's +components. It also describes how to control the process by setting +environment variables. + +The file @file{i386/README-Drivers} has some i386-specific information for +device drivers. You should only need to consult this file in case a device +driver is not working for you. -The default for an option is to be disabled, unless otherwise noted. +@subsection Table of configure switches not related to device drivers @table @code -@item --prefix @var{prefix} -Sets the prefix to PREFIX. The default prefix is the empty string, which -is the correct value for the GNU system. The prefix is prepended to all -file names at installation time. - @item --enable-kdb -Enables the in-kernel debugger. This is only useful if you actually -anticipate debugging the kernel. It is not enabled by default because -it adds considerably to the unpageable memory footprint of the kernel. -@xref{Kernel Debugger}. +In-kernel debugger. This is only useful if you actually anticipate debugging +the kernel. It is not enabled by default because it adds considerably to the +unpageable memory footprint of the kernel. @xref{Kernel Debugger}. +@end table + +@table @code +@item --enable-pae +@acronym{PAE, Physical Address Extension} feature (@samp{ix86}-only), +which is available on modern @samp{ix86} processors; on @samp{ix86-at} disabled +by default, on @samp{ix86-xen} enabled by default. +@end table + +@subsection Turning device drivers on or off + +Each device driver has an associated configure switch. The following table +indicates whether a device driver is enabled by default or not. It also gives +--- if possible at all --- the configure switches to use for disabling or +enabling device drivers, in case you're not satisfied with the default choices. +You can specify @samp{--enable-device-drivers=WHICH} (where WHICH on +@samp{ix86-at} must be one of @samp{default}, @samp{qemu}, @samp{none}) to +preset a certain subset of all available device drivers. +@samp{--enable-device-drivers} is sugar for +@samp{--enable-device-drivers=default} (and is the implicit default +nevertheless) and @samp{--disable-device-drivers} is short for +@samp{--enable-device-drivers=none}. @samp{qemu} will include only the set of +device drivers that is useful when using the resulting kernel binary to drive a +Hurd system in the @acronym{QEMU} system emulator. This is only useful for +reducing the kernel build time and the kernel image size. -@item --enable-kmsg -Enables the kernel message device kmsg. +@subsection What the configure switches do + +Each configure switch has two effects. First, it defines a @acronym{CPP} +symbol that turns on or off the hooks that autoconfigure the device and add it +to the list of available devices. Second, it adds the source code for the +driver to a make variable so that the code for the driver is compiled and +linked into the kernel. Also follow this route to find the file(s) which are +implementing a certain device driver. + +@subsection Table of configure switches related to device drivers + +(@samp{%d} in the following denotes a unit number, starting with @samp{0}.) + +@table @code +@item --disable-kmsg +Kernel message device @samp{kmsg}. @item --enable-lpr -Enables the parallel port devices lpr%d. +Parallel port device driver for the @samp{lpr%d} devices. On @samp{ix86-at} +enabled by @samp{default}. @item --enable-floppy -Enables the PC floppy disk controller devices fd%d. +PC floppy disk controller device driver for the @samp{fd%d} devices. On +@samp{ix86-at} enabled by @samp{default} and for @samp{qemu}. @item --enable-ide -Enables the IDE controller devices hd%d, hd%ds%d. +IDE controller device driver for the @samp{hd%d} and @samp{hd%ds%d} (disks and +their partitions) devices. On @samp{ix86-at} enabled by @samp{default} and for +@samp{qemu}. @end table -The following options enable drivers for various SCSI controller. -SCSI devices are named sd%d (disks) or cd%d (CD ROMs). +The following options control drivers for various SCSI controller. SCSI +devices are named @samp{sd%d} and @samp{sd%ds$d} (disks and their partitions) +or @samp{cd%d} (CD ROMs). @table @code @item --enable-advansys -Enables the AdvanSys SCSI controller devices sd%d, cd%d. +AdvanSys SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-buslogic -Enables the BusLogic SCSI controller devices sd%d, cd%d. - -@item --disable-flashpoint -Only meaningful in conjunction with @option{--enable-buslogic}. Omits the -FlshPoint support. This option is enabled by default if -@option{--enable-buslogic} is specified. +BusLogic SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. -@item --enable-u1434f -Enables the UltraStor 14F/34F SCSI controller devices sd%d, cd%d. +@item --enable-flashpoint +Only meaningful in conjunction with the above BusLogic SCSI controller device +driver. Enable the FlashPoint support. + +@item --enable-u14-34f +UltraStor 14F/34F SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-ultrastor -Enables the UltraStor SCSI controller devices sd%d, cd%d. +UltraStor SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-aha152x -@itemx --enable-aha2825 -Enables the Adaptec AHA-152x/2825 SCSI controller devices sd%d, cd%d. +Adaptec AHA-152x/2825 SCSI controller device driver. On @samp{ix86-at} enabled +by @samp{default}. @item --enable-aha1542 -Enables the Adaptec AHA-1542 SCSI controller devices sd%d, cd%d. +Adaptec AHA-1542 SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-aha1740 -Enables the Adaptec AHA-1740 SCSI controller devices sd%d, cd%d. +Adaptec AHA-1740 SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-aic7xxx -Enables the Adaptec AIC7xxx SCSI controller devices sd%d, cd%d. +Adaptec AIC7xxx SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. -@item --enable-futuredomain -Enables the Future Domain 16xx SCSI controller devices sd%d, cd%d. +@item --enable-fdomain +Future Domain 16xx SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-in2000 -Enables the Always IN 2000 SCSI controller devices sd%d, cd%d. +Always IN 2000 SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. -@item --enable-ncr5380 -@itemx --enable-ncr53c400 -Enables the generic NCR5380/53c400 SCSI controller devices sd%d, cd%d. +@item --enable-g_NCR5380 +Generic NCR5380/53c400 SCSI controller device driver. -@item --enable-ncr53c406a -Enables the NCR53c406a SCSI controller devices sd%d, cd%d. +@item --enable-NCR53c406a +NCR53c406a SCSI controller device driver. @item --enable-pas16 -Enables the PAS16 SCSI controller devices sd%d, cd%d. +PAS16 SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-seagate -Enables the Seagate ST02 and Future Domain TMC-8xx SCSI controller -devices sd%d, cd%d. +Seagate ST02 and Future Domain TMC-8xx SCSI controller device driver. On +@samp{ix86-at} enabled by @samp{default}. @item --enable-t128 -@itemx --enable-t128f -@itemx --enable-t228 -Enables the Trantor T128/T128F/T228 SCSI controller devices sd%d, cd%d. - -@item --enable-ncr53c7xx -Enables the NCR53C7,8xx SCSI controller devices sd%d, cd%d. - -@item --enable-eatadma -Enables the EATA-DMA (DPT, NEC, AT&T, SNI, AST, Olivetti, Alphatronix) -SCSI controller devices sd%d, cd%d. - -@item --enable-eatapio -Enables the EATA-PIO (old DPT PM2001, PM2012A) SCSI controller devices -sd%d, cd%d. +Trantor T128/T128F/T228 SCSI controller device driver. On @samp{ix86-at} +enabled by @samp{default}. + +@item --enable-53c78xx +NCR53C7,8xx SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. + +@item --enable-eata_dma +EATA-DMA (DPT, NEC, AT&T, SNI, AST, Olivetti, Alphatronix) SCSI controller +device driver. + +@item --enable-eata_pio +EATA-PIO (old DPT PM2001, PM2012A) SCSI controller device driver. On +@samp{ix86-at} enabled by @samp{default}. @item --enable-wd7000 -Enables the WD 7000 SCSI controller devices sd%d, cd%d. +WD 7000 SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-eata -Enables the EATA ISA/EISA/PCI (DPT and generic EATA/DMA-compliant boards) -SCSI controller devices sd%d, cd%d. +EATA ISA/EISA/PCI (DPT and generic EATA/DMA-compliant boards) SCSI controller +device driver. On @samp{ix86-at} enabled by @samp{default}. @item --enable-am53c974 -@itemx --enable-am79c974 -Enables the AM53/79C974 SCSI controller devices sd%d, cd%d. +AM53/79C974 SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. -@item --enable-dtc3280 -@itemx --enable-dtc3180 -Enables the DTC3180/3280 SCSI controller devices sd%d, cd%d. +@item --enable-dtc +DTC3180/3280 SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-ncr53c8xx -@itemx --enable-dc390w -@itemx --enable-dc390u -@itemx --enable-dc390f -Enables the NCR53C8XX SCSI controller devices sd%d, cd%d. - -@item --enable-dc390t -@itemx --enable-dc390 -Enables the Tekram DC-390(T) SCSI controller devices sd%d, cd%d. +NCR53C8XX, dc390w, dc390u, dc390f SCSI controller device driver. On +@samp{ix86-at} enabled by @samp{default}. + +@item --enable-tmscsim +Tekram DC-390(T) SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-ppa -Enables the IOMEGA Parallel Port ZIP drive device sd%d. +IOMEGA Parallel Port ZIP drive device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-qlogicfas -Enables the Qlogic FAS SCSI controller devices sd%d, cd%d. +Qlogic FAS SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-qlogicisp -Enables the Qlogic ISP SCSI controller devices sd%d, cd%d. +Qlogic ISP SCSI controller device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-gdth -Enables the GDT SCSI Disk Array controller devices sd%d, cd%d. +GDT SCSI Disk Array controller device driver. On @samp{ix86-at} enabled by +@samp{default}. @end table -The following options enable drivers for various ethernet cards. -NIC device names are usually eth%d, except for the pocket adaptors. +The following options enable drivers for various ethernet cards. NIC devices +are usually named @samp{eth%d}, except for the pocket adaptors. -GNU Mach does only autodetect one ethernet card. To enable any further -cards, the source code has to be edited. +@c GNU Mach does only autodetect one ethernet card. To enable any further +@c cards, the source code has to be edited. @c XXX Reference to the source code. @table @code -@item --enable-ne2000 -@itemx --enable-ne1000 -Enables the NE2000/NE1000 ISA netword card devices eth%d. +@item --enable-ne +NE2000/NE1000 ISA network card device driver. On @samp{ix86-at} enabled by +@samp{default} and for @samp{qemu}. @item --enable-3c503 -@itemx --enable-el2 -Enables the 3Com 503 (Etherlink II) netword card devices eth%d. +3Com 503 (Etherlink II) network card device driver. On @samp{ix86-at} enabled +by @samp{default}. @item --enable-3c509 -@itemx --enable-3c579 -@itemx --enable-el3 -Enables the 3Com 509/579 (Etherlink III) netword card devices eth%d. +3Com 509/579 (Etherlink III) network card device driver. On @samp{ix86-at} +enabled by @samp{default}. -@item --enable-wd80x3 -Enables the WD80X3 netword card devices eth%d. +@item --enable-wd +WD80X3 network card device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-3c501 -@itemx --enable-el1 -Enables the 3COM 501 netword card devices eth%d. - -@item --enable-ul -Enables the SMC Ultra netword card devices eth%d. - -@item --enable-ul32 -Enables the SMC Ultra 32 netword card devices eth%d. +3COM 501/Etherlink I network card device driver. On @samp{ix86-at} enabled by +@samp{default}. -@item --enable-hplanplus -Enables the HP PCLAN+ (27247B and 27252A) netword card devices eth%d. - -@item --enable-hplan -Enables the HP PCLAN (27245 and other 27xxx series) netword card devices eth%d. +@item --enable-smc-ultra +SMC Ultra network card device driver. On @samp{ix86-at} enabled by +@samp{default}. + +@item --enable-smc-ultra32 +SMC Ultra 32 network card device driver. On @samp{ix86-at} enabled by +@samp{default}. + +@item --enable-hp-plus +HP PCLAN+ (27247B and 27252A) network card device driver. On @samp{ix86-at} +enabled by @samp{default}. + +@item --enable-hp +HP PCLAN (27245 and other 27xxx series) network card device driver. On +@samp{ix86-at} enabled by @samp{default}. @item --enable-3c59x -@itemx --enable-3c90x -@itemx --enable-vortex -Enables the 3Com 590/900 series (592/595/597/900/905) "Vortex/Boomerang" -netword card devices eth%d. +3Com 590/900 series (592/595/597/900/905) "Vortex/Boomerang" network card +device driver. On @samp{ix86-at} enabled by @samp{default}. @item --enable-seeq8005 -Enables the Seeq8005 netword card devices eth%d. +Seeq8005 network card device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-hp100 -@itemx --enable-hpj2577 -@itemx --enable-hpj2573 -@itemx --enable-hp27248b -@itemx --enable-hp2585 -Enables the HP 10/100VG PCLAN (ISA, EISA, PCI) netword card devices -eth%d. +HP 10/100VG PCLAN (ISA, EISA, PCI) network card device driver. On +@samp{ix86-at} enabled by @samp{default}. @item --enable-ac3200 -Enables the Ansel Communications EISA 3200 netword card devices eth%d. +Ansel Communications EISA 3200 network card device driver. On @samp{ix86-at} +enabled by @samp{default}. @item --enable-e2100 -Enables the Cabletron E21xx netword card devices eth%d. +Cabletron E21xx network card device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-at1700 -Enables the AT1700 (Fujitsu 86965) netword card devices eth%d. +AT1700 (Fujitsu 86965) network card device driver. On @samp{ix86-at} enabled +by @samp{default}. @item --enable-eth16i -@itemx --enable-eth32 -Enables the ICL EtherTeam 16i/32 netword card devices eth%d. +ICL EtherTeam 16i/32 network card device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-znet -@itemx --enable-znote -Enables the Zenith Z-Note netword card devices eth%d. +Zenith Z-Note network card device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-eexpress -Enables the EtherExpress 16 netword card devices eth%d. - -@item --enable-eexpresspro -Enables the EtherExpressPro netword card devices eth%d. +EtherExpress 16 network card device driver. On @samp{ix86-at} enabled by +@samp{default}. -@item --enable-eexpresspro100 -Enables the Intel EtherExpressPro PCI 10+/100B/100+ netword card devices -eth%d. +@item --enable-eepro +EtherExpressPro network card device driver. On @samp{ix86-at} enabled by +@samp{default}. + +@item --enable-eepro100 +Intel EtherExpressPro PCI 10+/100B/100+ network card device driver. On +@samp{ix86-at} enabled by @samp{default}. @item --enable-depca -@itemx --enable-de100 -@itemx --enable-de101 -@itemx --enable-de200 -@itemx --enable-de201 -@itemx --enable-de202 -@itemx --enable-de210 -@itemx --enable-de422 -Enables the DEPCA, DE10x, DE200, DE201, DE202, DE210, DE422 netword card -devices eth%d. +DEPCA, DE10x, DE200, DE201, DE202, DE210, DE422 network card device driver. On +@samp{ix86-at} enabled by @samp{default}. @item --enable-ewrk3 -@itemx --enable-de203 -@itemx --enable-de204 -@itemx --enable-de205 -Enables the EtherWORKS 3 (DE203, DE204, DE205) netword card devices -eth%d. +EtherWORKS 3 (DE203, DE204, DE205) network card device driver. On +@samp{ix86-at} enabled by @samp{default}. @item --enable-de4x5 -@itemx --enable-de425 -@itemx --enable-de434 -@itemx --enable-435 -@itemx --enable-de450 -@itemx --enable-500 -Enables the DE425, DE434, DE435, DE450, DE500 netword card devices -eth%d. +DE425, DE434, DE435, DE450, DE500 network card device driver. On +@samp{ix86-at} enabled by @samp{default}. @item --enable-apricot -Enables the Apricot XEN-II on board ethernet netword card devices eth%d. +Apricot XEN-II on board ethernet network card device driver. On @samp{ix86-at} +enabled by @samp{default}. @item --enable-wavelan -Enables the AT&T WaveLAN & DEC RoamAbout DS netword card devices eth%d. +AT&T WaveLAN & DEC RoamAbout DS network card device driver. @item --enable-3c507 -@itemx --enable-el16 -Enables the 3Com 507 netword card devices eth%d. +3Com 507 network card device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-3c505 -@itemx --enable-elplus -Enables the 3Com 505 netword card devices eth%d. +3Com 505/Etherlink II network card device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-de600 -Enables the D-Link DE-600 netword card devices eth%d. +D-Link DE-600 network card device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-de620 -Enables the D-Link DE-620 netword card devices eth%d. +D-Link DE-620 network card device driver. On @samp{ix86-at} enabled by +@samp{default}. -@item --enable-skg16 -Enables the Schneider & Koch G16 netword card devices eth%d. +@item --enable-sk_g16 +Schneider & Koch G16 network card device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-ni52 -Enables the NI5210 netword card devices eth%d. +NI5210 network card device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-ni65 -Enables the NI6510 netword card devices eth%d. +NI6510 network card device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-atp -Enables the AT-LAN-TEC/RealTek pocket adaptor netword card devices atp%d. +AT-LAN-TEC/RealTek pocket adaptor network card device driver for the +@samp{atp%d} devices. @item --enable-lance -@itemx --enable-at1500 -@itemx --enable-ne2100 -Enables the AMD LANCE and PCnet (AT1500 and NE2100) netword card devices eth%d. - -@item --enable-elcp -@itemx --enable-tulip -Enables the DECchip Tulip (dc21x4x) PCI netword card devices eth%d. +AMD LANCE and PCnet (AT1500 and NE2100) network card device driver. On +@samp{ix86-at} enabled by @samp{default}. + +@item --enable-tulip +DECchip Tulip (dc21x4x) PCI network card device driver. On @samp{ix86-at} +enabled by @samp{default}. @item --enable-fmv18x -Enables the FMV-181/182/183/184 netword card devices eth%d. +FMV-181/182/183/184 network card device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-3c515 -Enables the 3Com 515 ISA Fast EtherLink netword card devices eth%d. +3Com 515 ISA Fast EtherLink network card device driver. On @samp{ix86-at} +enabled by @samp{default}. @item --enable-pcnet32 -Enables the AMD PCI PCnet32 (PCI bus NE2100 cards) netword card devices -eth%d. +AMD PCI PCnet32 (PCI bus NE2100 cards) network card device driver. On +@samp{ix86-at} enabled by @samp{default}. -@item --enable-ne2kpci -Enables the PCI NE2000 netword card devices eth%d. +@item --enable-ne2k-pci +PCI NE2000 network card device driver. On @samp{ix86-at} enabled by +@samp{default}. @item --enable-yellowfin -Enables the Packet Engines Yellowfin Gigabit-NIC netword card devices -eth%d. +Packet Engines Yellowfin Gigabit-NIC network card device driver. On +@samp{ix86-at} enabled by @samp{default}. @item --enable-rtl8139 -@itemx --enable-rtl8129 -Enables the RealTek 8129/8139 (not 8019/8029!) netword card devices -eth%d. - -@item --enable-epic -@itemx --enable-epic100 -Enables the SMC 83c170/175 EPIC/100 (EtherPower II) netword card devices eth%d. +RealTek 8129/8139 (not 8019/8029!) network card device driver. On +@samp{ix86-at} enabled by @samp{default}. + +@item --enable-epic100 +SMC 83c170/175 EPIC/100 (EtherPower II) network card device driver. On +@samp{ix86-at} enabled by @samp{default}. @item --enable-tlan -Enables the TI ThunderLAN netword card devices eth%d. +TI ThunderLAN network card device driver. On @samp{ix86-at} enabled by +@samp{default}. + +@item --enable-via-rhine +VIA Rhine network card device driver. On @samp{ix86-at} enabled by +@samp{default}. + +@item --enable-hamachi +Packet Engines "Hamachi" GNIC-2 Gigabit Ethernet device driver. On +@samp{ix86-at} enabled by @samp{default}. + +@item --enable-intel-gige +Intel PCI Gigabit Ethernet device driver. On @samp{ix86-at} enabled by +@samp{default}. + +@item --enable-myson803 +Myson MTD803 Ethernet adapter series device driver. On @samp{ix86-at} enabled +by @samp{default}. + +@item --enable-natsemi +National Semiconductor DP8381x series PCI Ethernet device driver. On +@samp{ix86-at} enabled by @samp{default}. + +@item --enable-ns820 +National Semiconductor DP8382x series PCI Ethernet device driver. On +@samp{ix86-at} enabled by @samp{default}. + +@item --enable-starfire +Adaptec Starfire network adapter device driver. On @samp{ix86-at} enabled by +@samp{default}. + +@item --enable-sundance +Sundance ST201 "Alta" PCI Ethernet device driver. On @samp{ix86-at} enabled by +@samp{default}. + +@item --enable-winbond-840 +Winbond W89c840 PCI Ethernet device driver. On @samp{ix86-at} enabled by +@samp{default}. +@end table + +The following options either control device drivers for supported PCMCIA +bridges or control the overall behaviour of the GNU Mach PCMCIA core. To make +use of GNU Mach PCMCIA support you need to have the corresponding userland +applications (GNU Mach Card Services) installed. + +@table @code +@item --enable-i82365 +Device driver for the Intel 82365 and compatible PC Card controllers, and +Yenta-compatible PCI-to-CardBus controllers. On @samp{ix86-at} enabled by +@samp{default}. + +@item --enable-pcmcia-isa +ISA bus related bits in the GNU Mach PCMCIA core. Keeping it enabled is +generally a good idea, since it does not only have effect if your PC Card +bridge is attached to the ISA bus, but provides more (ISA) interrupts to the +Card Services for it to assign to the cards in turn. On @samp{ix86-at} enabled +by @samp{default}. +@end table + +The following options control device drivers for supported PCMCIA Ethernet +controllers. NIC devices are usually named @samp{eth%d}. + +@table @code +@item --enable-3c574_cs +PCMCIA ethernet driver for the 3Com 3c574 ``RoadRunner''. On @samp{ix86-at} +enabled by @samp{default}. + +@item --enable-3c589_cs +Driver for the 3Com 3c589 PCMCIA card. On @samp{ix86-at} enabled by +@samp{default}. + +@item --enable-axnet_cs +Driver for the Asix AX88190-based PCMCIA cards. On @samp{ix86-at} enabled by +@samp{default}. + +@item --enable-fmvj18x_cs +Driver for PCMCIA cards with the fmvj18x chipset. On @samp{ix86-at} enabled by +@samp{default}. + +@item --enable-nmclan_cs +Driver for the New Media Ethernet LAN PCMCIA cards. On @samp{ix86-at} enabled +by @samp{default}. + +@item --enable-pcnet_cs +Driver for NS8390-based PCMCIA cards. This driver supports the D-Link DE-650 +and Linksys EthernetCard cards, the newer D-Link and Linksys combo cards, +Accton EN2212 cards, the RPTI EP400, and the PreMax PE-200 in non-shared-memory +mode, and the IBM Credit Card Adapter, the NE4100, the Thomas Conrad ethernet +card, and the Kingston KNE-PCM/x in shared-memory mode. It will also handle +the Socket EA card in either mode. On @samp{ix86-at} enabled by +@samp{default}. + +@item --enable-smc91c92_cs +Driver for SMC91c92-based PCMCIA cards. On @samp{ix86-at} enabled by +@samp{default}. + +@item --enable-xirc2ps_cs +Driver for Xircom CreditCard and Realport PCMCIA ethernet adapters. On +@samp{ix86-at} enabled by @samp{default}. +@end table + +The following options control device drivers for supported PCMCIA Wireless LAN +network controllers. NIC devices are usually named @samp{eth%d}. -@item --enable-viarhine -Enables the VIA Rhine netword card devices eth%d. +Please mind, that you need to have some userland applications (the GNU Mach +Wireless Tools) installed, in order to make use of these devices. + +@table @code +@item --enable-orinoco_cs +Driver for the Hermes or Prism 2 chipset based PCMCIA wireless adapters, with +Lucent/Agere, Intersil or Symbol firmware. This driver is suitable for PCMCIA +wireless adapters, such as the Lucent WavelanIEEE/Orinoco cards and their OEM +(Cabletron/EnteraSys RoamAbout 802.11, ELSA Airlancer, Melco Buffalo and +others). It should also be usable on various Prism II based cards such as the +Linksys, D-Link and Farallon Skyline. It should also work on Symbol cards such +as the 3Com AirConnect and Ericsson WLAN. On @samp{ix86-at} enabled by +@samp{default}. @end table @@ -905,8 +1031,8 @@ disk, and directly start a more advanced @cindex GRUB @cindex GRand Unified Bootloader -Currently, @dfn{GRUB}@footnote{The GRand Unified Bootloader, available -from @uref{http://www.uruk.org/grub/}.} is the preferred GNU bootloader. +@dfn{GRUB}@footnote{The GRand Unified Bootloader, available +from @uref{http://gnu.org/software/grub/}.} is the GNU bootloader. GRUB provides advanced functionality, and is capable of loading several different kernels (such as Mach, Linux, DOS, and the *BSD family). @xref{Top, , Introduction, grub, GRUB Manual}. @@ -925,6 +1051,8 @@ started. @xref{Top, , Overview, multibo @section Modules @pindex serverboot +This is outdated. + Because the microkernel does not provide filesystem support and other features necessary to load the first system task from a storage medium, the first task is loaded by the bootloader as a module to a specified @@ -1394,7 +1522,7 @@ positive integers. Except for the reser @w{@code{MACH_PORT_NULL (0)}@footnote{In the Hurd system, we don't make the assumption that @code{MACH_PORT_NULL} is zero and evaluates to false, but rather compare port names to @code{MACH_PORT_NULL} -explicitely}} and @w{@code{MACH_PORT_DEAD (~0)}}, this is a full 32-bit +explicitly}} and @w{@code{MACH_PORT_DEAD (~0)}}, this is a full 32-bit name space. When the kernel chooses a name for a new right, it is free to pick any unused name (one which denotes no right) in the space. @@ -1611,7 +1739,7 @@ specified, then @code{MACH_SEND_NOTIFY} timeout interval elapses. With @code{MACH_SEND_NOTIFY}, a task can forcibly queue to a send right -one message at a time. A msg-accepted notification is sent to the the +one message at a time. A msg-accepted notification is sent to the notify port when another message can be forcibly queued. If an attempt is made to use @code{MACH_SEND_NOTIFY} before then, the call returns a @code{MACH_SEND_NOTIFY_IN_PROGRESS} error. @@ -2765,7 +2893,7 @@ return codes. @c @code{mach_init} in the child task will acquire these initial ports for @c the child. -@c Tasks other than the Network Name Server and the Environment Mangager +@c Tasks other than the Network Name Server and the Environment Manager @c should not need access to the Service port. The Network Name Server port @c is the same for all tasks on a given machine. The Environment port is @c the only port likely to have different values for different tasks. @@ -2870,7 +2998,7 @@ virtual page boundaries, more than @var{ Use @code{vm_page_size} or @code{vm_statistics} to find out the current virtual page size. -This call may be used to deallocte memory that was passed to a task in a +This call may be used to deallocate memory that was passed to a task in a message (via out of line data). In that case, the rounding should cause no trouble, since the region of memory was allocated as a set of pages. @@ -2912,7 +3040,7 @@ to be returned. @end deftypefun @deftypefun kern_return_t vm_write (@w{vm_task_t @var{target_task}}, @w{vm_address_t @var{address}}, @w{vm_offset_t @var{data}}, @w{mach_msg_type_number_t @var{data_count}}) -The function @code{vm_write} allows a task to write to the vrtual memory +The function @code{vm_write} allows a task to write to the virtual memory of @var{target_task}. @var{address} is the starting address in task to be affected. @var{data} is an array of bytes to be written, and @var{data_count} the size of the @var{data} array. @@ -3016,7 +3144,7 @@ The function @code{vm_inherit} specifies @var{target_task}'s address space is to be passed to child tasks at the time of task creation. Inheritance is an attribute of virtual pages, so @var{address} to start from will be rounded down to a page boundary and -@var{size}, the size in bytes of the region for wihch inheritance is to +@var{size}, the size in bytes of the region for which inheritance is to change, will be rounded up to give a page boundary. How this memory is to be inherited in child tasks is specified by @var{new_inheritance}. Inheritance is specified by using one of these following three values: @@ -3034,7 +3162,7 @@ This region will be absent from child ta Setting @code{vm_inherit} to @code{VM_INHERIT_SHARE} and forking a child task is the only way two Mach tasks can share physical memory. Remember -that all the theads of a given task share all the same memory. +that all the threads of a given task share all the same memory. The function returns @code{KERN_SUCCESS} if the memory inheritance was successfully set and @code{KERN_INVALID_ADDRESS} if an invalid or @@ -3178,7 +3306,7 @@ the address of the resulting region in @ by user tasks in @code{vm_map}; used by the make requests for data or other management actions. If this port is @code{MEMORY_OBJECT_NULL}, then zero-filled memory is allocated instead. Within a memory object, -@var{offset} specifes an offset in bytes. This must be page aligned. +@var{offset} specifies an offset in bytes. This must be page aligned. If @var{copy} is set, the range of the memory object should be copied to the target task, rather than mapped read-write. @@ -3337,7 +3465,7 @@ object data, as supplied to the kernel i requested. (In the event that a memory object has been supplied to more than one the kernel that has made the request.) @var{memory_object_name} is a port used by the kernel to refer to the -memory object data in reponse to @code{vm_region} calls. +memory object data in response to @code{vm_region} calls. @code{memory_object_page_size} is the page size to be used by this kernel. All data sizes in calls involving this kernel must be an integral multiple of the page size. Note that different kernels, @@ -3393,7 +3521,7 @@ object data, as supplied to the kernel i requested. (In the event that a memory object has been supplied to more than one the kernel that has made the request.) @var{memory_object_name} is a port used by the kernel to refer to the -memory object data in reponse to @code{vm_region} calls. +memory object data in response to @code{vm_region} calls. The function should return @code{KERN_SUCCESS}, but since this routine is called by the kernel, which does not wait for a reply message, this @@ -3416,7 +3544,7 @@ The argument @var{memory_control} is the a @code{memory_object_init} call, to which cache management requests may be issued. @var{reason} is an error code indicating why the object must be destroyed. -@c The error code is currently ingnored. +@c The error code is currently ignored. This routine does not receive a reply message (and consequently has no return value), so only message transmission errors apply. @@ -3491,7 +3619,7 @@ value is ignored. @deftypefun kern_return_t memory_object_data_supply (@w{memory_object_control_t @var{memory_control}}, @w{vm_offset_t @var{offset}}, @w{vm_offset_t @var{data}}, @w{vm_size_t @var{data_count}}, @w{vm_prot_t @var{lock_value}}, @w{boolean_t @var{precious}}, @w{mach_port_t @var{reply}}) The function @code{memory_object_data_supply} supplies the kernel with data for the specified memory object. Ordinarily, memory managers -should only provide data in reponse to @code{memory_object_data_request} +should only provide data in response to @code{memory_object_data_request} calls from the kernel (but they may provide data in advance as desired). When data already held by this kernel is provided again, the new data is ignored. The kernel may not provide any data (or protection) @@ -3566,8 +3694,8 @@ This must be page aligned. @var{data} i provided to the kernel. This is a pointer to the data. @var{size} is the amount of cached data (starting at @var{offset}) to be handled. This must be an integral number of the memory object page size. -@var{reason} is an error code indicating what type of error occured. -@c The error code is currently ingnored. +@var{reason} is an error code indicating what type of error occurred. +@c The error code is currently ignored. This routine does not receive a reply message (and consequently has no return value), so only message transmission errors apply. @@ -3649,7 +3777,7 @@ is called by the kernel, which does not value is ignored. @end deftypefun -The remaining interfaces in this section are obsolet. +The remaining interfaces in this section are obsolete. @deftypefun kern_return_t memory_object_data_write (@w{memory_object_t @var{memory_object}}, @w{memory_object_control_t @var{memory_control}}, @w{vm_offset_t @var{offset}}, @w{vm_offset_t @var{data}}, @w{vm_size_t @var{data_count}}) @deftypefunx kern_return_t seqnos_memory_object_data_write (@w{memory_object_t @var{memory_object}}, @w{mach_port_seqno_t @var{seqno}}, @w{memory_object_control_t @var{memory_control}}, @w{vm_offset_t @var{offset}}, @w{vm_offset_t @var{data}}, @w{vm_size_t @var{data_count}}) @@ -3679,7 +3807,7 @@ value is ignored. The function @code{memory_object_data_provided} supplies the kernel with data for the specified memory object. It is the old form of @code{memory_object_data_supply}. Ordinarily, memory managers should -only provide data in reponse to @code{memory_object_data_request} calls +only provide data in response to @code{memory_object_data_request} calls from the kernel. The @var{lock_value} specifies what type of access will not be allowed to the data range. The lock values must be one or more of the set: @code{VM_PROT_NONE}, @code{VM_PROT_READ}, @@ -3748,7 +3876,7 @@ modified data should be written back to invalidated, and all uses of that data should be revoked. @var{lock_value} is a protection value indicating those forms of access that should @strong{not} be permitted to the specified cached data. -@var{reply_to} is a port on which a @code{memory_object_lock_comleted} +@var{reply_to} is a port on which a @code{memory_object_lock_completed} call should be issued, or @code{MACH_PORT_NULL} if no acknowledgement is desired. @@ -3846,7 +3974,7 @@ be issued. If @var{may_cache_object} is associated with this memory object, even after virtual memory references to it are gone. @var{copy_strategy} tells how the kernel should copy regions of the associated memory object. @var{reply_to} is a port on -which a @code{memory_object_change_comleted} call will be issued upon +which a @code{memory_object_change_completed} call will be issued upon completion of the attribute change, or @code{MACH_PORT_NULL} if no acknowledgement is desired. @@ -3873,7 +4001,7 @@ ready, the kernel will write back data u @code{memory_object_data_return}.. @deftypefun kern_return_t memory_object_set_attributes (@w{memory_object_control_t @var{memory_control}}, @w{boolean @var{object_ready}}, @w{boolean_t @var{may_cache_object}}, @w{memory_object_copy_strategy_t @var{copy_strategy}}) -The function @code{memory_object_set_attribute} controls how the the +The function @code{memory_object_set_attribute} controls how the memory object. The kernel will only make data or unlock requests when the ready attribute is asserted. If the caching attribute is asserted, the kernel is permitted (and encouraged) to maintain cached data for @@ -3982,7 +4110,7 @@ call. @var{memory_control} is the reque requested. (In the event that a memory object has been supplied to more than one the kernel that has made the request.) @var{offset} is the offset within a memory object to which this call refers. This will be -page aligned. @var{data} os the data which has been modified while +page aligned. @var{data} is the data which has been modified while cached in physical memory. @var{data_count} is the amount of data to be written, in bytes. This will be an integral number of memory object pages. @@ -4112,7 +4240,7 @@ run state, and scheduling priority. The @code{THREAD_BASIC_INFO_COUNT}. @item THREAD_SCHED_INFO -The function returns information about the schduling policy for the +The function returns information about the scheduling policy for the thread as defined by @code{thread_sched_info_t}. The number of integers returned is @code{THREAD_SCHED_INFO_COUNT}. @end table @@ -4150,7 +4278,7 @@ The base scheduling priority of the thre The current scheduling priority of the thread. @item integer_t run_state -The run state of the thread. The possible vlues of this field are: +The run state of the thread. The possible values of this field are: @table @code @item TH_STATE_RUNNING The thread is running normally. @@ -4266,9 +4394,9 @@ executing any more user level instructio level instruction is either a machine instruction executed in user mode or a system trap instruction including page faults. Thus if a thread is currently executing within a system trap the kernel code may continue to -execute until it reaches the system return code or it may supend within +execute until it reaches the system return code or it may suspend within the kernel code. In either case, when the thread is resumed the system -trap will return. This could cause unpredictible results if the user +trap will return. This could cause unpredictable results if the user did a suspend and then altered the user state of the thread in order to change its direction upon a resume. The call @code{thread_abort} is provided to allow the user to abort any system call that is in progress @@ -4283,7 +4411,7 @@ a thread. @end deftypefun @deftypefun kern_return_t thread_resume (@w{thread_t @var{target_thread}}) -Decrements the threads's suspend count. If the count becomes zero the +Decrements the thread's suspend count. If the count becomes zero the thread is resumed. If it is still positive, the thread is left suspended. The suspend count may not become negative. @@ -4297,8 +4425,8 @@ The function @code{thread_abort} aborts @code{mach_msg}, @code{msg_send}, @code{msg_receive} and @code{msg_rpc} and page-faults, making the call return a code indicating that it was interrupted. The call is interrupted whether or not the thread (or task -containing it) is currently suspended. If it is supsended, the thread -receives the interupt when it is resumed. +containing it) is currently suspended. If it is suspended, the thread +receives the interrupt when it is resumed. A thread will retry an aborted page-fault if its state is not modified before it is resumed. @code{msg_send} returns @code{SEND_INTERRUPTED}; @@ -4375,7 +4503,7 @@ The definition of the state structures c The function returns @code{KERN_SUCCESS} if the state has been returned, @code{KERN_INVALID_ARGUMENT} if @var{target_thread} is not a thread or -is @code{mach_thread_self} or @var{flavor} is unrecogized for this machine. +is @code{mach_thread_self} or @var{flavor} is unrecognized for this machine. The function returns @code{MIG_ARRAY_TOO_LARGE} if the returned state is too large for @var{old_state}. In this case, @var{old_state} is filled as much as possible and @var{old_stateCnt} is set to the number of @@ -4397,7 +4525,7 @@ The definition of the state structures c The function returns @code{KERN_SUCCESS} if the state has been set and @code{KERN_INVALID_ARGUMENT} if @var{target_thread} is not a thread or -is @code{mach_thread_self} or @var{flavor} is unrecogized for this +is @code{mach_thread_self} or @var{flavor} is unrecognized for this machine. @end deftypefun @@ -4467,14 +4595,15 @@ whose control port was presented. The function @code{thread_switch} provides low-level access to the scheduler's context switching code. @var{new_thread} is a hint that implements hand-off scheduling. The operating system will attempt to -switch directly to the new thread (by passing the normal logic that +switch directly to the new thread (bypassing the normal logic that selects the next thread to run) if possible. Since this is a hint, it may be incorrect; it is ignored if it doesn't specify a thread on the same host as the current thread or if that thread can't be switched to -(i.e., not runnable or already running on another processor). In this -case, the normal logic to select the next thread to run is used; the -current thread may continue running if there is no other appropriate -thread to run. +(i.e., not runnable or already running on another processor or giving +a plainly invalid hint, such as @code{MACH_PORT_NULL}). In this case, +the normal logic to select the next thread to run is used; the current +thread may continue running if there is no other appropriate thread to +run. Options for @var{option} are defined in @file{mach/thread_switch.h} and specify the interpretation of @var{time}. The possible values for @@ -4485,8 +4614,9 @@ specify the interpretation of @var{time} No options, the time argument is ignored. @item SWITCH_OPTION_WAIT -The thread is blocked for the specified time. This can be aborted by -@code{thread_abort}. +The thread is blocked for the specified time (in milliseconds; +specifying @code{0} will wait for the next tick). This can be aborted +by @code{thread_abort}. @item SWITCH_OPTION_DEPRESS The thread's priority is depressed to the lowest possible value for the @@ -4495,7 +4625,7 @@ This depression is independent of operat priority (e.g. @code{thread_priority} will not abort the depression). The minimum time and units of time can be obtained as the @code{min_timeout} value from @code{host_info}. The depression is also -aborted when the current thread is next run (either via hand­off +aborted when the current thread is next run (either via hand-off scheduling or because the processor set has nothing better to do). @end table @@ -4520,7 +4650,7 @@ highly recommended. @code{thread_switch} ignores policies. Users relying on the preemption semantics of a fixed time policy should be aware that @code{thread_switch} ignores these semantics; it will run the specified -@var{new_thread} indepent of its priority and the priority of any other +@var{new_thread} independent of its priority and the priority of any other threads that could be run instead. The function returns @code{KERN_SUCCESS} if the call succeeded, @@ -4661,7 +4791,7 @@ XXX Fixme The system trap @code{evc_wait} makes the calling thread wait for the event specified by @var{event}. -The call returns @code{KERN_SUCCESS} if the event has occured, +The call returns @code{KERN_SUCCESS} if the event has occurred, @code{KERN_NO_SPACE} if another thread is waiting for the same event and @code{KERN_INVALID_ARGUMENT} if the event object is invalid. @end deftypefun @@ -4757,7 +4887,7 @@ expects to be able to use it. As the ke number of extant send rights anyway, this is safe to do (the task port itself is not destroyed, even when there are no send rights anymore). -The funcion returns @code{MACH_PORT_NULL} if a resource shortage +The function returns @code{MACH_PORT_NULL} if a resource shortage prevented the reception of the send right, @code{MACH_PORT_NULL} if the task port is currently null, @code{MACH_PORT_DEAD} if the task port is currently dead. @@ -4971,7 +5101,7 @@ application knows what it's doing. A task may have a finite number of atomic sequences that is defined at compile time. -The flavor specifices the particular operation that should be applied to +The flavor specifies the particular operation that should be applied to this restartable atomic sequence. Possible values for flavor can be: @table @code @@ -5095,14 +5225,14 @@ handler entry points for all emulated sy The function @code{task_set_emulation_vector} establishes user-level handlers for the specified system calls. Non-emulated system calls are specified with an entry of @code{EML_ROUTINE_NULL}. System call -emulation handlers are inherited by the childs of @var{task}. +emulation handlers are inherited by the children of @var{task}. @c XXX Fixme @end deftypefun @deftypefun kern_return_t task_set_emulation (@w{task_t @var{task}}, @w{vm_address_t @var{routine_entry_pt}}, @w{int @var{routine_number}}) The function @code{task_set_emulation} establishes a user-level handler for the specified system call. System call emulation handlers are -inherited by the childs of @var{task}. +inherited by the children of @var{task}. @c XXX Fixme @end deftypefun @@ -5702,7 +5832,7 @@ or @var{processor_set} is not a processo The function @code{task_assign_default} is a variant of @code{task_assign} that assigns the task to the default processor set on that task's host. This variant exists because the control port for the -default processor set is privileged and not ususally available to users. +default processor set is privileged and not usually available to users. This function returns @code{KERN_SUCCESS} if the assignment has been performed and @code{KERN_INVALID_ARGUMENT} if @var{task} is not a task. @@ -5739,7 +5869,7 @@ as @var{thread}. The function @code{thread_assign_default} is a variant of @code{thread_assign} that assigns the thread to the default processor set on that thread's host. This variant exists because the control port -for the default processor set is privileged and not ususally available +for the default processor set is privileged and not usually available to users. This function returns @code{KERN_SUCCESS} if the assignment has been @@ -5838,7 +5968,7 @@ of tasks and threads assigned to the pro integers returned is @code{PROCESSOR_SET_BASIC_INFO_COUNT}. @item PROCESSOR_SET_SCHED_INFO -The function returns information about the schduling policy for the +The function returns information about the scheduling policy for the processor set as defined by @code{processor_set_sched_info_t}. The number of integers returned is @code{PROCESSOR_SET_SCHED_INFO_COUNT}. @end table @@ -5981,7 +6111,7 @@ likely reason is that it is not supporte @subsection Processors and Sets @deftypefun kern_return_t processor_assign (@w{processor_t @var{processor}}, @w{processor_set_t @var{processor_set}}, @w{boolean_t @var{wait}}) -The function @code{processor_assign} assigns @var{processor} to the the +The function @code{processor_assign} assigns @var{processor} to the set @var{processor_set}. After the assignment is completed, the processor only executes threads that are assigned to that processor set. Any previous assignment of the processor is nullified. The master @@ -6122,7 +6252,7 @@ All constants and functions in this chap Beside the usual synchronous interface, an asynchronous interface is provided. For this, the caller has to receive and handle the reply -messages seperately from the function call. +messages separately from the function call. @deftypefun boolean_t device_reply_server (@w{msg_header_t *@var{in_msg}}, @w{msg_header_t *@var{out_msg}}) The function @code{device_reply_server} is produced by the @@ -6309,7 +6439,7 @@ except that the data is sent ``in-line'' The function @code{device_map} creates a new memory manager for @var{device} and returns a port to it in @var{pager}. The memory manager is usable as a memory object in a @code{vm_map} call. The call -is device dependant. +is device dependent. The protection for the memory object is specified by @var{prot}. The memory object starts at @var{offset} within the device and extends @@ -6351,7 +6481,7 @@ device port or the device is dead or not @deftypefun kern_return_t device_set_filter (@w{device_t @var{device}}, @w{mach_port_t @var{receive_port}}, @w{mach_msg_type_name_t @var{receive_port_type}}, @w{int @var{priority}}, @w{filter_array_t @var{filter}}, @w{mach_msg_type_number_t @var{filter_count}}) The function @code{device_set_filter} makes it possible to filter out -selected data arriving at the device and forward it to a port. +selected data arriving at or leaving the device and forward it to a port. @var{filter} is a list of filter commands, which are applied to incoming data to determine if the data should be sent to @var{receive_port}. The IPC type of the send right is specified by @var{receive_port_right}, it @@ -6365,6 +6495,33 @@ purpose of the filter test, an internal commands have been processed, the value on the top of the stack determines if the data is forwarded or the next filter is tried. +The first command is a header which contains two fields: one for flags +and the other for the type of interpreter used to run the rest of the +commands. + +Any combination of the following flags is allowed but at least one of them +must be specified. + +@table @code +@item NETF_IN +The filter will be applied to data received by the device. + +@item NETF_OUT +The filter will be applied to data transmitted by the device. +@end table + +Unless the type is given explicitly the native NETF interpreter will be used. +To select an alternative implementation use one of the following types: + +@table @code +@item NETF_BPF +Use Berkeley Packet Filter. +@end table + +For the listener to know what kind of packet is being received, when the +filter code accepts a packet the message sent to @var{receive_port} is +tagged with either NETF_IN or NETF_OUT. + @c XXX The following description was taken verbatim from the @c kernel_interface.pdf document. Each word of the command list specifies a data (push) operation (high @@ -6861,8 +7018,8 @@ session. If the execution is resumed ag The current thread can be distinguished from others by a @code{#} after the thread id instead of @code{:}. Without @code{l} option, it only shows thread id, thread structure address and the status for each -thread. The status consists of 5 letters, R(run), W(wait), S(sus­ -pended), O(swapped out) and N(interruptible), and if corresponding +thread. The status consists of 5 letters, R(run), W(wait), S(suspended), +O(swapped out) and N(interruptible), and if corresponding status bit is off, @code{.} is printed instead. If @code{l} option is specified, more detail information is printed for each thread. @@ -6919,6 +7076,15 @@ rejected with an error message. Warning: Attempts to watch wired kernel memory may cause unrecoverable error in some systems such as i386. Watchpoints on user addresses work best. + +@item dwatch[/T] @var{addr} [ @var{task} ] +Clears a watchpoint previously set for a region. +Without @code{T} option, @var{addr} is assumed to be a kernel address. +If you want to clear a watch point in user space, specify @code{T} and +@var{task} parameter where the address belongs to. If the @var{task} +parameter is omitted, a task of the default target thread or a current +task is assumed. If you specify a wrong space address, the request is +rejected with an error message. @end table @@ -7025,10 +7191,8 @@ indirection. It may be followed by a @c described above. @end table - @include gpl.texi - @node Documentation License @appendix Documentation License @@ -7039,14 +7203,12 @@ Parts of this manual are derived from th originally provided by Carnegie Mellon University. @menu -* Free Documentation License:: The GNU Free Documentation License. +* GNU Free Documentation License:: The GNU Free Documentation License. * CMU License:: The CMU license applies to the original Mach kernel and its documentation. @end menu -@lowersections @include fdl.texi -@raisesections @node CMU License @appendixsec CMU License