freebsd-src/sys/kern
Peter Wemm 54823af256 First round implementation of a fine grain enhanced module to module
version dependency system.  This isn't quite finished, but it is at a
useful stage to do a functional checkpoint.

Highlights:
- version and dependency metadata is gathered via linker sets, so things
are handled the same for static kernels and code built to live in a kld.
- The dependencies are at module level (versus at file level).
- Dependencies determine kld symbol search order - this means that you
cannot link against symbols in another file unless you depend on it. This
is so that you cannot accidently unload the target out from underneath
the ones referencing it.
- It is flexible enough that we can put tags in #include files and macros
so that we can get decent hooks for enforcing recompiles on incompatable
ABI changes.  eg: if we change struct proc, we could force a recompile
for all kld's that reference the proc struct.
- Tangled dependency references at boot time are sorted.  Files are
relocated once all their dependencies are already relocated.

Caveats:
- Loader support is incomplete, but has been worked on seperately.
- Actual enforcement of the version number tags is not active yet - just
the module dependencies are live.  The actual structure of versioning
hasn't been agreed on yet. (eg: major.minor, or whatever)
- There is some backwards compatability for old modules without metadata
but I'm not sure how good it is.

This is based on work originally done by Boris Popov (bp@freebsd.org),
but I'm not sure he'd recognize much of it now. Don't blame him. :-)
Also, ideas have been borrowed from Mike Smith.
2000-04-29 13:19:31 +00:00
..
bus_if.m * Factor out the object system from new-bus so that it can be used by 2000-04-08 14:17:18 +00:00
device_if.m * Factor out the object system from new-bus so that it can be used by 2000-04-08 14:17:18 +00:00
imgact_aout.c Remove ~25 unneeded #include <sys/conf.h> 2000-04-19 14:58:28 +00:00
imgact_elf.c Change our ELF binary branding to something more acceptable to the Binutils 2000-04-18 02:39:26 +00:00
imgact_gzip.c useracc() the prequel: 1999-10-29 18:09:36 +00:00
imgact_shell.c Fix #! script exec under linux emulation. If a script is exec'd from a 2000-04-26 20:58:40 +00:00
inflate.c Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00
init_main.c Add new oid, debug.boothowto. This allows userland apps to see 2000-02-25 11:43:08 +00:00
init_sysent.c Introduce kqueue() and kevent(), a kernel event notification facility. 2000-04-16 18:53:38 +00:00
kern_acct.c Introduce NDFREE (and remove VOP_ABORTOP) 1999-12-15 23:02:35 +00:00
kern_acl.c Fix bde'isms in acl/extattr syscall interface, renaming syscalls to 2000-01-19 06:07:34 +00:00
kern_clock.c Remove ~25 unneeded #include <sys/conf.h> 2000-04-19 14:58:28 +00:00
kern_conf.c Reword warning to make it clearer (I read it as "remove block devices created 2000-03-25 21:10:20 +00:00
kern_descrip.c Introduce kqueue() and kevent(), a kernel event notification facility. 2000-04-16 18:53:38 +00:00
kern_environment.c Change the prototype of the strto* routines to make the second 1999-11-24 01:03:08 +00:00
kern_event.c Add files that I forgot to `cvs add' on last commit. 2000-04-16 19:02:08 +00:00
kern_exec.c Fix #! script exec under linux emulation. If a script is exec'd from a 2000-04-26 20:58:40 +00:00
kern_exit.c Introduce kqueue() and kevent(), a kernel event notification facility. 2000-04-16 18:53:38 +00:00
kern_fork.c Introduce kqueue() and kevent(), a kernel event notification facility. 2000-04-16 18:53:38 +00:00
kern_intr.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
kern_jail.c Yet-another-update: rename ``kern.prison'' to a new sysctl root entry, 2000-02-12 13:41:56 +00:00
kern_kthread.c Panic if proc0 hasn't been created and we try to call kthread_create. 2000-01-10 08:00:58 +00:00
kern_ktrace.c Introduce NDFREE (and remove VOP_ABORTOP) 1999-12-15 23:02:35 +00:00
kern_linker.c First round implementation of a fine grain enhanced module to module 2000-04-29 13:19:31 +00:00
kern_lock.c Eliminate the undocumented, experimental, non-delivering and highly 2000-03-16 08:51:55 +00:00
kern_lockf.c Commit the remaining part of PR14914: 1999-11-16 16:28:58 +00:00
kern_malloc.c Print "previous type" correctly when INVARIANTS is defined. 2000-03-14 14:58:04 +00:00
kern_mib.c Draw the outline of "struct bio". 2000-04-02 09:26:51 +00:00
kern_module.c First round implementation of a fine grain enhanced module to module 2000-04-29 13:19:31 +00:00
kern_ntptime.c Isolate the Timecounter internals in their own two files. 2000-03-20 14:09:06 +00:00
kern_physio.c Move B_ERROR flag to b_ioflags and call it BIO_ERROR. 2000-04-02 15:24:56 +00:00
kern_proc.c Also allow non-rot processes to setproctitle() 2000-02-08 19:54:15 +00:00
kern_prot.c Make the sigprocmask() and geteuid() system calls MP SAFE. Expand 2000-04-02 17:52:43 +00:00
kern_random.c Hookup /dev/[u]random on the Alpha. 2000-04-28 17:18:48 +00:00
kern_resource.c Don't try to account for the partial quantum unless the process is 2000-02-15 09:02:07 +00:00
kern_shutdown.c The SMP cleanup commit broke UP compiles. Make UP compiles work again. 2000-03-28 18:06:49 +00:00
kern_sig.c Introduce kqueue() and kevent(), a kernel event notification facility. 2000-04-16 18:53:38 +00:00
kern_subr.c useracc() the prequel: 1999-10-29 18:09:36 +00:00
kern_switch.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
kern_synch.c The SMP cleanup commit broke UP compiles. Make UP compiles work again. 2000-03-28 18:06:49 +00:00
kern_syscalls.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
kern_sysctl.c Remove unneeded <sys/buf.h> includes. 2000-04-18 15:15:39 +00:00
kern_tc.c Isolate the Timecounter internals in their own two files. 2000-03-20 14:09:06 +00:00
kern_threads.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
kern_time.c Remove unneeded <sys/buf.h> includes. 2000-04-18 15:15:39 +00:00
kern_timeout.c Restructure TCP timeout handling: 1999-08-30 21:17:07 +00:00
kern_xxx.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
ksched.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
link_aout.c First round implementation of a fine grain enhanced module to module 2000-04-29 13:19:31 +00:00
link_elf.c First round implementation of a fine grain enhanced module to module 2000-04-29 13:19:31 +00:00
link_elf_obj.c First round implementation of a fine grain enhanced module to module 2000-04-29 13:19:31 +00:00
linker_if.m First round implementation of a fine grain enhanced module to module 2000-04-29 13:19:31 +00:00
Make.tags.inc Add soft updates to the set of things being tagged. Syntax cleanup. 2000-01-27 01:22:06 +00:00
makedevops.pl Fix some bugs in user-end output and add a reference to the original 1999-11-22 14:40:04 +00:00
Makefile ${MACHINE} -> ${MACHINE_ARCH} 1999-11-14 13:54:44 +00:00
makeobjops.pl * Factor out the object system from new-bus so that it can be used by 2000-04-08 14:17:18 +00:00
makesyscalls.sh Make makesyscalls.sh parse an optional field 'MPSAFE' that specifies 2000-04-03 06:36:14 +00:00
md5c.c Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL" 1999-12-29 05:07:58 +00:00
p1003_1b.c Well folks, this is it - The second stage of the removal for build support 1999-04-17 08:36:07 +00:00
posix4_mib.c Add $FreeBSD$. 2000-04-22 15:13:06 +00:00
subr_acl_posix1e.c Fix bde'isms in acl/extattr syscall interface, renaming syscalls to 2000-01-19 06:07:34 +00:00
subr_autoconf.c Removal of sys/device.h 1999-10-05 21:19:41 +00:00
subr_blist.c Eliminate the undocumented, experimental, non-delivering and highly 2000-03-16 08:51:55 +00:00
subr_bus.c Make sure the driver's ops table has been initialised before calling 2000-04-22 15:03:08 +00:00
subr_clist.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
subr_devstat.c Clone bio versions of certain bits of infrastructure: 2000-04-02 19:08:05 +00:00
subr_disk.c Clone the {b|bio}_offset field, and make sure it is always initialized 2000-04-25 10:51:18 +00:00
subr_disklabel.c Retire bufqdisksort(), all drivers use bioqdisksort now. 2000-04-18 13:25:19 +00:00
subr_diskmbr.c Complete the bio/buf divorce for all code below devfs::strategy 2000-04-15 05:54:02 +00:00
subr_diskslice.c Remove unused variable. 2000-04-26 00:20:01 +00:00
subr_eventhandler.c Commit the remaining part of PR14914: 1999-11-16 16:28:58 +00:00
subr_kobj.c * Factor out the object system from new-bus so that it can be used by 2000-04-08 14:17:18 +00:00
subr_log.c Remove five now unused fields from struct cdevsw. They should never 1999-09-25 18:24:47 +00:00
subr_module.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
subr_param.c Make sysv-style shared memory tuneable params fully runtime adjustable 2000-03-30 07:17:05 +00:00
subr_prf.c Do not fault if curproc is null. 2000-04-29 11:32:15 +00:00
subr_prof.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
subr_rman.c Commit the remaining part of PR14914: 1999-11-16 16:28:58 +00:00
subr_scanf.c Change the prototype of the strto* routines to make the second 1999-11-24 01:03:08 +00:00
subr_smp.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
subr_trap.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
subr_xxx.c Remove five now unused fields from struct cdevsw. They should never 1999-09-25 18:24:47 +00:00
sys_generic.c Fix select(2) for the Alpha. (!!) It was never returning true for 2000-02-20 13:36:26 +00:00
sys_pipe.c Introduce kqueue() and kevent(), a kernel event notification facility. 2000-04-16 18:53:38 +00:00
sys_process.c Introduce the new function 1999-11-21 19:03:20 +00:00
sys_socket.c Update socket file type for fo_stat(). soo_stat() becomes a fileops 1999-11-08 03:31:01 +00:00
syscalls.c Introduce kqueue() and kevent(), a kernel event notification facility. 2000-04-16 18:53:38 +00:00
syscalls.master Introduce kqueue() and kevent(), a kernel event notification facility. 2000-04-16 18:53:38 +00:00
sysv_ipc.c In 'ipcperm()', only call 'suser()' if it is actually required. 2000-03-13 23:00:08 +00:00
sysv_msg.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
sysv_sem.c Remove #ifdef for sem_wakeup() - we just use wakeup(). 2000-03-30 11:35:25 +00:00
sysv_shm.c Make sysv-style shared memory tuneable params fully runtime adjustable 2000-03-30 07:17:05 +00:00
tty.c Add default 5min timeout for output drain to stop hanging on exit or in other 2000-04-27 20:14:21 +00:00
tty_compat.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
tty_conf.c Don't refer to TABLDISC in the comments here. 2000-01-30 10:14:13 +00:00
tty_cons.c Don't follow null pointers if we somehow have a null devswitch entry 2000-01-25 09:20:08 +00:00
tty_pty.c Correct an oversight in jail() that allowed processes in jail to access 2000-02-09 03:32:11 +00:00
tty_snoop.c Unstaticize this driver. You can have as many snoop devices as you can 2000-04-02 00:35:37 +00:00
tty_subr.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
tty_tty.c Remove five now unused fields from struct cdevsw. They should never 1999-09-25 18:24:47 +00:00
uipc_domain.c $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
uipc_mbuf.c Actively limit the allocation of mbufs to NMBUFS/nmbufs and mbuf clusters 1999-12-28 06:35:57 +00:00
uipc_proto.c Trim unused options (or #ifdef for undoc options). 1999-10-11 15:19:12 +00:00
uipc_sockbuf.c Introduce kqueue() and kevent(), a kernel event notification facility. 2000-04-16 18:53:38 +00:00
uipc_socket.c Introduce kqueue() and kevent(), a kernel event notification facility. 2000-04-16 18:53:38 +00:00
uipc_socket2.c Introduce kqueue() and kevent(), a kernel event notification facility. 2000-04-16 18:53:38 +00:00
uipc_syscalls.c Introduce kqueue() and kevent(), a kernel event notification facility. 2000-04-16 18:53:38 +00:00
uipc_usrreq.c Enable SCM_RIGHTS on alpha. Allocate necessary buffer as conversion between 2000-03-09 15:15:27 +00:00
vfs_acl.c Fix bde'isms in acl/extattr syscall interface, renaming syscalls to 2000-01-19 06:07:34 +00:00
vfs_aio.c Introduce kqueue() and kevent(), a kernel event notification facility. 2000-04-16 18:53:38 +00:00
vfs_bio.c Remove ~25 unneeded #include <sys/conf.h> 2000-04-19 14:58:28 +00:00
vfs_cache.c Move procfs_fullpath() to vfs_cache.c, with a rename to textvp_fullpath(). 2000-04-26 11:57:45 +00:00
vfs_cluster.c Complete the bio/buf divorce for all code below devfs::strategy 2000-04-15 05:54:02 +00:00
vfs_conf.c Split the logic of 2000-03-20 16:28:35 +00:00
vfs_default.c Complete the bio/buf divorce for all code below devfs::strategy 2000-04-15 05:54:02 +00:00
vfs_export.c Rename the existing BUF_STRATEGY() to DEV_STRATEGY() 2000-03-20 11:29:10 +00:00
vfs_extattr.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
vfs_init.c The sysctl mod_xx hack is no longer required now that we have totally 1999-12-12 16:30:34 +00:00
vfs_lookup.c Introduce NDFREE (and remove VOP_ABORTOP) 1999-12-15 23:02:35 +00:00
vfs_mount.c Split the logic of 2000-03-20 16:28:35 +00:00
vfs_subr.c Rename the existing BUF_STRATEGY() to DEV_STRATEGY() 2000-03-20 11:29:10 +00:00
vfs_syscalls.c Commit major SMP cleanups and move the BGL (big giant lock) in the 2000-03-28 07:16:37 +00:00
vfs_vnops.c Introduce kqueue() and kevent(), a kernel event notification facility. 2000-04-16 18:53:38 +00:00
vnode_if.pl Use a seperate -c and -h mode. The vnode_if.c file is compiled only into 1999-12-12 16:43:05 +00:00
vnode_if.src Second pass commit to introduce new ACL and Extended Attribute system 1999-12-19 06:08:07 +00:00