diff --git a/en_US.ISO8859-1/books/arch-handbook/book.sgml b/en_US.ISO8859-1/books/arch-handbook/book.sgml
index c2d91f80a6..6f625557bd 100644
--- a/en_US.ISO8859-1/books/arch-handbook/book.sgml
+++ b/en_US.ISO8859-1/books/arch-handbook/book.sgml
@@ -1,310 +1,311 @@
%bookinfo;
%man;
%chapters;
%authors
%mailing-lists;
]>
FreeBSD Developers' Handbook
The FreeBSD Documentation Project
August 2000
2000
2001
The FreeBSD Documentation Project
&bookinfo.legalnotice;
Welcome to the Developers' Handbook. This manual is a
work in progress and is the work of many
individuals. Many sections do not yet exist and some of those
that do exist need to be updated. If you are interested in
helping with this project, send email to the &a.doc;.
The latest version of this document is always available
from the FreeBSD World
Wide Web server. It may also be downloaded in a
variety of formats and compression options from the FreeBSD FTP
server or one of the numerous mirror
sites.
Basics
&chap.introduction;
&chap.tools;
&chap.secure;
Interprocess Communication
* Signals
Signals, pipes, semaphores, message queues, shared memory,
ports, sockets, doors
&chap.sockets;
&chap.ipv6;
Kernel
* History of the Unix Kernel
Some history of the Unix/BSD kernel, system calls, how do
processes work, blocking, scheduling, threads (kernel),
context switching, signals, interrupts, modules, etc.
&chap.locking;
&chap.kobj;
+ &chap.sysinit;
&chap.vm;
&chap.dma;
&chap.kerneldebug;
* UFS
UFS, FFS, Ext2FS, JFS, inodes, buffer cache, labeling,
locking, metadata, soft-updates, LFS, portalfs, procfs,
vnodes, memory sharing, memory objects, TLBs, caching
* AFS
AFS, NFS, SANs etc]
* Syscons
Syscons, tty, PCVT, serial console, screen savers,
etc
* Compatibility Layers
* Linux
Linux, SVR4, etc
Device Drivers
&chap.driverbasics;
&chap.isa;
&chap.pci;
&chap.scsi;
&chap.usb;
* NewBus
This chapter will talk about the FreeBSD NewBus
architecture.
* Sound subsystem
OSS, waveforms, etc
Architectures
&chap.x86;
* Alpha
Talk about the architectural specifics of
FreeBSD/alpha.
Explanation of allignment errors, how to fix, how to
ignore.
Example assembly language code for FreeBSD/alpha.
* IA-64
Talk about the architectural specifics of
FreeBSD/ia64.
Appendices
Dave
A
Patterson
John
L
Hennessy
1998Morgan Kaufmann Publishers,
Inc.
1-55860-428-6
Morgan Kaufmann Publishers, Inc.
Computer Organization and Design
The Hardware / Software Interface
1-2
W.
Richard
Stevens
1993Addison Wesley Longman,
Inc.
0-201-56317-7
Addison Wesley Longman, Inc.
Advanced Programming in the Unix Environment
1-2
Marshall
Kirk
McKusick
Keith
Bostic
Michael
J
Karels
John
S
Quarterman
1996Addison-Wesley Publishing Company,
Inc.
0-201-54979-4
Addison-Wesley Publishing Company, Inc.
The Design and Implementation of the 4.4 BSD Operating System
1-2
Aleph
One
Phrack 49; "Smashing the Stack for Fun and Profit"
Chrispin
Cowan
Calton
Pu
Dave
Maier
StackGuard; Automatic Adaptive Detection and Prevention of
Buffer-Overflow Attacks
Todd
Miller
Theo
de Raadt
strlcpy and strlcat -- consistent, safe string copy and
concatenation.
&chap.index;
diff --git a/en_US.ISO8859-1/books/arch-handbook/chapters.ent b/en_US.ISO8859-1/books/arch-handbook/chapters.ent
index 2430788825..1ef9ebe938 100644
--- a/en_US.ISO8859-1/books/arch-handbook/chapters.ent
+++ b/en_US.ISO8859-1/books/arch-handbook/chapters.ent
@@ -1,64 +1,65 @@
+
diff --git a/en_US.ISO8859-1/books/arch-handbook/sysinit/chapter.sgml b/en_US.ISO8859-1/books/arch-handbook/sysinit/chapter.sgml
new file mode 100644
index 0000000000..468e739d12
--- /dev/null
+++ b/en_US.ISO8859-1/books/arch-handbook/sysinit/chapter.sgml
@@ -0,0 +1,161 @@
+
+
+
+ The Sysinit Framework
+
+ Sysinit is the framework for a generic call sort and dispatch
+ mechanisim. FreeBSD currently uses it for the dynamic
+ initialization of the kernel. Sysinit allows FreeBSD's kernel
+ subsystems to be reordered, and added, removed, and replaced at
+ kernel link time when the kernel or one of its modules is loaded
+ without having to edit a staticly ordered initilization routing
+ and recompile the kernel. This system also allows kernel modules,
+ currently called KLD's, to be seperatly
+ compiled, linked, and initilized at boot time and loaded even
+ later while the system is already running. This is accomplished
+ using the kernel linker
and linker
+ sets
.
+
+
+ Terminology
+
+
+
+ Linker Set
+
+ A linker technique in which the linker gathers
+ staticly declared data throughout a program's source files
+ into a single contagiously addressable unit of
+ data.
+
+
+
+
+
+
+ Sysinit Operation
+
+ Sysinit relies on the ability of the linker to take static
+ data declared at multiple locations throughout a program's
+ source and group it together as a single contagious chunk of
+ data. This linker technique is called a linker
+ set
. Sysinit uses two linker sets to maintain two data
+ sets containing each consumer's call order, function, and a
+ pointer to the data to pass to taht function.
+
+ Sysinit uses two priorites when ordering the functions for
+ execution. The first priority is a subsystem ID giving an
+ overall order Sysinit's dispatch of funtions. Current predeclard
+ ID's are in <sys/kernel.h> in the enum
+ list sysinit_sub_id. The second priority used
+ is an element order within the subsystem. Current predeclard
+ subsystem element orders are in
+ <sys/kernel.h> in the enum list
+ sysinit_elem_order.
+
+ There are currently two uses for Sysinit. Function dispatch
+ at system startup and kernel module loads, and function dispatch
+ at system shutdown and kernel module unload.
+
+
+
+
+ Using Sysinit
+
+
+ Interface
+
+
+ Headers
+
+ <sys/kernel.h>
+
+
+
+ Macros
+
+ SYSINIT(uniquifier, subsystem, order, func, ident)
+ SYSUNINIT(uniquifier, subsystem, order, func, ident)
+
+
+
+
+ Startup
+
+ The SYSINIT() macro creates the
+ necessary sysinit data in Sysinit's startup data set for
+ Sysinit to sort and dispatch a function at system startup and
+ module load. SYSINIT() takes a uniquifier
+ that Sysinit uses identify the particular function dispatch
+ data, the subsystem order, the subsystem element order, the
+ function to call, and the data to pass the fuction. All
+ functions must take a constant pointer argument.
+
+
+ For example:
+
+ #include <sys/kernel.h>
+
+void foo_null(void *unused)
+{
+ foo_doo();
+}
+SYSINIT(foo_null, SI_SUB_FOO, SI_ORDER_FOO, NULL);
+
+struct foo foo_voodoo = {
+ FOO_VOODOO;
+}
+
+void foo_arg(void *vdata)
+{
+ struct foo *foo = (struct foo *)vdata;
+ foo_data(foo);
+}
+SYSINIT(foo_arg, SI_SUB_FOO, SI_ORDER_FOO, foo_voodoo);
+
+
+
+
+ Shutdown
+
+ The SYSUNINIT() macro behaves similarly
+ to the SYSINIT() macro except that it adds
+ the Sysinit data to Sysinit's shutdown data set.
+
+ For example:
+
+ #include <sys/kernel.h>
+
+void foo_cleanup(void *unused)
+{
+ foo_kill();
+}
+SYSUNINIT(foo_cleanup, SI_SUB_FOO, SI_ORDER_FOO, NULL);
+
+struct foo_stack foo_stack = {
+ FOO_STACK_VOODOO;
+}
+
+void foo_flush(void *vdata)
+{
+}
+SYSUNINIT(foo_flush, SI_SUB_FOO, SI_ORDER_FOO, foo_stack);
+
+
+
+
+
+
diff --git a/en_US.ISO8859-1/books/developers-handbook/book.sgml b/en_US.ISO8859-1/books/developers-handbook/book.sgml
index c2d91f80a6..6f625557bd 100644
--- a/en_US.ISO8859-1/books/developers-handbook/book.sgml
+++ b/en_US.ISO8859-1/books/developers-handbook/book.sgml
@@ -1,310 +1,311 @@
%bookinfo;
%man;
%chapters;
%authors
%mailing-lists;
]>
FreeBSD Developers' Handbook
The FreeBSD Documentation Project
August 2000
2000
2001
The FreeBSD Documentation Project
&bookinfo.legalnotice;
Welcome to the Developers' Handbook. This manual is a
work in progress and is the work of many
individuals. Many sections do not yet exist and some of those
that do exist need to be updated. If you are interested in
helping with this project, send email to the &a.doc;.
The latest version of this document is always available
from the FreeBSD World
Wide Web server. It may also be downloaded in a
variety of formats and compression options from the FreeBSD FTP
server or one of the numerous mirror
sites.
Basics
&chap.introduction;
&chap.tools;
&chap.secure;
Interprocess Communication
* Signals
Signals, pipes, semaphores, message queues, shared memory,
ports, sockets, doors
&chap.sockets;
&chap.ipv6;
Kernel
* History of the Unix Kernel
Some history of the Unix/BSD kernel, system calls, how do
processes work, blocking, scheduling, threads (kernel),
context switching, signals, interrupts, modules, etc.
&chap.locking;
&chap.kobj;
+ &chap.sysinit;
&chap.vm;
&chap.dma;
&chap.kerneldebug;
* UFS
UFS, FFS, Ext2FS, JFS, inodes, buffer cache, labeling,
locking, metadata, soft-updates, LFS, portalfs, procfs,
vnodes, memory sharing, memory objects, TLBs, caching
* AFS
AFS, NFS, SANs etc]
* Syscons
Syscons, tty, PCVT, serial console, screen savers,
etc
* Compatibility Layers
* Linux
Linux, SVR4, etc
Device Drivers
&chap.driverbasics;
&chap.isa;
&chap.pci;
&chap.scsi;
&chap.usb;
* NewBus
This chapter will talk about the FreeBSD NewBus
architecture.
* Sound subsystem
OSS, waveforms, etc
Architectures
&chap.x86;
* Alpha
Talk about the architectural specifics of
FreeBSD/alpha.
Explanation of allignment errors, how to fix, how to
ignore.
Example assembly language code for FreeBSD/alpha.
* IA-64
Talk about the architectural specifics of
FreeBSD/ia64.
Appendices
Dave
A
Patterson
John
L
Hennessy
1998Morgan Kaufmann Publishers,
Inc.
1-55860-428-6
Morgan Kaufmann Publishers, Inc.
Computer Organization and Design
The Hardware / Software Interface
1-2
W.
Richard
Stevens
1993Addison Wesley Longman,
Inc.
0-201-56317-7
Addison Wesley Longman, Inc.
Advanced Programming in the Unix Environment
1-2
Marshall
Kirk
McKusick
Keith
Bostic
Michael
J
Karels
John
S
Quarterman
1996Addison-Wesley Publishing Company,
Inc.
0-201-54979-4
Addison-Wesley Publishing Company, Inc.
The Design and Implementation of the 4.4 BSD Operating System
1-2
Aleph
One
Phrack 49; "Smashing the Stack for Fun and Profit"
Chrispin
Cowan
Calton
Pu
Dave
Maier
StackGuard; Automatic Adaptive Detection and Prevention of
Buffer-Overflow Attacks
Todd
Miller
Theo
de Raadt
strlcpy and strlcat -- consistent, safe string copy and
concatenation.
&chap.index;
diff --git a/en_US.ISO8859-1/books/developers-handbook/chapters.ent b/en_US.ISO8859-1/books/developers-handbook/chapters.ent
index 2430788825..1ef9ebe938 100644
--- a/en_US.ISO8859-1/books/developers-handbook/chapters.ent
+++ b/en_US.ISO8859-1/books/developers-handbook/chapters.ent
@@ -1,64 +1,65 @@
+
diff --git a/en_US.ISO8859-1/books/developers-handbook/sysinit/chapter.sgml b/en_US.ISO8859-1/books/developers-handbook/sysinit/chapter.sgml
new file mode 100644
index 0000000000..468e739d12
--- /dev/null
+++ b/en_US.ISO8859-1/books/developers-handbook/sysinit/chapter.sgml
@@ -0,0 +1,161 @@
+
+
+
+ The Sysinit Framework
+
+ Sysinit is the framework for a generic call sort and dispatch
+ mechanisim. FreeBSD currently uses it for the dynamic
+ initialization of the kernel. Sysinit allows FreeBSD's kernel
+ subsystems to be reordered, and added, removed, and replaced at
+ kernel link time when the kernel or one of its modules is loaded
+ without having to edit a staticly ordered initilization routing
+ and recompile the kernel. This system also allows kernel modules,
+ currently called KLD's, to be seperatly
+ compiled, linked, and initilized at boot time and loaded even
+ later while the system is already running. This is accomplished
+ using the kernel linker
and linker
+ sets
.
+
+
+ Terminology
+
+
+
+ Linker Set
+
+ A linker technique in which the linker gathers
+ staticly declared data throughout a program's source files
+ into a single contagiously addressable unit of
+ data.
+
+
+
+
+
+
+ Sysinit Operation
+
+ Sysinit relies on the ability of the linker to take static
+ data declared at multiple locations throughout a program's
+ source and group it together as a single contagious chunk of
+ data. This linker technique is called a linker
+ set
. Sysinit uses two linker sets to maintain two data
+ sets containing each consumer's call order, function, and a
+ pointer to the data to pass to taht function.
+
+ Sysinit uses two priorites when ordering the functions for
+ execution. The first priority is a subsystem ID giving an
+ overall order Sysinit's dispatch of funtions. Current predeclard
+ ID's are in <sys/kernel.h> in the enum
+ list sysinit_sub_id. The second priority used
+ is an element order within the subsystem. Current predeclard
+ subsystem element orders are in
+ <sys/kernel.h> in the enum list
+ sysinit_elem_order.
+
+ There are currently two uses for Sysinit. Function dispatch
+ at system startup and kernel module loads, and function dispatch
+ at system shutdown and kernel module unload.
+
+
+
+
+ Using Sysinit
+
+
+ Interface
+
+
+ Headers
+
+ <sys/kernel.h>
+
+
+
+ Macros
+
+ SYSINIT(uniquifier, subsystem, order, func, ident)
+ SYSUNINIT(uniquifier, subsystem, order, func, ident)
+
+
+
+
+ Startup
+
+ The SYSINIT() macro creates the
+ necessary sysinit data in Sysinit's startup data set for
+ Sysinit to sort and dispatch a function at system startup and
+ module load. SYSINIT() takes a uniquifier
+ that Sysinit uses identify the particular function dispatch
+ data, the subsystem order, the subsystem element order, the
+ function to call, and the data to pass the fuction. All
+ functions must take a constant pointer argument.
+
+
+ For example:
+
+ #include <sys/kernel.h>
+
+void foo_null(void *unused)
+{
+ foo_doo();
+}
+SYSINIT(foo_null, SI_SUB_FOO, SI_ORDER_FOO, NULL);
+
+struct foo foo_voodoo = {
+ FOO_VOODOO;
+}
+
+void foo_arg(void *vdata)
+{
+ struct foo *foo = (struct foo *)vdata;
+ foo_data(foo);
+}
+SYSINIT(foo_arg, SI_SUB_FOO, SI_ORDER_FOO, foo_voodoo);
+
+
+
+
+ Shutdown
+
+ The SYSUNINIT() macro behaves similarly
+ to the SYSINIT() macro except that it adds
+ the Sysinit data to Sysinit's shutdown data set.
+
+ For example:
+
+ #include <sys/kernel.h>
+
+void foo_cleanup(void *unused)
+{
+ foo_kill();
+}
+SYSUNINIT(foo_cleanup, SI_SUB_FOO, SI_ORDER_FOO, NULL);
+
+struct foo_stack foo_stack = {
+ FOO_STACK_VOODOO;
+}
+
+void foo_flush(void *vdata)
+{
+}
+SYSUNINIT(foo_flush, SI_SUB_FOO, SI_ORDER_FOO, foo_stack);
+
+
+
+
+
+