Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 05 Jul 2000 00:04:12 -0700 (PDT)
From:      John Baldwin <jhb@FreeBSD.ORG>
To:        freebsd-current@FreeBSD.ORG
Subject:   Re: /sys hierarchy
Message-ID:  <200007050704.AAA42641@john.baldwin.cx>
In-Reply-To: <200007020736.AAA33902@john.baldwin.cx>

next in thread | previous in thread | raw e-mail | index | archive | help
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 <jhb@FreeBSD.org> -- 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 majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200007050704.AAA42641>