Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 02 Jul 2000 00:36:59 -0700 (PDT)
From:      John Baldwin <jhb@FreeBSD.ORG>
To:        "Jordan K. Hubbard" <jkh@zippy.osd.bsdi.com>
Cc:        freebsd-current@FreeBSD.ORG, Will Andrews <andrews@technologist.com>, obrien@FreeBSD.ORG
Subject:   Re: /sys hierarchy
Message-ID:  <200007020736.AAA33902@john.baldwin.cx>
In-Reply-To: <40081.962483740@localhost>

next in thread | previous in thread | raw e-mail | index | archive | help

On 01-Jul-00 Jordan K. Hubbard wrote:
>> Yes he did.  Talk to various committers and you'll see that many have
>> ideas where files should live.  There have been long threads on this
>> issue that got nowhere.  The reason things are in such a messy state is
>> when something new is brought in, or is changed suffiently much for a
>> repo copy the person take the chance to put the files where *they* think
>> they should live.  Vs. where there would be consistency in the /sys tree.
> 
> Talking to "various committers" will only yield various opinions and
> end up leading nowhere, however.  Perhaps if someone were to take
> it upon themselves to post a detailed proposal of where things should
> be moved to, others could at least comment more authoritatively
> (and substantially) on the topic rather than just engaging in more
> vague hand-waving.

I feel masochistic at the moment, so here's a suggestion.  Feel free
to rip it all up to pieces, ya'll.  And to start off: I like green
bikesheds.  (I.e. let's settle on something sensible and not get
_too_ involved, please, or just shoot the whole idea down and enjoy
our sphaghetti)

Current directory structure:

sys/
  ${MACHINE_ARCH}/      - MD stuff
    conf/               - MD kernel config files
    ${MACHINE_ARCH}/    - MD code
    include/            - MD includes
    ...                 - various MD modules such as binary compat
  boot/                 - bootstrap
    ${MACHINE_ARCH}/    - 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

Ok (/me dons the asbestos suit, climbs into the concrete room and locks
the door.)  Here is my proposal.  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_ARCH}       - stay the same, except add boot/ subdir
    boot/               - formerly sys/boot/${MACHINE_ARCH}
  boot                  - just MI boot code now.  Depending on portability
                          of ARC, possibly move boot/arc under
                          sys/alpha/boot
  compile/              - no change
  conf/                 - move NOTES to here from sys/i386/conf, but leave
                          it 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
    i4b/                - 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
  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
  miscfs/               - contents move to fs/.  E.g., sys/miscfs/deadfs ->
                          sys/fs/deadfs
  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/netatm
   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.
  svr4/                 - first, is this MI?  If it isn't, then move it under
                          sys/i386/ where it belongs.  If it isn't, then I presume
                          our binary compatibility code is going to have some more
                          MI code in the future, so create sys/compat/{linux,svr4,etc.}
                          and put the MI parts there and the MD parts under sys/${ARCH}
  sys/                  - no change
  ufs/                  - as with miscfs, move contents under fs/, thus we have
                          sys/ufs/ffs -> sys/fs/ffs
  vm/                   - no change

> - Jordan

-- 

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?200007020736.AAA33902>