Add links to manpages.
This commit is contained in:
parent
e46f484ad4
commit
bea9d4e38c
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=2027
3 changed files with 144 additions and 58 deletions
122
FAQ/FAQ.sgml
122
FAQ/FAQ.sgml
|
@ -1,12 +1,12 @@
|
|||
<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN">
|
||||
<!-- $Id: FAQ.sgml,v 1.78 1997-09-30 18:40:19 pds Exp $ -->
|
||||
<!-- $Id: FAQ.sgml,v 1.79 1997-10-03 20:53:27 wosch Exp $ -->
|
||||
|
||||
<article>
|
||||
|
||||
<title>Frequently Asked Questions for FreeBSD 2.X
|
||||
<author>Maintainer: Peter da Silva <tt><htmlurl url='mailto:peter@taronga.com'
|
||||
name='<peter@taronga.com>'></tt>
|
||||
<date>$Date: 1997-09-30 18:40:19 $</date>
|
||||
<date>$Date: 1997-10-03 20:53:27 $</date>
|
||||
|
||||
<abstract>
|
||||
This is the FAQ for FreeBSD systems version 2.X All entries are
|
||||
|
@ -825,7 +825,9 @@ make release BUILDNAME=3.0-MY-SNAP CHROOTDIR=/some/big/filesystem/release
|
|||
``<tt/sys/'' (kernel) source kit, which includes sources for the
|
||||
kernel. There is nothing in the system which requires the
|
||||
presence of the sources to operate, however, except for the
|
||||
kernel-configuration program <tt/config(8)/. With the exception
|
||||
kernel-configuration program
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?config"
|
||||
name="config">. With the exception
|
||||
of the kernel sources, our build structure is set up so that you
|
||||
can read-only mount the sources from elsewhere via NFS and still
|
||||
be able to make new binaries. (Because of the kernel-source
|
||||
|
@ -1038,7 +1040,8 @@ make release BUILDNAME=3.0-MY-SNAP CHROOTDIR=/some/big/filesystem/release
|
|||
Some unnamed clone cards have also been known to work, especially
|
||||
those that claim to be AST compatible.
|
||||
|
||||
Check the <tt/sio(4)/ man page to get more information on
|
||||
Check the <htmlurl url="http://www.freebsd.org/cgi/man.cgi?sio"
|
||||
name="sio">n man page to get more information on
|
||||
configuring such cards.
|
||||
|
||||
<sect1>
|
||||
|
@ -1107,7 +1110,9 @@ options PSM_CHECKSYNC #checks the header byte for sync.
|
|||
|
||||
<p>FreeBSD 2.2 supports SCSI changers using the <tt/ch/ device and the
|
||||
<tt/chio/ command. The details of how you actually control the
|
||||
changer can be found in the <tt/chio(1)/ man page.
|
||||
changer can be found in the
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?chio"
|
||||
name="chio"> man page.
|
||||
|
||||
If you're not using <tt/AMANDA/ or some other product that already
|
||||
understands changers, remember that they're only know how to move a
|
||||
|
@ -1333,7 +1338,9 @@ quit
|
|||
|
||||
at the prompt, and install your system as usual. While it's
|
||||
recommendable to compile and install a custom kernel anyway,
|
||||
<tt/dset(8)/ now also understands to save this value.
|
||||
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?dset"
|
||||
name="dset"> now also understands to save this value.
|
||||
|
||||
Hopefully, future version will have a proper fix for this problem.
|
||||
|
||||
|
@ -1409,11 +1416,17 @@ quit
|
|||
<sect1>
|
||||
<heading>When I mount a CDROM, I get ``Incorrect super block''.</heading>
|
||||
<p>
|
||||
You have to tell <tt/mount(8)/ the type of the device that you
|
||||
want to mount. By default, <tt/mount(8)/ will assume the
|
||||
You have to tell
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?mount"
|
||||
name="mount"> the type of the device that you
|
||||
want to mount. By default,
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?mount"
|
||||
name="mount"> will assume the
|
||||
filesystem is of type ``<tt/ufs/''. You want to mount a CDROM
|
||||
filesystem, and you do this by specifying the ``<tt/-t cd9660/''
|
||||
option to <tt/mount(8)/. This does, of course, assume that the
|
||||
option to
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?mount"
|
||||
name="mount">. This does, of course, assume that the
|
||||
CDROM contains an ISO 9660 filesystem, which is what most CDROMs
|
||||
have. As of 1.1R, FreeBSD automatically understands the Rock Ridge
|
||||
(long filename) extensions as well.
|
||||
|
@ -1912,7 +1925,8 @@ crw-rw-rw- 1 root wheel 41, 1 Oct 15 22:14 spx
|
|||
|
||||
Finally, if you need to see your original boot messages again to
|
||||
compile a new kernel that's better tailored to your hardware, try
|
||||
the <tt/dmesg(8)/ command. It should print out all the boot-time
|
||||
the <htmlurl url="http://www.freebsd.org/cgi/man.cgi?dmesg"
|
||||
name="dmesg"> command. It should print out all the boot-time
|
||||
messages printed by your old kernel, some of which may be quite
|
||||
helpful in configuring the new one.
|
||||
|
||||
|
@ -2072,7 +2086,9 @@ disk fd1 at fdc0 drive 1
|
|||
<p>
|
||||
<label id="2_1-disklabel-fix">
|
||||
If the above does not work for you, or if you're a total masochist
|
||||
who likes arcane interfaces, this is how to use disklabel(8) manually:
|
||||
who likes arcane interfaces, this is how to use
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?disklabel"
|
||||
name="disklabel"> manually:
|
||||
<p>
|
||||
<em>WARNING: There is no substitute for reading carefully
|
||||
& understanding what you are doing! Things described here may
|
||||
|
@ -2081,8 +2097,11 @@ disk fd1 at fdc0 drive 1
|
|||
<p>
|
||||
<tt /sysinstall/ used to be broken up to 2.1.5-RELEASE and will
|
||||
insist on mounting something at / in the disklabel editor. You will
|
||||
have to manually run <tt /disklabel(8)/ before you can run
|
||||
<tt /newfs(8)/. This means doing the math for partitions
|
||||
have to manually run
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?disklabel"
|
||||
name="disklabel"> before you can run
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?newfs"
|
||||
name="newfs">/. This means doing the math for partitions
|
||||
yourself. This is rumoured to be easy :-) See if you can obtain a
|
||||
skeletal label with ''<tt>disklabel -r <diskname></tt>''
|
||||
<em>(eg. </em>''<tt>disklabel -r /dev/rwd0s2</tt>''<em>, assuming
|
||||
|
@ -2155,8 +2174,10 @@ drivedata: 0
|
|||
|
||||
<p>
|
||||
<bf /Note:/ You can directly edit the disklabel with
|
||||
''<tt>disklabel -e wd0s2</tt>''. See <tt /disklabel(8)/.
|
||||
<p>
|
||||
''<tt>disklabel -e wd0s2</tt>''. See
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?disklabel"
|
||||
name="disklabel">.
|
||||
<p>
|
||||
If you have at least FreeBSD 2.1.5, and you want to dedicate
|
||||
an entire disk to FreeBSD without any care for other
|
||||
systems, you might shorten the steps above to something like:
|
||||
|
@ -2185,7 +2206,9 @@ drivedata: 0
|
|||
required that you run the script <tt>/dev/MAKEDEV</tt>
|
||||
before in order to create the desired device nodes.
|
||||
|
||||
And mount your new filesystems (See <tt /mount(8)/):-
|
||||
And mount your new filesystems (See
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?mount"
|
||||
name="mount">):-
|
||||
|
||||
<verb>
|
||||
mount /dev/wd0s2e /mnt/foo
|
||||
|
@ -2337,7 +2360,8 @@ drivedata: 0
|
|||
of the disk partitioning for the operating system in question.
|
||||
<p>
|
||||
<bf/ Linux/: 2.2 and later have support for <bf/ext2fs/ partitions.
|
||||
See mount_ext2fs(8) for more information.
|
||||
See <htmlurl url="http://www.freebsd.org/cgi/man.cgi?mount_ext2fs"
|
||||
name="mount_ext2fs"> for more information.
|
||||
|
||||
Any other information on this subject would be appreciated.
|
||||
|
||||
|
@ -2582,7 +2606,9 @@ vnconfig -ce /dev/vn0c /usr/swap0 swap
|
|||
</verb>
|
||||
|
||||
Both the <tt>/usr/share/syscons/keymaps</tt> and the <tt/.kbd/
|
||||
extension are assumed by <tt/kbdcontrol(1)/.
|
||||
extension are assumed by
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?kbdcontrol"
|
||||
name="kbdcontrol">.
|
||||
|
||||
This can be configured in <tt>/etc/sysconfig</tt>
|
||||
(or <tt/rc.conf/). See the
|
||||
|
@ -3068,7 +3094,9 @@ vnconfig -ce /dev/vn0c /usr/swap0 swap
|
|||
This is because of the way console permissions are set by default.
|
||||
On a multi-user system, one doesn't necessarily want just any user
|
||||
to be able to write on the system console. For users who are logging
|
||||
directly onto a machine with a VTY, the <tt/fbtab(5)/ file exists
|
||||
directly onto a machine with a VTY, the
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?fbtab"
|
||||
name="fbtab"> file exists
|
||||
to solve such problems.
|
||||
|
||||
In a nutshell, make sure an uncommented line of the form
|
||||
|
@ -3138,7 +3166,9 @@ vnconfig -ce /dev/vn0c /usr/swap0 swap
|
|||
|
||||
In most cases, you will also need to run a routing process to
|
||||
tell other systems on your network about your router; FreeBSD
|
||||
comes with the standard BSD routing daemon <tt/routed(8)/, or for
|
||||
comes with the standard BSD routing daemon
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?routed"
|
||||
name="routed">, or for
|
||||
more complex situations you may want to try <em/GaTeD/ (available
|
||||
by FTP from <tt/ftp.gated.Merit.EDU/) which supports FreeBSD as
|
||||
of 3_5Alpha7.
|
||||
|
@ -3181,8 +3211,16 @@ vnconfig -ce /dev/vn0c /usr/swap0 swap
|
|||
<heading>Does FreeBSD support SLIP and PPP?</heading>
|
||||
|
||||
<p>
|
||||
Yes. See the man pages for <tt/slattach(8)/, <tt/sliplogin(8)/,
|
||||
<tt/pppd(8)/ and <tt/ppp(8)/. <tt/pppd/ and <tt/ppp/ provide
|
||||
Yes. See the man pages for
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?slattach"
|
||||
name="slattach">,
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?sliplogin"
|
||||
name="sliplogin">,
|
||||
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?pppd"
|
||||
name="pppd"> and
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?ppp"
|
||||
name="ppp">. <tt/pppd/ and <tt/ppp/ provide
|
||||
support for both incoming and outgoing connections.
|
||||
<tt/Sliplogin/ deals exclusively with incoming connections and
|
||||
<tt/slattach/ deals exclusively with outgoing connections.
|
||||
|
@ -3211,19 +3249,25 @@ vnconfig -ce /dev/vn0c /usr/swap0 swap
|
|||
<p>
|
||||
If you have a subnet (one or more local machines), but have
|
||||
been allocated only a single IP number from your Internet
|
||||
provider, you may want to look at the <tt/natd(8)/ program.
|
||||
provider, you may want to look at the
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?natd"
|
||||
name="natd"> program.
|
||||
<tt/Natd/ allows you to connect an entire subnet to the internet
|
||||
using only a single IP number.
|
||||
|
||||
<p>
|
||||
The <tt/ppp(8)/ program has similar functionality built in via
|
||||
The
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?ppp"
|
||||
name="ppp"> program has similar functionality built in via
|
||||
the <tt/-alias/ switch.
|
||||
|
||||
<sect1>
|
||||
<heading>I can't make <tt/ppp/ work. What am I doing wrong ?</heading>
|
||||
|
||||
<p>
|
||||
You should first read the <tt/ppp(8)/ manual page and
|
||||
You should first read the
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?ppp"
|
||||
name="ppp"> manual page and
|
||||
the <url url="../handbook/userppp.html"
|
||||
name="ppp section of the handbook">. Enable logging
|
||||
with the command
|
||||
|
@ -3326,8 +3370,13 @@ MYADDR:
|
|||
file, or to type it at the prompt in interactive mode. It
|
||||
is also possible to adjust it on the fly while the line is
|
||||
active by connecting to <tt/ppp/s server socket using
|
||||
<tt/telnet(1)/ or <tt/pppctl(8)/. Refer to the <tt/ppp(8)/
|
||||
man page for further details.
|
||||
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?telnet"
|
||||
name="telnet"> or
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?pppctl"
|
||||
name="pppctl">. Refer to the
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?ppp"
|
||||
name="ppp"> man page for further details.
|
||||
|
||||
<sect2>
|
||||
<heading>My connection drops under heavy load</heading>
|
||||
|
@ -3539,7 +3588,9 @@ MYADDR:
|
|||
|
||||
<p>
|
||||
If you want to use the other ports, you'll have to specify an
|
||||
additional parameter on the <tt/ifconfig(1)/ command line. The
|
||||
additional parameter on the
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?ifconfig"
|
||||
name="ifconfig"> command line. The
|
||||
default port is ``<tt/link0/''. To use the AUI port instead of
|
||||
the BNC one, use ``<tt/link2/''.
|
||||
|
||||
|
@ -4200,7 +4251,9 @@ domain foo.bar.edu
|
|||
FreeBSD tries to work around this problem somewhat by
|
||||
providing a utility for <em>branding</em> a known <tt/ELF/
|
||||
executable with information about the ABI it's compliant with.
|
||||
See the man page for brandelf(1) for more information.</item>
|
||||
See the man page for
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?brandelf"
|
||||
name="brandelf"> for more information.</item>
|
||||
</itemize>
|
||||
|
||||
<p>FreeBSD comes from the "classic" camp and uses the
|
||||
|
@ -4234,14 +4287,19 @@ domain foo.bar.edu
|
|||
<heading>Why doesn't chmod change the permissions on symlinks?</heading>
|
||||
<p>
|
||||
You have to use either ``<tt/-H/'' or ``<tt/-L/'' together with
|
||||
the ``<tt/-R/'' option to make this work. See the <tt/chmod(1)/
|
||||
and <tt/symlink(7)/ man pages for more info.
|
||||
the ``<tt/-R/'' option to make this work. See the
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?chmod"
|
||||
name="chmod"> and
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?symlink"
|
||||
name="symlink"> man pages for more info.
|
||||
|
||||
<bf/WARNING/ the ``<tt/-R/'' option does a <bf/RECURSIVE/
|
||||
<tt/chmod/. Be careful about specifying directories or symlinks
|
||||
to directories to <tt/chmod/. If you want to change the
|
||||
permissions of a directory referenced by a symlink, use
|
||||
<tt/chmod(1)/ without any options and follow the symlink with a
|
||||
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?chmod"
|
||||
name="chmod"> without any options and follow the symlink with a
|
||||
trailing slash (``<tt>/</tt>''). For example, if ``<tt/foo/'' is
|
||||
a symlink to directory ``<tt/bar/'', and you want to change the
|
||||
permissions of ``<tt/foo/'' (actually ``<tt/bar/''), you would do
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
++
|
||||
++ Copyright Eric L. Hernes - Wednesday, August 2, 1995
|
||||
++
|
||||
++ $Id: ddwg.sgml,v 1.3 1996-12-28 23:36:51 mpp Exp $
|
||||
++ $Id: ddwg.sgml,v 1.4 1997-10-03 20:53:38 wosch Exp $
|
||||
++
|
||||
++ Sgml doc for something
|
||||
-->
|
||||
|
@ -58,7 +58,8 @@ device opened. These are available through the macros <tt/major()/ and
|
|||
<tt/minor()/
|
||||
<p>
|
||||
|
||||
The <tt/flag/ and <tt/mode/ arguments are as described in the open(2)
|
||||
The <tt/flag/ and <tt/mode/ arguments are as described in the
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?open(2)" name="open(2)">
|
||||
manual page. It is recommended that you check these for access modes
|
||||
in <sys/fcntl.h> and do what is required. For example if <tt/flag/
|
||||
is (O_NONBLOCK | O_EXLOCK) the open should fail if either it would
|
||||
|
@ -106,8 +107,10 @@ int
|
|||
d_write(dev_t dev, struct uio *uio, int flat)
|
||||
</code>
|
||||
|
||||
The d_read() and d_write() entry points are called when read(2) and
|
||||
write(2) are called on your device from user-space. The transfer
|
||||
The d_read() and d_write() entry points are called when
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?read(2)" name="read(2)"> and
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?write(2)" name="write(2)">
|
||||
are called on your device from user-space. The transfer
|
||||
of data can be handled through the kernel support routine uiomove().
|
||||
|
||||
<sect3> d_ioctl()
|
||||
|
@ -120,7 +123,9 @@ d_ioctl(dev_t dev, int cmd, caddr_t arg, int flag, struct proc *p)
|
|||
|
||||
d_ioctl() is a catch-all for operations which don't make sense in
|
||||
a read/write paradigm. Probably the most famous of all ioctl's is on
|
||||
tty devices, through stty(1). The ioctl entry point is called from
|
||||
tty devices, through
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?stty(1)" name="stty(1)">.
|
||||
The ioctl entry point is called from
|
||||
ioctl() in sys/kern/sys_generic.c<p>
|
||||
|
||||
There are four different types of ioctl's which can be implemented.
|
||||
|
@ -228,7 +233,8 @@ scatter-gather io via the readv() and writev() system calls.
|
|||
|
||||
<sect3> <tt/struct isa_device/ Structure
|
||||
<p>
|
||||
This structure is required, but generally it is created by config(8)
|
||||
This structure is required, but generally it is created by
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?config(8)" name="config(8)">
|
||||
from the kernel configuration file. It is required on a per-device
|
||||
basis, meaning that if you have a driver which controls two serial
|
||||
boards, you will have two isa_device structures. If you build a
|
||||
|
@ -281,7 +287,8 @@ initialize your device. The <tt/probe/ member is a pointer to your
|
|||
device probe function; the <tt/attach/ member is a pointer to your
|
||||
attach function. The <tt/name/ member is a character pointer to the
|
||||
two or three letter name for your driver. This is the name reported
|
||||
during the probe/attach process (and probably also in lsdev(8)). The
|
||||
during the probe/attach process (and probably also in
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?lsdev(8)" name="lsdev(8)">). The
|
||||
<tt/sensitive_hw/ member is a flag which helps the probe code
|
||||
determine probing order.
|
||||
|
||||
|
@ -422,7 +429,8 @@ public device register declarations, macros, and other driver
|
|||
specific declarations. Some drivers call this devvar.h instead.
|
||||
Some drivers, such as the dgb (for the Digiboard PC/Xe),
|
||||
require microcode to be loaded onto the board. For the dgb driver
|
||||
the microcode is compiled and dumped into a header file ala file2c(1).
|
||||
the microcode is compiled and dumped into a header file ala
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?file2c(1)" name="file2c(1)">.
|
||||
|
||||
<p>
|
||||
If the driver has data structures and ioctl's which are specific to
|
||||
|
@ -455,7 +463,8 @@ The steps required to add your driver to the standard FreeBSD kernel are
|
|||
<item> Add to the driver list
|
||||
<item> Add an entry to the [bc]devsw
|
||||
<item> Add the driver entry to the kernel config file
|
||||
<item> config(8), compile, and install the kernel
|
||||
<item> <htmlurl url="http://www.freebsd.org/cgi/man.cgi?config(8)" name="config(8)">,
|
||||
compile, and install the kernel
|
||||
<item> make required nodes.
|
||||
<item> reboot.
|
||||
</itemize>
|
||||
|
@ -476,7 +485,9 @@ The first field is the pathname of the driver module relative to
|
|||
/usr/src/sys. For the case of a binary driver the path would be
|
||||
something like ``i386/OBJ/joy.o''.
|
||||
|
||||
The second field tells config(8) that this is an optional driver. Some
|
||||
The second field tells
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?config(8)" name="config(8)">
|
||||
that this is an optional driver. Some
|
||||
devices are required for the kernel to even be built.
|
||||
|
||||
The third field is the name of the device.
|
||||
|
@ -512,7 +523,8 @@ d_ioctl_t joyioctl;
|
|||
This either defines your entry points, or null entry points which
|
||||
will return ENXIO when called (the #else clause).
|
||||
|
||||
The include file ``joy.h'' is automatically generated by config(8) when
|
||||
The include file ``joy.h'' is automatically generated by
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?config(8)" name="config(8)"> when
|
||||
the kernel build tree is created. This usually has only one line like:
|
||||
<code>
|
||||
#define NJOY 1
|
||||
|
@ -569,7 +581,8 @@ the network class. It uses interrupt 10. It uses
|
|||
32k of shared memory at physical address 0xd0000. It also defines
|
||||
it's interrupt handler to be ``ixintr()''
|
||||
|
||||
<sect2>config(8) the kernel.
|
||||
<sect2><htmlurl url="http://www.freebsd.org/cgi/man.cgi?config(8)" name="config(8)">
|
||||
the kernel.
|
||||
<p>
|
||||
Now with our config file in hand, we can create a kernel compile directory.
|
||||
This is done by simply typing:
|
||||
|
@ -632,7 +645,8 @@ Lines 17 - 26
|
|||
|
||||
-- This includes the file ``pca.h'' and conditionally compiles the rest
|
||||
of the LKM on whether or not we have a pcaudio device defined. This
|
||||
mimics the behavior of config. In a standard device driver, config(8)
|
||||
mimics the behavior of config. In a standard device driver,
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?config(8)" name="config(8)">
|
||||
generates the pca.h file from the number pca devices in the config file.
|
||||
<code>
|
||||
17 /*
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
++
|
||||
++ Copyright Eric L. Hernes - Wednesday, August 2, 1995
|
||||
++
|
||||
++ $Id: ddwg.sgml,v 1.3 1996-12-28 23:36:51 mpp Exp $
|
||||
++ $Id: ddwg.sgml,v 1.4 1997-10-03 20:53:38 wosch Exp $
|
||||
++
|
||||
++ Sgml doc for something
|
||||
-->
|
||||
|
@ -58,7 +58,8 @@ device opened. These are available through the macros <tt/major()/ and
|
|||
<tt/minor()/
|
||||
<p>
|
||||
|
||||
The <tt/flag/ and <tt/mode/ arguments are as described in the open(2)
|
||||
The <tt/flag/ and <tt/mode/ arguments are as described in the
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?open(2)" name="open(2)">
|
||||
manual page. It is recommended that you check these for access modes
|
||||
in <sys/fcntl.h> and do what is required. For example if <tt/flag/
|
||||
is (O_NONBLOCK | O_EXLOCK) the open should fail if either it would
|
||||
|
@ -106,8 +107,10 @@ int
|
|||
d_write(dev_t dev, struct uio *uio, int flat)
|
||||
</code>
|
||||
|
||||
The d_read() and d_write() entry points are called when read(2) and
|
||||
write(2) are called on your device from user-space. The transfer
|
||||
The d_read() and d_write() entry points are called when
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?read(2)" name="read(2)"> and
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?write(2)" name="write(2)">
|
||||
are called on your device from user-space. The transfer
|
||||
of data can be handled through the kernel support routine uiomove().
|
||||
|
||||
<sect3> d_ioctl()
|
||||
|
@ -120,7 +123,9 @@ d_ioctl(dev_t dev, int cmd, caddr_t arg, int flag, struct proc *p)
|
|||
|
||||
d_ioctl() is a catch-all for operations which don't make sense in
|
||||
a read/write paradigm. Probably the most famous of all ioctl's is on
|
||||
tty devices, through stty(1). The ioctl entry point is called from
|
||||
tty devices, through
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?stty(1)" name="stty(1)">.
|
||||
The ioctl entry point is called from
|
||||
ioctl() in sys/kern/sys_generic.c<p>
|
||||
|
||||
There are four different types of ioctl's which can be implemented.
|
||||
|
@ -228,7 +233,8 @@ scatter-gather io via the readv() and writev() system calls.
|
|||
|
||||
<sect3> <tt/struct isa_device/ Structure
|
||||
<p>
|
||||
This structure is required, but generally it is created by config(8)
|
||||
This structure is required, but generally it is created by
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?config(8)" name="config(8)">
|
||||
from the kernel configuration file. It is required on a per-device
|
||||
basis, meaning that if you have a driver which controls two serial
|
||||
boards, you will have two isa_device structures. If you build a
|
||||
|
@ -281,7 +287,8 @@ initialize your device. The <tt/probe/ member is a pointer to your
|
|||
device probe function; the <tt/attach/ member is a pointer to your
|
||||
attach function. The <tt/name/ member is a character pointer to the
|
||||
two or three letter name for your driver. This is the name reported
|
||||
during the probe/attach process (and probably also in lsdev(8)). The
|
||||
during the probe/attach process (and probably also in
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?lsdev(8)" name="lsdev(8)">). The
|
||||
<tt/sensitive_hw/ member is a flag which helps the probe code
|
||||
determine probing order.
|
||||
|
||||
|
@ -422,7 +429,8 @@ public device register declarations, macros, and other driver
|
|||
specific declarations. Some drivers call this devvar.h instead.
|
||||
Some drivers, such as the dgb (for the Digiboard PC/Xe),
|
||||
require microcode to be loaded onto the board. For the dgb driver
|
||||
the microcode is compiled and dumped into a header file ala file2c(1).
|
||||
the microcode is compiled and dumped into a header file ala
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?file2c(1)" name="file2c(1)">.
|
||||
|
||||
<p>
|
||||
If the driver has data structures and ioctl's which are specific to
|
||||
|
@ -455,7 +463,8 @@ The steps required to add your driver to the standard FreeBSD kernel are
|
|||
<item> Add to the driver list
|
||||
<item> Add an entry to the [bc]devsw
|
||||
<item> Add the driver entry to the kernel config file
|
||||
<item> config(8), compile, and install the kernel
|
||||
<item> <htmlurl url="http://www.freebsd.org/cgi/man.cgi?config(8)" name="config(8)">,
|
||||
compile, and install the kernel
|
||||
<item> make required nodes.
|
||||
<item> reboot.
|
||||
</itemize>
|
||||
|
@ -476,7 +485,9 @@ The first field is the pathname of the driver module relative to
|
|||
/usr/src/sys. For the case of a binary driver the path would be
|
||||
something like ``i386/OBJ/joy.o''.
|
||||
|
||||
The second field tells config(8) that this is an optional driver. Some
|
||||
The second field tells
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?config(8)" name="config(8)">
|
||||
that this is an optional driver. Some
|
||||
devices are required for the kernel to even be built.
|
||||
|
||||
The third field is the name of the device.
|
||||
|
@ -512,7 +523,8 @@ d_ioctl_t joyioctl;
|
|||
This either defines your entry points, or null entry points which
|
||||
will return ENXIO when called (the #else clause).
|
||||
|
||||
The include file ``joy.h'' is automatically generated by config(8) when
|
||||
The include file ``joy.h'' is automatically generated by
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?config(8)" name="config(8)"> when
|
||||
the kernel build tree is created. This usually has only one line like:
|
||||
<code>
|
||||
#define NJOY 1
|
||||
|
@ -569,7 +581,8 @@ the network class. It uses interrupt 10. It uses
|
|||
32k of shared memory at physical address 0xd0000. It also defines
|
||||
it's interrupt handler to be ``ixintr()''
|
||||
|
||||
<sect2>config(8) the kernel.
|
||||
<sect2><htmlurl url="http://www.freebsd.org/cgi/man.cgi?config(8)" name="config(8)">
|
||||
the kernel.
|
||||
<p>
|
||||
Now with our config file in hand, we can create a kernel compile directory.
|
||||
This is done by simply typing:
|
||||
|
@ -632,7 +645,8 @@ Lines 17 - 26
|
|||
|
||||
-- This includes the file ``pca.h'' and conditionally compiles the rest
|
||||
of the LKM on whether or not we have a pcaudio device defined. This
|
||||
mimics the behavior of config. In a standard device driver, config(8)
|
||||
mimics the behavior of config. In a standard device driver,
|
||||
<htmlurl url="http://www.freebsd.org/cgi/man.cgi?config(8)" name="config(8)">
|
||||
generates the pca.h file from the number pca devices in the config file.
|
||||
<code>
|
||||
17 /*
|
||||
|
|
Loading…
Reference in a new issue