I've tried to update the document to reflect the comments I've
received so far:
Current directory structure:
sys/
${MACHINE}/ - MD stuff
conf/ - MD kernel config files
${MACHINE/ - MD code
include/ - MD includes
... - various MD modules such as binary compat
boot/ - bootstrap
${MACHINE/ - MI boot code
cam/ - cam subsystem
coda/ - coda fs
compile/ - compile work directory
conf/ - MI kernel config files
contrib/ - 3rd party kernel code
crypto/ - kernel crypto code
ddb/ - DDB
dev/ - several device drivers
fs/ - one file system
gnu/ - GNU kernel code
i4b/ - ISDN support
isa/ - MI ISA base code and a few drivers such as joy0
isofs/ - CD9660 fs
kern/ - MI kernel code such as new-bus, vfs, init, etc.
libkern/ - libc for the kernel
miscfs/ - several fs's such as deadfs, devfs, etc.
modules/ - skeleton for the modules
msdosfs/ - MS-DOS FAT fs
net/ - some network drivers such as ppp, slip, bpf, and
generic network interface support
netatalk/ - support for Appletalk network
netatm/ - support for ATM network sockets
netgraph/ - the spiffy netgraph system
netinet/ - IPv4, TCP, UDP
netinet6/ - IPv6, IPsec, TCP and UDP glue
netipx/ - IPX/SPX
netkey/ - undocumented key management protocol - RFC 2367
netnatm/ - native mode ATM
netncp/ - Netware client protocol
netns/ - Xerox NS, including IDP and SP
nfs/ - NFS
ntfs/ - NTFS
nwfs/ - Netware FS
pccard/ - PC card drivers
pci/ - MI PCI code and some drivers, notably PCI network
cards
posix4/ - random POSIX code bucket
svr4/ - SVR4 binary compatibility
sys/ - kernel includes
ufs/ - UFS, FFS, and MFS
vm/ - VM system
Here is my proposal, adjusted a little as per suggestions. It attempts to
follow these loose guidelines:
- MD code under sys/${MACHINE_ARCH}
- device drivers (including bus's such as cam and usb) under sys/dev
- file systems under fs/
- networking under net/
sys/
${MACHINE}/ - stay mostly the same, the directories under here
mirror the sys/ directories. E.g. MD bootstrap
code would go in the boot/ subdir
boot/ - formerly sys/boot/${MACHINE}
compat/ - MD code for the binary compatibility layers, would
contain linux, svr4, etc. directories
boot/ - just MI boot code now. Depending on portability
of ARC, possibly move boot/arc under
sys/alpha/boot
compat/ - MI binary compatibility code
linux/ - parts of former sys/i386/linux
svr4/ - parts of former sys/svr4
compile/ - move compiling under arch-specific dirs
${MACHINE}/ - formerly sys/compile
conf/ - move NOTES to here from sys/i386/conf, but leave
the rest of the dir the same for now
contrib/ - stay the same. It mirrors the organization of
sys/. For example, contrib'd device drivers under
contrib/sys/dev, which is where they are now.
crypto/ - no change
ddb/ - no change
dev/ - everything in there now plus some extras
cam/ - formerly sys/cam
isdn/ - formerly sys/i4b
isa/ - formerly sys/isa, this just cintains the support
code for the ISA bus, actual device drivers such as
joy0 would move into sys/dev/<mumble>
pccard/ - formerly sys/pccard
pci/ - formerly sys/pci, split up just as sys/isa
fs/ - everything in there now plus some extras
codafs/ - formerly sys/coda
isofs/ - formerly sys/isofs
msdosfs/ - formerly sys/msdosfs
nfs/ - formerly sys/nfs
ntfs/ - formerly sys/ntfs
nwfs/ - formerly sys/nwfs
ufs/ - formerly sys/ufs/ufs
ffs/ - formerly sys/ufs/ffs
mfs/ - formerly sys/ufs/mfs
deadfs/ - formerly sys/miscfs/deadfs
devfs/ - formerly sys/miscfs/devfs
fdescfs/ - formerly sys/miscfs/fdesc
fifofs/ - formerly sys/miscfs/fifofs
kernfs/ - formerly sys/miscfs/kernfs
nullfs/ - formerly sys/miscfs/nullfs
portalfs/ - formerly sys/miscfs/portal
procfs/ - formerly sys/miscfs/procfs
specfs/ - formerly sys/miscfs/specfs
umapfs/ - formerly sys/miscfs/umapfs
unionfs/ - formerly sys/miscfs/union
gnu/ - No big change, but make it mirror sys/ as contrib
does. As a result, sys/gnu/ext2fs ->
sys/gnu/fs/ext2fs.
kern/ - no change
libkern/ - no change
modules/ - no change
net/ - move existing contents to net/base or something
similar
atalk/ - formerly sys/netatalk
atm/ - formerly sys/netatm
netgraph/ - formerly sys/netgraph
ip/ - IPv4, IPv6, and IPsec bits from sys/netinet{,6}
tcp/ - TCP " " " "
udp/ - UDP " " " "
ipx/ - formerly sys/netipx
key/ - formerly sys/netkey
natm/ - formerly sys/netnatm
ncp/ - formerly sys/netncp
ns/ - formerly sus/netns
posix4/ - move the code to where it belongs.. i.e. scheduler
stuff in kern, etc. If it is desirable to keep this
split out such as gnu/ and contrib/ then treat it
like gnu/ and contrib/. I'm not as firm about this
one and am willing to just let it be if it isn't
folded into the rest of the tree, however.
sys/ - no change
vm/ - no change
Notes:
- There has been one vote so far to ditch the whole net/ reorg, although
other people have expressed support for it.
- There have been a few votes for sys/bus instead of sys/dev for isa, eisa,
pci, cam, usb, and friends.
- The question has been raised as to whether or not splitting up netinet
is feasible. I'd like to hear back some more from people working with
the code if splitting it up is difficult, and if it is, if having
sys/net/inet containing all IP, TCP, UDP, etc. is a more workable option?
This file is available at http://people.FreeBSD.org/~jhb/sysorg.txt
--
John Baldwin <[EMAIL PROTECTED]> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.cslab.vt.edu/~jobaldwi/pgpkey.asc
"Power Users Use the Power to Serve!" - http://www.FreeBSD.org/
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message