36412d79b4
reducues the maintenance load for the mutex code. The only MD portions of the mutex code are in machine/mutex.h now, which include the assembly macros for handling mutexes as well as optionally overriding the mutex micro-operations. For example, we use optimized micro-ops on the x86 platform #ifndef I386_CPU. - Change the behavior of the SMP_DEBUG kernel option. In the new code, mtx_assert() only depends on INVARIANTS, allowing other kernel developers to have working mutex assertiions without having to include all of the mutex debugging code. The SMP_DEBUG kernel option has been renamed to MUTEX_DEBUG and now just controls extra mutex debugging code. - Abolish the ugly mtx_f hack. Instead, we dynamically allocate seperate mtx_debug structures on the fly in mtx_init, except for mutexes that are initiated very early in the boot process. These mutexes are declared using a special MUTEX_DECLARE() macro, and use a new flag MTX_COLD when calling mtx_init. This is still somewhat hackish, but it is less evil than the mtx_f filler struct, and the mtx struct is now the same size with and without mutex debugging code. - Add some micro-micro-operation macros for doing the actual atomic operations on the mutex mtx_lock field to make it easier for other archs to override/optimize mutex ops if needed. These new tiny ops also clean up the code in some places by replacing long atomic operation function calls that spanned 2-3 lines with a short 1-line macro call. - Don't call mi_switch() from mtx_enter_hard() when we block while trying to obtain a sleep mutex. Calling mi_switch() would bogusly release Giant before switching to the next process. Instead, inline most of the code from mi_switch() in the mtx_enter_hard() function. Note that when we finally kill Giant we can back this out and go back to calling mi_switch().
360 lines
14 KiB
Plaintext
360 lines
14 KiB
Plaintext
# This file tells config what files go into building a kernel,
|
|
# files marked standard are always included.
|
|
#
|
|
# $FreeBSD$
|
|
#
|
|
# 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.
|
|
#
|
|
linux_genassym.o optional compat_linux \
|
|
dependency "$S/i386/linux/linux_genassym.c" \
|
|
compile-with "${CC} ${CFLAGS} -c ${.IMPSRC}" \
|
|
no-obj no-implicit-rule \
|
|
clean "linux_genassym.o"
|
|
#
|
|
linux_assym.h optional compat_linux \
|
|
dependency "$S/kern/genassym.sh linux_genassym.o" \
|
|
compile-with "sh $S/kern/genassym.sh linux_genassym.o > ${.TARGET}" \
|
|
no-obj no-implicit-rule before-depend \
|
|
clean "linux_assym.h"
|
|
#
|
|
svr4_genassym.o optional compat_svr4 \
|
|
dependency "$S/i386/svr4/svr4_genassym.c" \
|
|
compile-with "${CC} ${CFLAGS} -c ${.IMPSRC}" \
|
|
no-obj no-implicit-rule \
|
|
clean "svr4_genassym.o"
|
|
#
|
|
svr4_assym.h optional compat_svr4 \
|
|
dependency "$S/kern/genassym.sh svr4_genassym.o" \
|
|
compile-with "sh $S/kern/genassym.sh svr4_genassym.o > ${.TARGET}" \
|
|
no-obj no-implicit-rule before-depend \
|
|
clean "svr4_assym.h"
|
|
#
|
|
font.h optional sc_dflt_font \
|
|
compile-with "uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x16.fnt && file2c 'static u_char dflt_font_16[16*256] = {' '};' < ${SC_DFLT_FONT}-8x16 > font.h && uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x14.fnt && file2c 'static u_char dflt_font_14[14*256] = {' '};' < ${SC_DFLT_FONT}-8x14 >> font.h && uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x8.fnt && file2c 'static u_char dflt_font_8[8*256] = {' '};' < ${SC_DFLT_FONT}-8x8 >> font.h" \
|
|
no-obj no-implicit-rule before-depend \
|
|
clean "font.h ${SC_DFLT_FONT}-8x14 ${SC_DFLT_FONT}-8x16 ${SC_DFLT_FONT}-8x8"
|
|
#
|
|
atkbdmap.h optional atkbd_dflt_keymap \
|
|
compile-with "/usr/sbin/kbdcontrol -L ${ATKBD_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > atkbdmap.h" \
|
|
no-obj no-implicit-rule before-depend \
|
|
clean "atkbdmap.h"
|
|
#
|
|
ukbdmap.h optional ukbd_dflt_keymap \
|
|
compile-with "/usr/sbin/kbdcontrol -L ${UKBD_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h" \
|
|
no-obj no-implicit-rule before-depend \
|
|
clean "ukbdmap.h"
|
|
#
|
|
msysosak.o optional fla \
|
|
dependency "$S/contrib/dev/fla/i386/msysosak.o.uu" \
|
|
compile-with "uudecode < $S/contrib/dev/fla/i386/msysosak.o.uu" \
|
|
no-implicit-rule
|
|
#
|
|
trlld.o optional oltr \
|
|
dependency "$S/contrib/dev/oltr/i386${FMT}.trlld.o.uu" \
|
|
compile-with "uudecode < $S/contrib/dev/oltr/i386${FMT}.trlld.o.uu" \
|
|
no-implicit-rule
|
|
#
|
|
compat/linux/linux_file.c optional compat_linux
|
|
compat/linux/linux_ioctl.c optional compat_linux
|
|
compat/linux/linux_ipc.c optional compat_linux
|
|
compat/linux/linux_mib.c optional compat_linux
|
|
compat/linux/linux_misc.c optional compat_linux
|
|
compat/linux/linux_signal.c optional compat_linux
|
|
compat/linux/linux_socket.c optional compat_linux
|
|
compat/linux/linux_stats.c optional compat_linux
|
|
compat/linux/linux_util.c optional compat_linux
|
|
compat/svr4/imgact_svr4.c optional compat_svr4
|
|
compat/svr4/svr4_fcntl.c optional compat_svr4
|
|
compat/svr4/svr4_filio.c optional compat_svr4
|
|
compat/svr4/svr4_ioctl.c optional compat_svr4
|
|
compat/svr4/svr4_ipc.c optional compat_svr4
|
|
compat/svr4/svr4_misc.c optional compat_svr4
|
|
compat/svr4/svr4_resource.c optional compat_svr4
|
|
compat/svr4/svr4_signal.c optional compat_svr4
|
|
compat/svr4/svr4_socket.c optional compat_svr4
|
|
compat/svr4/svr4_sockio.c optional compat_svr4
|
|
compat/svr4/svr4_stat.c optional compat_svr4
|
|
compat/svr4/svr4_stream.c optional compat_svr4
|
|
compat/svr4/svr4_syscallnames.c optional compat_svr4
|
|
compat/svr4/svr4_sysent.c optional compat_svr4
|
|
compat/svr4/svr4_sysvec.c optional compat_svr4
|
|
compat/svr4/svr4_termios.c optional compat_svr4
|
|
compat/svr4/svr4_ttold.c optional compat_svr4
|
|
contrib/dev/fla/fla.c optional fla
|
|
contrib/dev/oltr/if_oltr.c optional oltr
|
|
contrib/dev/oltr/trlldbm.c optional oltr
|
|
contrib/dev/oltr/trlldhm.c optional oltr
|
|
contrib/dev/oltr/trlldmac.c optional oltr
|
|
dev/advansys/adv_isa.c optional adv isa
|
|
dev/aic/aic_isa.c optional aic isa
|
|
dev/ed/if_ed_isa.c optional ed isa
|
|
dev/eisa/eisaconf.c count eisa
|
|
dev/fb/fb.c optional fb
|
|
dev/fb/fb.c optional vga
|
|
dev/fb/splash.c count splash
|
|
dev/fb/vga.c optional vga
|
|
dev/fe/if_fe_isa.c optional fe isa
|
|
dev/kbd/atkbd.c optional atkbd
|
|
dev/kbd/atkbdc.c count atkbdc
|
|
dev/kbd/kbd.c optional atkbd
|
|
dev/kbd/kbd.c optional kbd
|
|
dev/kbd/kbd.c optional sc
|
|
dev/kbd/kbd.c optional ukbd
|
|
dev/kbd/kbd.c optional vt
|
|
dev/syscons/schistory.c count sc
|
|
dev/syscons/scmouse.c optional sc
|
|
dev/syscons/scterm.c optional sc
|
|
dev/syscons/scterm-dumb.c optional sc
|
|
dev/syscons/scterm-sc.c optional sc
|
|
dev/syscons/scvesactl.c optional sc vga vesa
|
|
dev/syscons/scvgarndr.c optional sc vga
|
|
dev/syscons/scvidctl.c optional sc
|
|
dev/syscons/scvtb.c optional sc
|
|
dev/syscons/syscons.c optional sc
|
|
dev/syscons/sysmouse.c optional sc
|
|
gnu/i386/fpemul/div_small.s optional gpl_math_emulate
|
|
gnu/i386/fpemul/errors.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/fpu_arith.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/fpu_aux.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/fpu_entry.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/fpu_etc.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/fpu_trig.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/get_address.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/load_store.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/poly_2xm1.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/poly_atan.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/poly_div.s optional gpl_math_emulate
|
|
gnu/i386/fpemul/poly_l2.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/poly_mul64.s optional gpl_math_emulate
|
|
gnu/i386/fpemul/poly_sin.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/poly_tan.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/polynomial.s optional gpl_math_emulate
|
|
gnu/i386/fpemul/reg_add_sub.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/reg_compare.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/reg_constant.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/reg_div.s optional gpl_math_emulate
|
|
gnu/i386/fpemul/reg_ld_str.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/reg_mul.c optional gpl_math_emulate
|
|
gnu/i386/fpemul/reg_norm.s optional gpl_math_emulate
|
|
gnu/i386/fpemul/reg_round.s optional gpl_math_emulate
|
|
gnu/i386/fpemul/reg_u_add.s optional gpl_math_emulate
|
|
gnu/i386/fpemul/reg_u_div.s optional gpl_math_emulate
|
|
gnu/i386/fpemul/reg_u_mul.s optional gpl_math_emulate
|
|
gnu/i386/fpemul/reg_u_sub.s optional gpl_math_emulate
|
|
gnu/i386/fpemul/wm_shrx.s optional gpl_math_emulate
|
|
gnu/i386/fpemul/wm_sqrt.s optional gpl_math_emulate
|
|
gnu/i386/isa/dgb.c count dgb
|
|
gnu/i386/isa/dgm.c count dgm
|
|
i386/apm/apm.c count apm
|
|
i386/i386/atomic.c standard \
|
|
compile-with "${CC} -c ${CFLAGS} ${DEFINED_PROF:S/^$/-fomit-frame-pointer/} ${.IMPSRC}"
|
|
i386/i386/acpi_machdep.c optional acpi
|
|
i386/i386/autoconf.c standard
|
|
i386/i386/bios.c standard
|
|
i386/i386/bioscall.s standard
|
|
i386/i386/busdma_machdep.c standard
|
|
i386/i386/db_disasm.c optional ddb
|
|
i386/i386/db_interface.c optional ddb
|
|
i386/i386/db_trace.c optional ddb
|
|
i386/i386/elf_machdep.c standard
|
|
i386/i386/exception.s standard
|
|
i386/i386/globals.s standard
|
|
i386/i386/i386-gdbstub.c optional ddb
|
|
i386/i386/i686_mem.c standard
|
|
i386/i386/identcpu.c standard
|
|
i386/i386/in_cksum.c optional inet
|
|
i386/i386/initcpu.c standard
|
|
i386/i386/k6_mem.c standard
|
|
# locore.s needs to be handled in Makefile to put it first. Otherwise it's
|
|
# now normal.
|
|
# i386/i386/locore.s standard
|
|
i386/i386/machdep.c standard
|
|
i386/i386/math_emulate.c optional math_emulate
|
|
i386/i386/mem.c standard
|
|
i386/i386/mp_clock.c optional smp
|
|
i386/i386/mp_machdep.c optional smp
|
|
i386/i386/mpapic.c optional smp
|
|
i386/i386/mpboot.s optional smp
|
|
i386/i386/nexus.c standard
|
|
i386/i386/perfmon.c optional perfmon
|
|
i386/i386/perfmon.c optional perfmon profiling-routine
|
|
i386/i386/pmap.c standard
|
|
i386/i386/procfs_machdep.c standard
|
|
i386/i386/simplelock.s optional smp
|
|
i386/i386/support.s standard
|
|
i386/i386/swtch.s standard
|
|
i386/i386/sys_machdep.c standard
|
|
i386/i386/trap.c standard
|
|
i386/i386/userconfig.c optional userconfig
|
|
i386/i386/vm86.c standard
|
|
i386/i386/vm_machdep.c standard
|
|
i386/ibcs2/ibcs2_errno.c optional ibcs2
|
|
i386/ibcs2/ibcs2_fcntl.c optional ibcs2
|
|
i386/ibcs2/ibcs2_ioctl.c optional ibcs2
|
|
i386/ibcs2/ibcs2_ipc.c optional ibcs2
|
|
i386/ibcs2/ibcs2_isc.c optional ibcs2
|
|
i386/ibcs2/ibcs2_isc_sysent.c optional ibcs2
|
|
i386/ibcs2/ibcs2_misc.c optional ibcs2
|
|
i386/ibcs2/ibcs2_msg.c optional ibcs2
|
|
i386/ibcs2/ibcs2_other.c optional ibcs2
|
|
i386/ibcs2/ibcs2_signal.c optional ibcs2
|
|
i386/ibcs2/ibcs2_socksys.c optional ibcs2
|
|
i386/ibcs2/ibcs2_stat.c optional ibcs2
|
|
i386/ibcs2/ibcs2_sysent.c optional ibcs2
|
|
i386/ibcs2/ibcs2_sysi86.c optional ibcs2
|
|
i386/ibcs2/ibcs2_sysvec.c optional ibcs2
|
|
i386/ibcs2/ibcs2_util.c optional ibcs2
|
|
i386/ibcs2/ibcs2_xenix.c optional ibcs2
|
|
i386/ibcs2/ibcs2_xenix_sysent.c optional ibcs2
|
|
i386/ibcs2/imgact_coff.c optional ibcs2
|
|
i386/isa/asc.c count asc
|
|
i386/isa/clock.c standard
|
|
i386/isa/cronyx.c optional cx
|
|
i386/isa/ctx.c count ctx
|
|
i386/isa/cx.c count cx
|
|
i386/isa/cy.c count cy
|
|
i386/isa/elink.c optional ep
|
|
i386/isa/elink.c optional ie
|
|
i386/isa/gpib.c optional gp
|
|
i386/isa/gsc.c count gsc
|
|
i386/isa/if_ar.c optional ar
|
|
i386/isa/if_cx.c optional cx
|
|
i386/isa/if_el.c count el
|
|
i386/isa/if_le.c count le
|
|
i386/isa/if_rdp.c count rdp
|
|
i386/isa/if_sr.c count sr
|
|
i386/isa/if_wi.c optional wi card
|
|
i386/isa/if_wl.c count wl
|
|
i386/isa/if_wlp.c optional wlp
|
|
i386/isa/intr_machdep.c standard
|
|
i386/isa/ithread.c standard
|
|
i386/isa/ipl_funcs.c standard \
|
|
compile-with "${CC} -c ${CFLAGS} ${DEFINED_PROF:S/^$/-fomit-frame-pointer/} ${.IMPSRC}"
|
|
i386/isa/isa.c optional isa
|
|
i386/isa/isa_compat.c optional isa compat_oldisa \
|
|
warning "Old ISA driver compatability shims present."
|
|
i386/isa/isa_dma.c optional isa
|
|
i386/isa/istallion.c optional stli
|
|
i386/isa/labpc.c count labpc
|
|
i386/isa/loran.c optional loran
|
|
i386/isa/matcd/matcd.c count matcd
|
|
i386/isa/mca_machdep.c count mca
|
|
i386/isa/mcd.c count mcd
|
|
i386/isa/mse.c optional mse
|
|
i386/isa/npx.c mandatory npx
|
|
i386/isa/pcaudio.c optional pca
|
|
i386/isa/pcf.c optional pcf
|
|
i386/isa/pcvt/pcvt_drv.c optional vt
|
|
i386/isa/pcvt/pcvt_ext.c optional vt
|
|
i386/isa/pcvt/pcvt_kbd.c optional vt
|
|
i386/isa/pcvt/pcvt_out.c optional vt
|
|
i386/isa/pcvt/pcvt_sup.c optional vt
|
|
i386/isa/pcvt/pcvt_vtf.c optional vt
|
|
i386/isa/pmtimer.c optional pmtimer
|
|
i386/isa/prof_machdep.c optional profiling-routine
|
|
i386/isa/rc.c count rc
|
|
#i386/isa/rp.c optional rp
|
|
i386/isa/scd.c count scd
|
|
i386/isa/spigot.c count spigot
|
|
i386/isa/spkr.c optional speaker
|
|
i386/isa/stallion.c optional stl
|
|
i386/isa/tw.c count tw
|
|
i386/isa/vesa.c optional vga vesa
|
|
i386/isa/wt.c count wt
|
|
i386/linux/imgact_linux.c optional compat_linux
|
|
i386/linux/linux_dummy.c optional compat_linux
|
|
i386/linux/linux_locore.s optional compat_linux \
|
|
dependency "linux_assym.h"
|
|
i386/linux/linux_machdep.c optional compat_linux
|
|
i386/linux/linux_sysent.c optional compat_linux
|
|
i386/linux/linux_sysvec.c optional compat_linux
|
|
i386/pci/pci_cfgreg.c optional pci
|
|
i386/pci/pci_bus.c optional pci
|
|
i386/svr4/svr4_locore.s optional compat_svr4 \
|
|
dependency "svr4_assym.h"
|
|
i386/svr4/svr4_machdep.c optional compat_svr4
|
|
#
|
|
# isdn4bsd, needed for isic | iwic | ifpi | ihfc | ifpnp
|
|
#
|
|
i4b/layer1/i4b_l1dmux.c optional isic
|
|
i4b/layer1/i4b_l1lib.c optional isic
|
|
i4b/layer1/i4b_l1dmux.c optional iwic
|
|
i4b/layer1/i4b_l1lib.c optional iwic
|
|
i4b/layer1/i4b_l1dmux.c optional ifpi
|
|
i4b/layer1/i4b_l1lib.c optional ifpi
|
|
i4b/layer1/i4b_l1dmux.c optional ihfc
|
|
i4b/layer1/i4b_l1lib.c optional ihfc
|
|
i4b/layer1/i4b_l1dmux.c optional ifpnp
|
|
i4b/layer1/i4b_l1lib.c optional ifpnp
|
|
#
|
|
# isdn4bsd, isic
|
|
#
|
|
i4b/layer1/isic/i4b_asuscom_ipac.c optional isic
|
|
i4b/layer1/isic/i4b_avm_a1.c optional isic
|
|
i4b/layer1/isic/i4b_bchan.c optional isic
|
|
i4b/layer1/isic/i4b_ctx_s0P.c optional isic
|
|
i4b/layer1/isic/i4b_drn_ngo.c optional isic
|
|
i4b/layer1/isic/i4b_dynalink.c optional isic
|
|
i4b/layer1/isic/i4b_elsa_qs1i.c optional isic
|
|
i4b/layer1/isic/i4b_elsa_qs1p.c optional isic
|
|
i4b/layer1/isic/i4b_elsa_pcc16.c optional isic
|
|
i4b/layer1/isic/i4b_hscx.c optional isic
|
|
i4b/layer1/isic/i4b_isac.c optional isic
|
|
i4b/layer1/isic/i4b_isic.c count isic
|
|
i4b/layer1/isic/i4b_isic_isa.c optional isic
|
|
i4b/layer1/isic/i4b_isic_pnp.c optional isic
|
|
i4b/layer1/isic/i4b_itk_ix1.c optional isic
|
|
i4b/layer1/isic/i4b_l1.c optional isic
|
|
i4b/layer1/isic/i4b_l1fsm.c optional isic
|
|
i4b/layer1/isic/i4b_siemens_isurf.c optional isic
|
|
i4b/layer1/isic/i4b_sws.c optional isic
|
|
i4b/layer1/isic/i4b_tel_s016.c optional isic
|
|
i4b/layer1/isic/i4b_tel_s0163.c optional isic
|
|
i4b/layer1/isic/i4b_tel_s08.c optional isic
|
|
i4b/layer1/isic/i4b_usr_sti.c optional isic
|
|
#
|
|
# isdn4bsd, iwic
|
|
#
|
|
i4b/layer1/iwic/i4b_iwic_pci.c count iwic
|
|
i4b/layer1/iwic/i4b_iwic_dchan.c optional iwic
|
|
i4b/layer1/iwic/i4b_iwic_bchan.c optional iwic
|
|
i4b/layer1/iwic/i4b_iwic_fsm.c optional iwic
|
|
i4b/layer1/iwic/i4b_iwic_l1if.c optional iwic
|
|
#
|
|
# isdn4bsd, ifpi
|
|
#
|
|
i4b/layer1/ifpi/i4b_ifpi_pci.c count ifpi
|
|
i4b/layer1/ifpi/i4b_ifpi_isac.c optional ifpi
|
|
i4b/layer1/ifpi/i4b_ifpi_l1.c optional ifpi
|
|
i4b/layer1/ifpi/i4b_ifpi_l1fsm.c optional ifpi
|
|
#
|
|
# isdn4bsd, ifpnp
|
|
#
|
|
i4b/layer1/ifpnp/i4b_ifpnp_avm.c count ifpnp
|
|
i4b/layer1/ifpnp/i4b_ifpnp_isac.c optional ifpnp
|
|
i4b/layer1/ifpnp/i4b_ifpnp_l1.c optional ifpnp
|
|
i4b/layer1/ifpnp/i4b_ifpnp_l1fsm.c optional ifpnp
|
|
#
|
|
# isdn4bsd, ihfc
|
|
#
|
|
i4b/layer1/ihfc/i4b_ihfc_l1if.c count ihfc
|
|
i4b/layer1/ihfc/i4b_ihfc_pnp.c optional ihfc
|
|
i4b/layer1/ihfc/i4b_ihfc_drv.c optional ihfc
|
|
#
|
|
isa/atkbd_isa.c optional atkbd
|
|
isa/atkbdc_isa.c optional atkbdc
|
|
isa/fd.c optional fdc
|
|
isa/ppc.c optional ppc
|
|
isa/psm.c optional psm
|
|
isa/sio.c count sio
|
|
isa/syscons_isa.c optional sc
|
|
isa/vga_isa.c optional vga
|
|
kern/subr_diskmbr.c standard
|
|
libkern/divdi3.c standard
|
|
libkern/moddi3.c standard
|
|
libkern/qdivrem.c standard
|
|
libkern/udivdi3.c standard
|
|
libkern/umoddi3.c standard
|