freebsd-skq/sys/conf/files

445 lines
14 KiB
Plaintext
Raw Normal View History

aicasm optional ahc device-driver \
dependency "$S/dev/aic7xxx/*.[chyl]" \
compile-with "make -f $S/dev/aic7xxx/Makefile MAKESRCPATH=$S/dev/aic7xxx" \
no-obj no-implicit-rule \
clean "aicasm"
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
# dependency lines other than the first are silently ignored.
#
aic7xxx_{seq,reg}.h optional ahc device-driver \
compile-with "./aicasm ${INCLUDES} -o aic7xxx_seq.h -r aic7xxx_reg.h $S/dev/aic7xxx/aic7xxx.seq" \
no-obj no-implicit-rule before-depend \
clean "aic7xxx_seq.h aic7xxx_reg.h" \
dependency "$S/dev/aic7xxx/aic7xxx.{reg,seq} $S/scsi/scsi_message.h aicasm"
ddb/db_access.c optional ddb
ddb/db_aout.c optional ddb
ddb/db_break.c optional ddb
ddb/db_command.c optional ddb
ddb/db_examine.c optional ddb
ddb/db_expr.c optional ddb
ddb/db_input.c optional ddb
ddb/db_lex.c optional ddb
ddb/db_output.c optional ddb
ddb/db_print.c optional ddb
ddb/db_ps.c optional ddb
ddb/db_run.c optional ddb
ddb/db_sym.c optional ddb
ddb/db_trap.c optional ddb
ddb/db_variables.c optional ddb
ddb/db_watch.c optional ddb
ddb/db_write_cmd.c optional ddb
dev/ccd/ccd.c optional ccd device-driver
1997-05-09 12:19:06 +00:00
dev/en/midway.c optional en device-driver
dev/pdq/pdq.c optional fea device-driver
dev/pdq/pdq_ifsubr.c optional fea device-driver
dev/pdq/pdq.c optional fpa device-driver
dev/pdq/pdq_ifsubr.c optional fpa device-driver
dev/ppbus/nlpt.c optional nlpt
dev/ppbus/ppb_base.c optional ppbus
dev/ppbus/ppb_1284.c optional ppbus
dev/ppbus/ppbconf.c optional ppbus
dev/ppbus/ppi.c optional ppi
dev/ppbus/vpo.c optional vpo
1994-12-04 20:08:18 +00:00
dev/vn/vn.c optional vn
dev/vx/if_vx.c optional vx device-driver
gnu/ext2fs/ext2_alloc.c optional ext2fs
gnu/ext2fs/ext2_balloc.c optional ext2fs
gnu/ext2fs/ext2_inode.c optional ext2fs
gnu/ext2fs/ext2_inode_cnv.c optional ext2fs
gnu/ext2fs/ext2_linux_balloc.c optional ext2fs
gnu/ext2fs/ext2_linux_ialloc.c optional ext2fs
gnu/ext2fs/ext2_lookup.c optional ext2fs
gnu/ext2fs/ext2_subr.c optional ext2fs
gnu/ext2fs/ext2_vfsops.c optional ext2fs
gnu/ext2fs/ext2_vnops.c optional ext2fs
1994-05-24 10:09:53 +00:00
isofs/cd9660/cd9660_bmap.c optional cd9660
isofs/cd9660/cd9660_lookup.c optional cd9660
isofs/cd9660/cd9660_node.c optional cd9660
isofs/cd9660/cd9660_rrip.c optional cd9660
isofs/cd9660/cd9660_util.c optional cd9660
isofs/cd9660/cd9660_vfsops.c optional cd9660
isofs/cd9660/cd9660_vnops.c optional cd9660
kern/imgact_aout.c standard
kern/imgact_elf.c standard
kern/imgact_gzip.c optional gzip
kern/imgact_shell.c standard
kern/inflate.c optional gzip
1994-05-24 10:09:53 +00:00
kern/init_main.c standard
kern/init_sysent.c standard
Mega-commit for Linux emulator update.. This has been stress tested under netscape-2.0 for Linux running all the Java stuff. The scrollbars are now working, at least on my machine. (whew! :-) I'm uncomfortable with the size of this commit, but it's too inter-dependant to easily seperate out. The main changes: COMPAT_LINUX is *GONE*. Most of the code has been moved out of the i386 machine dependent section into the linux emulator itself. The int 0x80 syscall code was almost identical to the lcall 7,0 code and a minor tweak allows them to both be used with the same C code. All kernels can now just modload the lkm and it'll DTRT without having to rebuild the kernel first. Like IBCS2, you can statically compile it in with "options LINUX". A pile of new syscalls implemented, including getdents(), llseek(), readv(), writev(), msync(), personality(). The Linux-ELF libraries want to use some of these. linux_select() now obeys Linux semantics, ie: returns the time remaining of the timeout value rather than leaving it the original value. Quite a few bugs removed, including incorrect arguments being used in syscalls.. eg: mixups between passing the sigset as an int, vs passing it as a pointer and doing a copyin(), missing return values, unhandled cases, SIOC* ioctls, etc. The build for the code has changed. i386/conf/files now knows how to build linux_genassym and generate linux_assym.h on the fly. Supporting changes elsewhere in the kernel: The user-mode signal trampoline has moved from the U area to immediately below the top of the stack (below PS_STRINGS). This allows the different binary emulations to have their own signal trampoline code (which gets rid of the hardwired syscall 103 (sigreturn on BSD, syslog on Linux)) and so that the emulator can provide the exact "struct sigcontext *" argument to the program's signal handlers. The sigstack's "ss_flags" now uses SS_DISABLE and SS_ONSTACK flags, which have the same values as the re-used SA_DISABLE and SA_ONSTACK which are intended for sigaction only. This enables the support of a SA_RESETHAND flag to sigaction to implement the gross SYSV and Linux SA_ONESHOT signal semantics where the signal handler is reset when it's triggered. makesyscalls.sh no longer appends the struct sysentvec on the end of the generated init_sysent.c code. It's a lot saner to have it in a seperate file rather than trying to update the structure inside the awk script. :-) At exec time, the dozen bytes or so of signal trampoline code are copied to the top of the user's stack, rather than obtaining the trampoline code the old way by getting a clone of the parent's user area. This allows Linux and native binaries to freely exec each other without getting trampolines mixed up.
1996-03-02 19:38:20 +00:00
kern/init_sysvec.c standard
kern/kern_intr.c standard
kern/kern_module.c standard
kern/kern_linker.c standard
kern/link_aout.c standard
1994-05-24 10:09:53 +00:00
kern/kern_acct.c standard
kern/kern_clock.c standard
kern/kern_conf.c standard
1994-05-24 10:09:53 +00:00
kern/kern_descrip.c standard
kern/kern_exec.c standard
kern/kern_exit.c standard
kern/kern_fork.c standard
kern/kern_ktrace.c standard
1994-09-28 22:45:04 +00:00
kern/kern_lkm.c standard
kern/kern_lock.c standard
1994-09-20 15:55:09 +00:00
kern/kern_lockf.c standard
1994-05-24 10:09:53 +00:00
kern/kern_malloc.c standard
kern/kern_mib.c standard
kern/kern_ntptime.c standard
kern/kern_opt.c standard
1994-05-24 10:09:53 +00:00
kern/kern_physio.c standard
kern/kern_proc.c standard
kern/kern_prot.c standard
kern/kern_resource.c standard
kern/kern_shutdown.c standard
1994-05-24 10:09:53 +00:00
kern/kern_sig.c standard
kern/kern_subr.c standard
kern/kern_synch.c standard
kern/kern_sysctl.c standard
kern/kern_time.c standard
kern/kern_xxx.c standard
kern/md5c.c optional md5
kern/subr_diskslice.c standard
kern/subr_autoconf.c standard
kern/subr_dkbad.c standard
1994-05-24 10:09:53 +00:00
kern/subr_log.c standard
kern/subr_prf.c standard
kern/subr_prof.c standard
kern/subr_rlist.c standard
1994-05-24 10:09:53 +00:00
kern/subr_xxx.c standard
kern/sys_generic.c standard
kern/sys_pipe.c standard
1994-05-24 10:09:53 +00:00
kern/sys_process.c standard
kern/sys_socket.c standard
kern/sysv_ipc.c standard
kern/sysv_msg.c optional sysvmsg
kern/sysv_sem.c optional sysvsem
1994-05-24 10:09:53 +00:00
kern/sysv_shm.c optional sysvshm
kern/tty.c standard
kern/tty_compat.c standard
kern/tty_conf.c standard
kern/tty_pty.c optional pty
kern/tty_snoop.c optional snp
1994-05-24 10:09:53 +00:00
kern/tty_subr.c standard
kern/tty_tb.c optional tb
kern/tty_tty.c standard
kern/uipc_domain.c standard
kern/uipc_mbuf.c standard
kern/uipc_proto.c standard
kern/uipc_socket.c standard
kern/uipc_socket2.c standard
kern/uipc_syscalls.c standard
kern/uipc_usrreq.c standard
kern/vfs_bio.c standard
kern/vfs_cache.c standard
kern/vfs_cluster.c standard
kern/vfs_conf.c standard
kern/vfs_init.c standard
kern/vfs_lookup.c standard
kern/vfs_subr.c standard
kern/vfs_syscalls.c standard
kern/vfs_vnops.c standard
kern/kern_threads.c standard
kern/vfs_aio.c standard
1994-05-24 10:09:53 +00:00
miscfs/deadfs/dead_vnops.c standard
miscfs/devfs/devfs_tree.c optional devfs
miscfs/devfs/devfs_vfsops.c optional devfs
miscfs/devfs/devfs_vnops.c optional devfs
1994-05-24 10:09:53 +00:00
miscfs/fdesc/fdesc_vfsops.c optional fdesc
miscfs/fdesc/fdesc_vnops.c optional fdesc
miscfs/fifofs/fifo_vnops.c standard
1994-05-24 10:09:53 +00:00
miscfs/kernfs/kernfs_vfsops.c optional kernfs
miscfs/kernfs/kernfs_vnops.c optional kernfs
miscfs/nullfs/null_subr.c optional nullfs
miscfs/nullfs/null_vfsops.c optional nullfs
miscfs/nullfs/null_vnops.c optional nullfs
miscfs/portal/portal_vfsops.c optional portal
miscfs/portal/portal_vnops.c optional portal
miscfs/procfs/procfs_ctl.c optional procfs
miscfs/procfs/procfs_fpregs.c standard
miscfs/procfs/procfs_map.c optional procfs
miscfs/procfs/procfs_mem.c standard
1994-09-20 15:55:09 +00:00
miscfs/procfs/procfs_note.c optional procfs
miscfs/procfs/procfs_regs.c standard
1994-09-20 15:55:09 +00:00
miscfs/procfs/procfs_status.c optional procfs
miscfs/procfs/procfs_subr.c optional procfs
miscfs/procfs/procfs_type.c optional procfs
1994-09-20 15:55:09 +00:00
miscfs/procfs/procfs_vfsops.c optional procfs
miscfs/procfs/procfs_vnops.c optional procfs
1994-05-24 10:09:53 +00:00
miscfs/specfs/spec_vnops.c standard
miscfs/umapfs/umap_subr.c optional umapfs
miscfs/umapfs/umap_vfsops.c optional umapfs
miscfs/umapfs/umap_vnops.c optional umapfs
miscfs/union/union_subr.c optional union
miscfs/union/union_vfsops.c optional union
miscfs/union/union_vnops.c optional union
1994-09-20 15:55:09 +00:00
msdosfs/msdosfs_conv.c optional msdosfs
msdosfs/msdosfs_denode.c optional msdosfs
msdosfs/msdosfs_fat.c optional msdosfs
msdosfs/msdosfs_lookup.c optional msdosfs
msdosfs/msdosfs_vfsops.c optional msdosfs
msdosfs/msdosfs_vnops.c optional msdosfs
1994-05-24 10:09:53 +00:00
net/bpf.c optional bpfilter
net/bpf_filter.c optional bpfilter
net/bsd_comp.c optional ppp_bsdcomp
1997-08-16 19:11:10 +00:00
net/hostcache.c standard
1994-05-24 10:09:53 +00:00
net/if.c standard
1997-05-09 12:19:06 +00:00
net/if_atmsubr.c optional atm
net/if_disc.c optional disc
1994-05-24 10:09:53 +00:00
net/if_ethersubr.c optional ether
net/if_fddisubr.c optional fddi
1994-05-24 10:09:53 +00:00
net/if_loop.c optional loop
1997-05-03 21:06:00 +00:00
net/if_media.c standard
net/if_mib.c standard
net/if_ppp.c optional ppp
1994-05-24 10:09:53 +00:00
net/if_sl.c optional sl
net/if_spppsubr.c optional sppp
net/if_tun.c optional tun
net/ppp_deflate.c optional ppp_deflate
net/ppp_tty.c optional ppp
1994-05-24 10:09:53 +00:00
net/radix.c standard
net/raw_cb.c standard
net/raw_usrreq.c standard
net/route.c standard
net/rtsock.c standard
net/slcompress.c optional ppp
1994-05-24 10:09:53 +00:00
net/slcompress.c optional sl
net/zlib.c optional ppp_deflate
netatalk/aarp.c optional netatalk
netatalk/at_control.c optional netatalk
netatalk/at_proto.c optional netatalk
netatalk/at_rmx.c optional netatalkdebug
netatalk/ddp_input.c optional netatalk
netatalk/ddp_output.c optional netatalk
netatalk/ddp_usrreq.c optional netatalk
#netccitt/ccitt_proto.c optional ccitt
#netccitt/hd_debug.c optional hdlc
#netccitt/hd_input.c optional hdlc
#netccitt/hd_output.c optional hdlc
#netccitt/hd_subr.c optional hdlc
#netccitt/hd_timer.c optional hdlc
#netccitt/if_x25subr.c optional ccitt
#netccitt/llc_input.c optional llc
#netccitt/llc_output.c optional llc
#netccitt/llc_subr.c optional llc
#netccitt/llc_timer.c optional llc
#netccitt/pk_acct.c optional ccitt
#netccitt/pk_debug.c optional ccitt
#netccitt/pk_input.c optional ccitt
#netccitt/pk_llcsubr.c optional hdlc
#netccitt/pk_llcsubr.c optional llc
#netccitt/pk_output.c optional ccitt
#netccitt/pk_subr.c optional ccitt
#netccitt/pk_timer.c optional ccitt
#netccitt/pk_usrreq.c optional ccitt
#netimp/if_imp.c optional imp
#netimp/if_imphost.c optional imp
#netimp/raw_imp.c optional imp
1997-05-09 12:19:06 +00:00
netinet/if_atm.c optional atm
1994-05-24 10:09:53 +00:00
netinet/if_ether.c optional ether
netinet/igmp.c optional inet
netinet/in.c optional inet
1997-08-16 19:11:10 +00:00
netinet/in_hostcache.c optional inet
1994-05-24 10:09:53 +00:00
netinet/in_pcb.c optional inet
netinet/in_proto.c optional inet
netinet/in_rmx.c optional inet
netinet/ip_divert.c optional ipdivert
netinet/ip_fw.c optional ipfirewall
1994-05-24 10:09:53 +00:00
netinet/ip_icmp.c optional inet
netinet/ip_input.c optional inet
netinet/ip_mroute.c optional inet
1994-05-24 10:09:53 +00:00
netinet/ip_output.c optional inet
netinet/raw_ip.c optional inet
netinet/tcp_debug.c optional tcpdebug
1994-05-24 10:09:53 +00:00
netinet/tcp_input.c optional inet
netinet/tcp_output.c optional inet
netinet/tcp_subr.c optional inet
netinet/tcp_timer.c optional inet
netinet/tcp_usrreq.c optional inet
netinet/udp_usrreq.c optional inet
netinet/ip_fil.c optional ipfilter inet
netinet/fil.c optional ipfilter inet
netinet/ip_nat.c optional ipfilter inet
netinet/ip_frag.c optional ipfilter inet
netinet/ip_state.c optional ipfilter inet
1997-05-25 15:56:18 +00:00
netinet/ip_proxy.c optional ipfilter inet
netinet/mln_ipl.c optional ipfilter inet
netipx/ipx.c optional ipx
netipx/ipx_cksum.c optional ipx
netipx/ipx_input.c optional ipx
netipx/ipx_ip.c optional ipx
netipx/ipx_outputfl.c optional ipx
netipx/ipx_pcb.c optional ipx
netipx/ipx_proto.c optional ipx
netipx/ipx_tun.c optional ipx
netipx/ipx_usrreq.c optional ipx
netipx/spx_debug.c optional ipx
netipx/spx_usrreq.c optional ipx
#netiso/clnp_debug.c optional iso
#netiso/clnp_er.c optional iso
#netiso/clnp_frag.c optional iso
#netiso/clnp_input.c optional iso
#netiso/clnp_options.c optional iso
#netiso/clnp_output.c optional iso
#netiso/clnp_raw.c optional iso
#netiso/clnp_subr.c optional iso
#netiso/clnp_timer.c optional iso
#netiso/cltp_usrreq.c optional iso
#netiso/esis.c optional iso
#netiso/idrp_usrreq.c optional iso
#netiso/if_eon.c optional eon
#netiso/iso.c optional iso
#netiso/iso_chksum.c optional iso
#netiso/iso_pcb.c optional iso
#netiso/iso_proto.c optional iso
#netiso/iso_snpac.c optional iso
#netiso/tp_astring.c optional iso
#netiso/tp_astring.c optional tpip
#netiso/tp_cons.c optional iso
#netiso/tp_driver.c optional iso
#netiso/tp_driver.c optional tpip
#netiso/tp_emit.c optional iso
#netiso/tp_emit.c optional tpip
#netiso/tp_inet.c optional iso
#netiso/tp_inet.c optional tpip
#netiso/tp_input.c optional iso
#netiso/tp_input.c optional tpip
#netiso/tp_iso.c optional iso
#netiso/tp_meas.c optional iso
#netiso/tp_meas.c optional tpip
#netiso/tp_output.c optional iso
#netiso/tp_output.c optional tpip
#netiso/tp_pcb.c optional iso
#netiso/tp_pcb.c optional tpip
#netiso/tp_subr.c optional iso
#netiso/tp_subr.c optional tpip
#netiso/tp_subr2.c optional iso
#netiso/tp_subr2.c optional tpip
#netiso/tp_timer.c optional iso
#netiso/tp_timer.c optional tpip
#netiso/tp_trace.c optional iso
#netiso/tp_trace.c optional tpip
#netiso/tp_usrreq.c optional iso
#netiso/tp_usrreq.c optional tpip
#netiso/tuba_subr.c optional iso tuba
#netiso/tuba_table.c optional iso tuba
#netiso/tuba_usrreq.c optional iso tuba
netkey/key.c optional key
1997-05-09 12:19:06 +00:00
netnatm/natm.c optional natm
netnatm/natm_pcb.c optional natm
netnatm/natm_proto.c optional natm
#netns/idp_usrreq.c optional ns
#netns/ns.c optional ns
#netns/ns_error.c optional ns
#netns/ns_input.c optional ns
#netns/ns_ip.c optional ns
#netns/ns_output.c optional ns
#netns/ns_pcb.c optional ns
#netns/ns_proto.c optional ns
#netns/spp_debug.c optional ns
#netns/spp_usrreq.c optional ns
1994-05-24 10:09:53 +00:00
nfs/nfs_bio.c optional nfs
nfs/nfs_node.c optional nfs
nfs/nfs_nqlease.c optional nfs
nfs/nfs_serv.c optional nfs
nfs/nfs_socket.c optional nfs
nfs/nfs_srvcache.c optional nfs
nfs/nfs_subs.c optional nfs
nfs/nfs_syscalls.c optional nfs
nfs/nfs_vfsops.c optional nfs
nfs/nfs_vnops.c optional nfs
nfs/bootp_subr.c optional bootp
nfs/krpc_subr.c optional bootp
pccard/pccard.c optional crd
pccard/pcic.c optional pcic device-driver
pci/aic7870.c optional ahc device-driver \
dependency "aic7xxx_reg.h $S/pci/aic7870.c"
pci/brooktree848.c optional bktr device-driver
pci/bt9xx.c optional bt device-driver
pci/cy_pci.c optional cy device-driver
pci/if_de.c optional de device-driver
pci/if_ed_p.c optional ed device-driver
1997-05-09 12:19:06 +00:00
pci/if_en_pci.c optional en device-driver
pci/if_fxp.c optional fxp device-driver
pci/if_lnc_p.c optional lnc device-driver
pci/if_fpa.c optional fpa device-driver
pci/if_sr_p.c optional sr device-driver
pci/if_vx_pci.c optional vx device-driver
pci/meteor.c optional meteor device-driver
pci/ncr.c optional ncr device-driver
pci/pci.c optional pci device-driver
Completely replace the PCI bus driver code to make it better reflect reality. There will be a new call interface, but for now the file pci_compat.c (which is to be deleted, after all drivers are converted) provides an emulation of the old PCI bus driver functions. The only change that might be visible to drivers is, that the type pcici_t (which had been meant to be just a handle, whose exact definition should not be relied on), has been converted into a pcicfgregs* . The Tekram AMD SCSI driver bogusly relied on the definition of pcici_t and has been converted to just call the PCI drivers functions to access configuration space register, instead of inventing its own ... This code is by no means complete, but assumed to be fully operational, and brings the official code base more in line with my development code. A new generic device descriptor data type has to be agreed on. The PCI code will then use that data type to provide new functionality: 1) userconfig support 2) "wired" PCI devices 3) conflicts checking against ISA/EISA 4) maps will depend on the command register enable bits 5) PCI to Anything bridges can be defined as devices, and are probed like any "standard" PCI device. The following features are currently missing, but will be added back, soon: 1) unknown device probe message 2) suppression of "mirrored" devices caused by ancient, broken chip-sets This code relies on generic shared interrupt support just commited to kern_intr.c (plus the modifications of isa.c and isa_device.h).
1997-05-26 15:08:43 +00:00
pci/pci_compat.c optional pci
pci/pcisupport.c optional pci
pci/tek390.c optional amd device-driver
pci/wdc_p.c optional wdc device-driver
scsi/cd.c optional cd
scsi/ch.c optional ch
scsi/od.c optional od
scsi/pt.c optional pt
scsi/scsi_base.c optional scbus
scsi/scsi_driver.c optional scbus
scsi/scsi_ioctl.c optional scbus
scsi/scsi_sense.c optional scbus
1994-09-20 15:55:09 +00:00
scsi/scsiconf.c optional scbus
scsi/sctarg.c optional sctarg
scsi/sd.c optional sd
scsi/ssc.c optional ssc
scsi/st.c optional st
scsi/su.c optional su
scsi/uk.c optional scbus
scsi/worm.c optional worm
1994-05-24 10:09:53 +00:00
ufs/ffs/ffs_alloc.c optional ffs
ufs/ffs/ffs_alloc.c optional mfs
ufs/ffs/ffs_balloc.c optional ffs
ufs/ffs/ffs_balloc.c optional mfs
ufs/ffs/ffs_inode.c optional ffs
ufs/ffs/ffs_inode.c optional mfs
ufs/ffs/ffs_subr.c optional ffs
ufs/ffs/ffs_subr.c optional mfs
ufs/ffs/ffs_tables.c optional ffs
ufs/ffs/ffs_tables.c optional mfs
ufs/ffs/ffs_vfsops.c optional ffs
ufs/ffs/ffs_vfsops.c optional mfs
ufs/ffs/ffs_vnops.c optional ffs
ufs/ffs/ffs_vnops.c optional mfs
ufs/lfs/lfs_alloc.c optional lfs
ufs/lfs/lfs_balloc.c optional lfs
1994-09-20 15:55:09 +00:00
ufs/lfs/lfs_bio.c optional lfs
1994-05-24 10:09:53 +00:00
ufs/lfs/lfs_cksum.c optional lfs
ufs/lfs/lfs_debug.c optional lfs
ufs/lfs/lfs_inode.c optional lfs
ufs/lfs/lfs_segment.c optional lfs
ufs/lfs/lfs_subr.c optional lfs
ufs/lfs/lfs_syscalls.c optional lfs
ufs/lfs/lfs_vfsops.c optional lfs
ufs/lfs/lfs_vnops.c optional lfs
ufs/mfs/mfs_vfsops.c optional mfs
ufs/mfs/mfs_vnops.c optional mfs
ufs/ufs/ufs_bmap.c standard
ufs/ufs/ufs_disksubr.c standard
ufs/ufs/ufs_ihash.c standard
ufs/ufs/ufs_inode.c standard
ufs/ufs/ufs_lookup.c standard
ufs/ufs/ufs_quota.c standard
ufs/ufs/ufs_vfsops.c standard
ufs/ufs/ufs_vnops.c standard
NOTE: libkvm, w, ps, 'top', and any other utility which depends on struct proc or any VM system structure will have to be rebuilt!!! Much needed overhaul of the VM system. Included in this first round of changes: 1) Improved pager interfaces: init, alloc, dealloc, getpages, putpages, haspage, and sync operations are supported. The haspage interface now provides information about clusterability. All pager routines now take struct vm_object's instead of "pagers". 2) Improved data structures. In the previous paradigm, there is constant confusion caused by pagers being both a data structure ("allocate a pager") and a collection of routines. The idea of a pager structure has escentially been eliminated. Objects now have types, and this type is used to index the appropriate pager. In most cases, items in the pager structure were duplicated in the object data structure and thus were unnecessary. In the few cases that remained, a un_pager structure union was created in the object to contain these items. 3) Because of the cleanup of #1 & #2, a lot of unnecessary layering can now be removed. For instance, vm_object_enter(), vm_object_lookup(), vm_object_remove(), and the associated object hash list were some of the things that were removed. 4) simple_lock's removed. Discussion with several people reveals that the SMP locking primitives used in the VM system aren't likely the mechanism that we'll be adopting. Even if it were, the locking that was in the code was very inadequate and would have to be mostly re-done anyway. The locking in a uni-processor kernel was a no-op but went a long way toward making the code difficult to read and debug. 5) Places that attempted to kludge-up the fact that we don't have kernel thread support have been fixed to reflect the reality that we are really dealing with processes, not threads. The VM system didn't have complete thread support, so the comments and mis-named routines were just wrong. We now use tsleep and wakeup directly in the lock routines, for instance. 6) Where appropriate, the pagers have been improved, especially in the pager_alloc routines. Most of the pager_allocs have been rewritten and are now faster and easier to maintain. 7) The pagedaemon pageout clustering algorithm has been rewritten and now tries harder to output an even number of pages before and after the requested page. This is sort of the reverse of the ideal pagein algorithm and should provide better overall performance. 8) Unnecessary (incorrect) casts to caddr_t in calls to tsleep & wakeup have been removed. Some other unnecessary casts have also been removed. 9) Some almost useless debugging code removed. 10) Terminology of shadow objects vs. backing objects straightened out. The fact that the vm_object data structure escentially had this backwards really confused things. The use of "shadow" and "backing object" throughout the code is now internally consistent and correct in the Mach terminology. 11) Several minor bug fixes, including one in the vm daemon that caused 0 RSS objects to not get purged as intended. 12) A "default pager" has now been created which cleans up the transition of objects to the "swap" type. The previous checks throughout the code for swp->pg_data != NULL were really ugly. This change also provides the rudiments for future backing of "anonymous" memory by something other than the swap pager (via the vnode pager, for example), and it allows the decision about which of these pagers to use to be made dynamically (although will need some additional decision code to do this, of course). 13) (dyson) MAP_COPY has been deprecated and the corresponding "copy object" code has been removed. MAP_COPY was undocumented and non- standard. It was furthermore broken in several ways which caused its behavior to degrade to MAP_PRIVATE. Binaries that use MAP_COPY will continue to work correctly, but via the slightly different semantics of MAP_PRIVATE. 14) (dyson) Sharing maps have been removed. It's marginal usefulness in a threads design can be worked around in other ways. Both #12 and #13 were done to simplify the code and improve readability and maintain- ability. (As were most all of these changes) TODO: 1) Rewrite most of the vnode pager to use VOP_GETPAGES/PUTPAGES. Doing this will reduce the vnode pager to a mere fraction of its current size. 2) Rewrite vm_fault and the swap/vnode pagers to use the clustering information provided by the new haspage pager interface. This will substantially reduce the overhead by eliminating a large number of VOP_BMAP() calls. The VOP_BMAP() filesystem interface should be improved to provide both a "behind" and "ahead" indication of contiguousness. 3) Implement the extended features of pager_haspage in swap_pager_haspage(). It currently just says 0 pages ahead/behind. 4) Re-implement the swap device (swstrategy) in a more elegant way, perhaps via a much more general mechanism that could also be used for disk striping of regular filesystems. 5) Do something to improve the architecture of vm_object_collapse(). The fact that it makes calls into the swap pager and knows too much about how the swap pager operates really bothers me. It also doesn't allow for collapsing of non-swap pager objects ("unnamed" objects backed by other pagers).
1995-07-13 08:48:48 +00:00
vm/default_pager.c standard
vm/device_pager.c standard
vm/swap_pager.c standard
1994-05-24 10:09:53 +00:00
vm/vm_fault.c standard
vm/vm_glue.c standard
vm/vm_init.c standard
vm/vm_kern.c standard
vm/vm_map.c standard
vm/vm_meter.c standard
vm/vm_mmap.c standard
vm/vm_object.c standard
vm/vm_page.c standard
vm/vm_pageout.c standard
vm/vm_pager.c standard
vm/vm_swap.c standard
vm/vm_unix.c standard
vm/vnode_pager.c standard
vm/vm_zone.c standard