From owner-freebsd-current Sun Jul 2 0:36:14 2000 Delivered-To: freebsd-current@freebsd.org Received: from server.baldwin.cx (server.geekhouse.net [64.81.6.52]) by hub.freebsd.org (Postfix) with ESMTP id DB7E637B6D8; Sun, 2 Jul 2000 00:36:07 -0700 (PDT) (envelope-from john@baldwin.cx) Received: from john.baldwin.cx (root@john.baldwin.cx [192.168.1.18]) by server.baldwin.cx (8.9.3/8.9.3) with ESMTP id AAA22270; Sun, 2 Jul 2000 00:36:06 -0700 (PDT) (envelope-from john@baldwin.cx) Received: (from john@localhost) by john.baldwin.cx (8.9.3/8.9.3) id AAA33902; Sun, 2 Jul 2000 00:36:59 -0700 (PDT) (envelope-from john) Message-Id: <200007020736.AAA33902@john.baldwin.cx> X-Mailer: XFMail 1.4.0 on FreeBSD X-Priority: 3 (Normal) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8bit MIME-Version: 1.0 In-Reply-To: <40081.962483740@localhost> Date: Sun, 02 Jul 2000 00:36:59 -0700 (PDT) From: John Baldwin To: "Jordan K. Hubbard" Subject: Re: /sys hierarchy Cc: freebsd-current@FreeBSD.ORG, Will Andrews , obrien@FreeBSD.ORG Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG 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/ 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 -- 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