Date: Mon, 12 Mar 2007 16:04:26 GMT From: Roman Divacky <rdivacky@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 115765 for review Message-ID: <200703121604.l2CG4QHp029864@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=115765 Change 115765 by rdivacky@rdivacky_witten on 2007/03/12 16:03:31 IFC Affected files ... .. //depot/projects/linuxolator/src/sys/amd64/acpica/madt.c#2 integrate .. //depot/projects/linuxolator/src/sys/amd64/amd64/busdma_machdep.c#3 integrate .. //depot/projects/linuxolator/src/sys/amd64/amd64/intr_machdep.c#8 integrate .. //depot/projects/linuxolator/src/sys/amd64/amd64/io_apic.c#4 integrate .. //depot/projects/linuxolator/src/sys/amd64/amd64/local_apic.c#7 integrate .. //depot/projects/linuxolator/src/sys/amd64/amd64/mp_machdep.c#7 integrate .. //depot/projects/linuxolator/src/sys/amd64/amd64/mptable.c#2 integrate .. //depot/projects/linuxolator/src/sys/amd64/amd64/pmap.c#7 integrate .. //depot/projects/linuxolator/src/sys/amd64/amd64/trap.c#5 integrate .. //depot/projects/linuxolator/src/sys/amd64/include/apicvar.h#5 integrate .. //depot/projects/linuxolator/src/sys/amd64/include/intr_machdep.h#7 integrate .. //depot/projects/linuxolator/src/sys/amd64/include/pcpu.h#3 integrate .. //depot/projects/linuxolator/src/sys/amd64/include/smp.h#2 integrate .. //depot/projects/linuxolator/src/sys/arm/at91/at91.c#5 integrate .. //depot/projects/linuxolator/src/sys/arm/include/pcpu.h#2 integrate .. //depot/projects/linuxolator/src/sys/arm/sa11x0/sa11x0.c#4 integrate .. //depot/projects/linuxolator/src/sys/arm/xscale/ixp425/ixp425_npe.c#4 integrate .. //depot/projects/linuxolator/src/sys/arm/xscale/ixp425/ixp425_pci.c#4 integrate .. //depot/projects/linuxolator/src/sys/boot/pc98/cdboot/cdboot.s#2 integrate .. //depot/projects/linuxolator/src/sys/compat/linprocfs/linprocfs.c#13 integrate .. //depot/projects/linuxolator/src/sys/compat/linsysfs/linsysfs.c#4 integrate .. //depot/projects/linuxolator/src/sys/compat/linux/linux_stats.c#7 integrate .. //depot/projects/linuxolator/src/sys/conf/files#22 integrate .. //depot/projects/linuxolator/src/sys/conf/files.sparc64#7 integrate .. //depot/projects/linuxolator/src/sys/conf/kmod.mk#5 integrate .. //depot/projects/linuxolator/src/sys/contrib/dev/ipw/LICENSE#1 branch .. //depot/projects/linuxolator/src/sys/contrib/dev/ipw/ipw2100-1.3-i.fw.uu#1 branch .. //depot/projects/linuxolator/src/sys/contrib/dev/ipw/ipw2100-1.3-p.fw.uu#1 branch .. //depot/projects/linuxolator/src/sys/contrib/dev/ipw/ipw2100-1.3.fw.uu#1 branch .. //depot/projects/linuxolator/src/sys/contrib/dev/iwi/LICENSE#1 branch .. //depot/projects/linuxolator/src/sys/contrib/dev/iwi/ipw2200-bss.fw.uu#1 branch .. //depot/projects/linuxolator/src/sys/contrib/dev/iwi/ipw2200-ibss.fw.uu#1 branch .. //depot/projects/linuxolator/src/sys/contrib/dev/iwi/ipw2200-sniffer.fw.uu#1 branch .. //depot/projects/linuxolator/src/sys/dev/acpica/acpi_thermal.c#2 integrate .. //depot/projects/linuxolator/src/sys/dev/arcmsr/arcmsr.c#6 integrate .. //depot/projects/linuxolator/src/sys/dev/arcmsr/arcmsr.h#4 integrate .. //depot/projects/linuxolator/src/sys/dev/ata/ata-all.h#4 integrate .. //depot/projects/linuxolator/src/sys/dev/ata/ata-chipset.c#11 integrate .. //depot/projects/linuxolator/src/sys/dev/ata/ata-pci.h#6 integrate .. //depot/projects/linuxolator/src/sys/dev/ath/if_ath.c#9 integrate .. //depot/projects/linuxolator/src/sys/dev/ath/if_athvar.h#8 integrate .. //depot/projects/linuxolator/src/sys/dev/bce/if_bce.c#12 integrate .. //depot/projects/linuxolator/src/sys/dev/bge/if_bge.c#15 integrate .. //depot/projects/linuxolator/src/sys/dev/bge/if_bgereg.h#11 integrate .. //depot/projects/linuxolator/src/sys/dev/fb/creator.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/if_ndis/if_ndis.c#4 integrate .. //depot/projects/linuxolator/src/sys/dev/ipw/if_ipw.c#4 integrate .. //depot/projects/linuxolator/src/sys/dev/isp/isp.c#11 integrate .. //depot/projects/linuxolator/src/sys/dev/isp/isp_freebsd.c#10 integrate .. //depot/projects/linuxolator/src/sys/dev/isp/isp_freebsd.h#9 integrate .. //depot/projects/linuxolator/src/sys/dev/isp/isp_ioctl.h#2 integrate .. //depot/projects/linuxolator/src/sys/dev/isp/isp_library.c#6 integrate .. //depot/projects/linuxolator/src/sys/dev/isp/isp_library.h#5 integrate .. //depot/projects/linuxolator/src/sys/dev/isp/isp_pci.c#13 integrate .. //depot/projects/linuxolator/src/sys/dev/isp/isp_stds.h#4 integrate .. //depot/projects/linuxolator/src/sys/dev/isp/isp_target.c#5 integrate .. //depot/projects/linuxolator/src/sys/dev/isp/isp_target.h#4 integrate .. //depot/projects/linuxolator/src/sys/dev/isp/isp_tpublic.h#4 integrate .. //depot/projects/linuxolator/src/sys/dev/isp/ispmbox.h#8 integrate .. //depot/projects/linuxolator/src/sys/dev/isp/ispreg.h#4 integrate .. //depot/projects/linuxolator/src/sys/dev/isp/ispvar.h#7 integrate .. //depot/projects/linuxolator/src/sys/dev/iwi/if_iwi.c#10 integrate .. //depot/projects/linuxolator/src/sys/dev/ixgb/if_ixgb.c#4 integrate .. //depot/projects/linuxolator/src/sys/dev/mpt/mpt.h#7 integrate .. //depot/projects/linuxolator/src/sys/dev/mpt/mpt_cam.c#13 integrate .. //depot/projects/linuxolator/src/sys/dev/msk/if_msk.c#6 integrate .. //depot/projects/linuxolator/src/sys/dev/mxge/eth_z8e.dat.gz.uu#3 integrate .. //depot/projects/linuxolator/src/sys/dev/mxge/ethp_z8e.dat.gz.uu#3 integrate .. //depot/projects/linuxolator/src/sys/dev/my/if_my.c#5 integrate .. //depot/projects/linuxolator/src/sys/dev/nfe/if_nfe.c#7 integrate .. //depot/projects/linuxolator/src/sys/dev/nge/if_nge.c#4 integrate .. //depot/projects/linuxolator/src/sys/dev/pccbb/pccbb.c#5 integrate .. //depot/projects/linuxolator/src/sys/dev/pci/pci.c#19 integrate .. //depot/projects/linuxolator/src/sys/dev/pci/pcireg.h#7 integrate .. //depot/projects/linuxolator/src/sys/dev/ppbus/ppbconf.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/ppc/ppc.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/ral/rt2560.c#4 integrate .. //depot/projects/linuxolator/src/sys/dev/ral/rt2661.c#4 integrate .. //depot/projects/linuxolator/src/sys/dev/re/if_re.c#10 integrate .. //depot/projects/linuxolator/src/sys/dev/sound/pci/ds1.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/sound/pci/emu10k1.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/sound/pci/emu10kx-pcm.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/sound/pci/envy24.c#6 integrate .. //depot/projects/linuxolator/src/sys/dev/sound/pci/hda/hdac.c#15 integrate .. //depot/projects/linuxolator/src/sys/dev/sound/pci/maestro3.c#3 integrate .. //depot/projects/linuxolator/src/sys/dev/sound/pcm/ac97.c#5 integrate .. //depot/projects/linuxolator/src/sys/dev/stge/if_stge.c#5 integrate .. //depot/projects/linuxolator/src/sys/dev/sym/sym_hipd.c#5 integrate .. //depot/projects/linuxolator/src/sys/dev/ti/if_ti.c#5 integrate .. //depot/projects/linuxolator/src/sys/dev/txp/if_txp.c#4 integrate .. //depot/projects/linuxolator/src/sys/dev/usb/if_ural.c#5 integrate .. //depot/projects/linuxolator/src/sys/dev/vge/if_vge.c#5 integrate .. //depot/projects/linuxolator/src/sys/dev/zs/z8530reg.h#2 delete .. //depot/projects/linuxolator/src/sys/dev/zs/z8530var.h#3 delete .. //depot/projects/linuxolator/src/sys/dev/zs/zs.c#4 delete .. //depot/projects/linuxolator/src/sys/dev/zs/zs_macio.c#3 delete .. //depot/projects/linuxolator/src/sys/fs/procfs/procfs.c#3 integrate .. //depot/projects/linuxolator/src/sys/fs/pseudofs/pseudofs.c#2 integrate .. //depot/projects/linuxolator/src/sys/fs/pseudofs/pseudofs.h#2 integrate .. //depot/projects/linuxolator/src/sys/geom/eli/g_eli.c#6 integrate .. //depot/projects/linuxolator/src/sys/geom/eli/g_eli_ctl.c#4 integrate .. //depot/projects/linuxolator/src/sys/i386/acpica/madt.c#2 integrate .. //depot/projects/linuxolator/src/sys/i386/i386/busdma_machdep.c#4 integrate .. //depot/projects/linuxolator/src/sys/i386/i386/intr_machdep.c#6 integrate .. //depot/projects/linuxolator/src/sys/i386/i386/io_apic.c#4 integrate .. //depot/projects/linuxolator/src/sys/i386/i386/local_apic.c#7 integrate .. //depot/projects/linuxolator/src/sys/i386/i386/machdep.c#12 integrate .. //depot/projects/linuxolator/src/sys/i386/i386/mp_machdep.c#7 integrate .. //depot/projects/linuxolator/src/sys/i386/i386/mptable.c#2 integrate .. //depot/projects/linuxolator/src/sys/i386/i386/nexus.c#7 integrate .. //depot/projects/linuxolator/src/sys/i386/i386/pmap.c#8 integrate .. //depot/projects/linuxolator/src/sys/i386/i386/trap.c#4 integrate .. //depot/projects/linuxolator/src/sys/i386/i386/vm_machdep.c#3 integrate .. //depot/projects/linuxolator/src/sys/i386/include/apicvar.h#5 integrate .. //depot/projects/linuxolator/src/sys/i386/include/intr_machdep.h#7 integrate .. //depot/projects/linuxolator/src/sys/i386/include/pcpu.h#3 integrate .. //depot/projects/linuxolator/src/sys/i386/include/smp.h#2 integrate .. //depot/projects/linuxolator/src/sys/i386/isa/clock.c#6 integrate .. //depot/projects/linuxolator/src/sys/ia64/ia64/busdma_machdep.c#3 integrate .. //depot/projects/linuxolator/src/sys/ia64/ia64/trap.c#4 integrate .. //depot/projects/linuxolator/src/sys/ia64/include/pcpu.h#3 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_acct.c#6 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_acl.c#4 delete .. //depot/projects/linuxolator/src/sys/kern/kern_alq.c#3 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_clock.c#5 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_context.c#2 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_descrip.c#7 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_environment.c#4 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_event.c#4 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_exec.c#5 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_exit.c#8 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_fork.c#13 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_intr.c#8 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_jail.c#8 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_kse.c#5 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_ktrace.c#7 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_linker.c#6 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_lock.c#6 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_module.c#2 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_mutex.c#6 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_ntptime.c#4 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_prot.c#6 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_resource.c#10 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_rwlock.c#5 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_shutdown.c#4 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_sig.c#9 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_sx.c#5 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_synch.c#9 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_sysctl.c#4 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_thread.c#6 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_time.c#7 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_umtx.c#11 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_uuid.c#2 integrate .. //depot/projects/linuxolator/src/sys/kern/kern_xxx.c#3 integrate .. //depot/projects/linuxolator/src/sys/kern/p1003_1b.c#2 integrate .. //depot/projects/linuxolator/src/sys/kern/sched_core.c#4 integrate .. //depot/projects/linuxolator/src/sys/kern/sched_ule.c#10 integrate .. //depot/projects/linuxolator/src/sys/kern/subr_prf.c#6 integrate .. //depot/projects/linuxolator/src/sys/kern/subr_prof.c#2 integrate .. //depot/projects/linuxolator/src/sys/kern/subr_smp.c#2 integrate .. //depot/projects/linuxolator/src/sys/kern/subr_trap.c#5 integrate .. //depot/projects/linuxolator/src/sys/kern/sys_generic.c#5 integrate .. //depot/projects/linuxolator/src/sys/kern/sys_pipe.c#4 integrate .. //depot/projects/linuxolator/src/sys/kern/sys_process.c#4 integrate .. //depot/projects/linuxolator/src/sys/kern/sys_socket.c#3 integrate .. //depot/projects/linuxolator/src/sys/kern/sysv_msg.c#10 integrate .. //depot/projects/linuxolator/src/sys/kern/sysv_sem.c#8 integrate .. //depot/projects/linuxolator/src/sys/kern/sysv_shm.c#5 integrate .. //depot/projects/linuxolator/src/sys/kern/uipc_mqueue.c#5 integrate .. //depot/projects/linuxolator/src/sys/kern/uipc_sem.c#5 integrate .. //depot/projects/linuxolator/src/sys/kern/uipc_syscalls.c#7 integrate .. //depot/projects/linuxolator/src/sys/kern/uipc_usrreq.c#11 integrate .. //depot/projects/linuxolator/src/sys/kern/vfs_acl.c#1 branch .. //depot/projects/linuxolator/src/sys/kern/vfs_aio.c#8 integrate .. //depot/projects/linuxolator/src/sys/kern/vfs_bio.c#9 integrate .. //depot/projects/linuxolator/src/sys/kern/vfs_cache.c#2 integrate .. //depot/projects/linuxolator/src/sys/kern/vfs_cluster.c#4 integrate .. //depot/projects/linuxolator/src/sys/kern/vfs_mount.c#9 integrate .. //depot/projects/linuxolator/src/sys/kern/vfs_syscalls.c#9 integrate .. //depot/projects/linuxolator/src/sys/modules/Makefile#9 integrate .. //depot/projects/linuxolator/src/sys/modules/ipwfw/Makefile#1 branch .. //depot/projects/linuxolator/src/sys/modules/ipwfw/ipw_bss/Makefile#1 branch .. //depot/projects/linuxolator/src/sys/modules/ipwfw/ipw_ibss/Makefile#1 branch .. //depot/projects/linuxolator/src/sys/modules/ipwfw/ipw_monitor/Makefile#1 branch .. //depot/projects/linuxolator/src/sys/modules/iwifw/Makefile#1 branch .. //depot/projects/linuxolator/src/sys/modules/iwifw/iwi_bss/Makefile#1 branch .. //depot/projects/linuxolator/src/sys/modules/iwifw/iwi_ibss/Makefile#1 branch .. //depot/projects/linuxolator/src/sys/modules/iwifw/iwi_monitor/Makefile#1 branch .. //depot/projects/linuxolator/src/sys/modules/my/Makefile#2 integrate .. //depot/projects/linuxolator/src/sys/net/bridgestp.c#10 integrate .. //depot/projects/linuxolator/src/sys/net/bridgestp.h#7 integrate .. //depot/projects/linuxolator/src/sys/net/ethernet.h#5 integrate .. //depot/projects/linuxolator/src/sys/net/if_bridge.c#12 integrate .. //depot/projects/linuxolator/src/sys/net/if_vlan.c#5 integrate .. //depot/projects/linuxolator/src/sys/net80211/_ieee80211.h#5 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211.c#6 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_crypto.c#2 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_crypto.h#2 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_freebsd.h#3 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_input.c#6 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_ioctl.c#4 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_node.c#5 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_node.h#2 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_output.c#5 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_proto.c#4 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_proto.h#3 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_radiotap.h#2 integrate .. //depot/projects/linuxolator/src/sys/net80211/ieee80211_var.h#5 integrate .. //depot/projects/linuxolator/src/sys/netgraph/ng_base.c#3 integrate .. //depot/projects/linuxolator/src/sys/netgraph/ng_eiface.c#3 integrate .. //depot/projects/linuxolator/src/sys/netgraph/ng_source.c#3 integrate .. //depot/projects/linuxolator/src/sys/netgraph/ng_source.h#3 integrate .. //depot/projects/linuxolator/src/sys/netinet/ip_mroute.c#10 integrate .. //depot/projects/linuxolator/src/sys/netinet/tcp_input.c#10 integrate .. //depot/projects/linuxolator/src/sys/netinet/udp_usrreq.c#7 integrate .. //depot/projects/linuxolator/src/sys/nfsclient/nfs_socket.c#7 integrate .. //depot/projects/linuxolator/src/sys/nfsclient/nfs_subs.c#3 integrate .. //depot/projects/linuxolator/src/sys/nfsclient/nfs_vnops.c#8 integrate .. //depot/projects/linuxolator/src/sys/nfsclient/nfsnode.h#3 integrate .. //depot/projects/linuxolator/src/sys/nfsserver/nfs_syscalls.c#5 integrate .. //depot/projects/linuxolator/src/sys/pc98/cbus/clock.c#6 integrate .. //depot/projects/linuxolator/src/sys/pci/if_ste.c#4 integrate .. //depot/projects/linuxolator/src/sys/pci/if_stereg.h#2 integrate .. //depot/projects/linuxolator/src/sys/powerpc/include/pcpu.h#2 integrate .. //depot/projects/linuxolator/src/sys/powerpc/powermac/pswitch.c#3 integrate .. //depot/projects/linuxolator/src/sys/powerpc/powerpc/nexus.c#2 integrate .. //depot/projects/linuxolator/src/sys/powerpc/powerpc/pic_if.m#2 integrate .. //depot/projects/linuxolator/src/sys/powerpc/powerpc/trap.c#4 integrate .. //depot/projects/linuxolator/src/sys/security/audit/audit.c#6 integrate .. //depot/projects/linuxolator/src/sys/security/audit/audit_syscalls.c#7 integrate .. //depot/projects/linuxolator/src/sys/security/mac/mac_syscalls.c#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/central/central.c#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/fhc/fhc.c#3 integrate .. //depot/projects/linuxolator/src/sys/sparc64/fhc/fhc_central.c#2 delete .. //depot/projects/linuxolator/src/sys/sparc64/fhc/fhc_nexus.c#2 delete .. //depot/projects/linuxolator/src/sys/sparc64/fhc/fhcvar.h#2 delete .. //depot/projects/linuxolator/src/sys/sparc64/include/bus_private.h#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/include/iommureg.h#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/include/nexusvar.h#2 delete .. //depot/projects/linuxolator/src/sys/sparc64/include/ofw_nexus.h#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/include/ofw_upa.h#2 delete .. //depot/projects/linuxolator/src/sys/sparc64/include/pcpu.h#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/pci/psycho.c#5 integrate .. //depot/projects/linuxolator/src/sys/sparc64/pci/psychovar.h#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sbus/sbus.c#4 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/bus_machdep.c#3 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/iommu.c#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/nexus.c#3 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/sc_machdep.c#2 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/trap.c#3 integrate .. //depot/projects/linuxolator/src/sys/sparc64/sparc64/upa.c#4 integrate .. //depot/projects/linuxolator/src/sys/sun4v/include/pcpu.h#7 integrate .. //depot/projects/linuxolator/src/sys/sys/buf.h#4 integrate .. //depot/projects/linuxolator/src/sys/sys/extattr.h#3 integrate .. //depot/projects/linuxolator/src/sys/sys/lock.h#6 integrate .. //depot/projects/linuxolator/src/sys/sys/mutex.h#6 integrate .. //depot/projects/linuxolator/src/sys/sys/param.h#12 integrate .. //depot/projects/linuxolator/src/sys/sys/pcpu.h#5 integrate .. //depot/projects/linuxolator/src/sys/sys/proc.h#13 integrate .. //depot/projects/linuxolator/src/sys/sys/rwlock.h#4 integrate .. //depot/projects/linuxolator/src/sys/sys/sleepqueue.h#5 integrate .. //depot/projects/linuxolator/src/sys/sys/sx.h#2 integrate .. //depot/projects/linuxolator/src/sys/sys/systm.h#10 integrate .. //depot/projects/linuxolator/src/sys/tools/fw_stub.awk#4 integrate .. //depot/projects/linuxolator/src/sys/ufs/ufs/extattr.h#2 integrate .. //depot/projects/linuxolator/src/sys/vm/vm_fault.c#5 integrate Differences ... ==== //depot/projects/linuxolator/src/sys/amd64/acpica/madt.c#2 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/acpica/madt.c,v 1.21 2006/08/11 19:22:55 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/acpica/madt.c,v 1.22 2007/03/05 20:35:16 jhb Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -336,7 +336,7 @@ { madt = pmap_mapbios(madt_physaddr, madt_length); - lapic_init((uintptr_t)madt->LocalApicAddress); + lapic_init(madt->LocalApicAddress); printf("ACPI APIC Table: <%.*s %.*s>\n", (int)sizeof(madt->OemId), madt->OemId, (int)sizeof(madt->OemTableId), madt->OemTableId); @@ -482,9 +482,8 @@ if (ioapics[apic->IoApicId].io_apic != NULL) panic("%s: Double APIC ID %d", __func__, apic->IoApicId); - ioapics[apic->IoApicId].io_apic = ioapic_create( - (uintptr_t)apic->Address, apic->IoApicId, - apic->Interrupt); + ioapics[apic->IoApicId].io_apic = ioapic_create(apic->Address, + apic->IoApicId, apic->Interrupt); ioapics[apic->IoApicId].io_vector = apic->Interrupt; break; default: ==== //depot/projects/linuxolator/src/sys/amd64/amd64/busdma_machdep.c#3 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.78 2006/10/15 16:52:59 hrs Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.79 2007/03/06 18:28:42 scottl Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -906,7 +906,6 @@ * want to add support for invalidating * the caches on broken hardware */ - dmat->bounce_zone->total_bounced++; CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x op 0x%x " "performing bounce", __func__, op, dmat, dmat->flags); @@ -917,6 +916,7 @@ bpage->datacount); bpage = STAILQ_NEXT(bpage, links); } + dmat->bounce_zone->total_bounced++; } if (op & BUS_DMASYNC_POSTREAD) { @@ -926,6 +926,7 @@ bpage->datacount); bpage = STAILQ_NEXT(bpage, links); } + dmat->bounce_zone->total_bounced++; } } } ==== //depot/projects/linuxolator/src/sys/amd64/amd64/intr_machdep.c#8 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/intr_machdep.c,v 1.29 2007/02/23 20:03:23 jhb Exp $ + * $FreeBSD: src/sys/amd64/amd64/intr_machdep.c,v 1.30 2007/03/06 17:16:46 jhb Exp $ */ /* @@ -52,6 +52,7 @@ #include <sys/systm.h> #include <machine/clock.h> #include <machine/intr_machdep.h> +#include <machine/smp.h> #ifdef DDB #include <ddb/ddb.h> #endif @@ -429,8 +430,9 @@ * allocate CPUs round-robin. */ -static u_int cpu_apic_ids[MAXCPU]; -static int current_cpu, num_cpus; +/* The BSP is always a valid target. */ +static cpumask_t intr_cpus = (1 << 0); +static int current_cpu, num_cpus = 1; static void intr_assign_next_cpu(struct intsrc *isrc) @@ -443,25 +445,29 @@ */ pic = isrc->is_pic; apic_id = cpu_apic_ids[current_cpu]; - current_cpu++; - if (current_cpu >= num_cpus) - current_cpu = 0; pic->pic_assign_cpu(isrc, apic_id); + do { + current_cpu++; + if (current_cpu >= num_cpus) + current_cpu = 0; + } while (!(intr_cpus & (1 << current_cpu))); } /* - * Add a local APIC ID to our list of valid local APIC IDs that can - * be destinations of interrupts. + * Add a CPU to our mask of valid CPUs that can be destinations of + * interrupts. */ void -intr_add_cpu(u_int apic_id) +intr_add_cpu(u_int cpu) { + if (cpu >= MAXCPU) + panic("%s: Invalid CPU ID", __func__); if (bootverbose) - printf("INTR: Adding local APIC %d as a target\n", apic_id); - if (num_cpus >= MAXCPU) - panic("WARNING: Local APIC IDs exhausted!"); - cpu_apic_ids[num_cpus] = apic_id; + printf("INTR: Adding local APIC %d as a target\n", + cpu_apic_ids[cpu]); + + intr_cpus |= (1 << cpu); num_cpus++; } ==== //depot/projects/linuxolator/src/sys/amd64/amd64/io_apic.c#4 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.26 2006/11/17 16:41:03 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/io_apic.c,v 1.28 2007/03/05 20:35:16 jhb Exp $"); #include "opt_isa.h" @@ -36,11 +36,15 @@ #include <sys/systm.h> #include <sys/bus.h> #include <sys/kernel.h> +#include <sys/lock.h> #include <sys/malloc.h> -#include <sys/lock.h> +#include <sys/module.h> #include <sys/mutex.h> #include <sys/sysctl.h> +#include <dev/pci/pcireg.h> +#include <dev/pci/pcivar.h> + #include <vm/vm.h> #include <vm/pmap.h> @@ -428,7 +432,7 @@ * Create a plain I/O APIC object. */ void * -ioapic_create(uintptr_t addr, int32_t apic_id, int intbase) +ioapic_create(vm_paddr_t addr, int32_t apic_id, int intbase) { struct ioapic *io; struct ioapic_intsrc *intpin; @@ -727,3 +731,46 @@ if (pin->io_irq < NUM_IO_INTS) intr_register_source(&pin->io_intsrc); } + +/* A simple new-bus driver to consume PCI I/O APIC devices. */ +static int +ioapic_pci_probe(device_t dev) +{ + + if (pci_get_class(dev) == PCIC_BASEPERIPH && + pci_get_subclass(dev) == PCIS_BASEPERIPH_PIC) { + switch (pci_get_progif(dev)) { + case PCIP_BASEPERIPH_PIC_IO_APIC: + device_set_desc(dev, "IO APIC"); + break; + case PCIP_BASEPERIPH_PIC_IOX_APIC: + device_set_desc(dev, "IO(x) APIC"); + break; + default: + return (ENXIO); + } + device_quiet(dev); + return (-10000); + } + return (ENXIO); +} + +static int +ioapic_pci_attach(device_t dev) +{ + + return (0); +} + +static device_method_t ioapic_pci_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, ioapic_pci_probe), + DEVMETHOD(device_attach, ioapic_pci_attach), + + { 0, 0 } +}; + +DEFINE_CLASS_0(ioapic, ioapic_pci_driver, ioapic_pci_methods, 0); + +static devclass_t ioapic_devclass; +DRIVER_MODULE(ioapic, pci, ioapic_pci_driver, ioapic_devclass, 0, 0); ==== //depot/projects/linuxolator/src/sys/amd64/amd64/local_apic.c#7 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.34 2006/12/17 06:48:39 kmacy Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/local_apic.c,v 1.36 2007/03/06 17:16:46 jhb Exp $"); #include "opt_hwpmc_hooks.h" @@ -205,7 +205,7 @@ * Map the local APIC and setup necessary interrupt vectors. */ void -lapic_init(uintptr_t addr) +lapic_init(vm_paddr_t addr) { /* Map the local APIC and setup the spurious interrupt handler. */ @@ -220,7 +220,6 @@ /* Set BSP's per-CPU local APIC ID. */ PCPU_SET(apic_id, lapic_id()); - intr_add_cpu(PCPU_GET(apic_id)); /* Local APIC timer interrupt. */ setidt(APIC_TIMER_INT, IDTVEC(timerint), SDT_SYSIGT, SEL_KPL, 0); ==== //depot/projects/linuxolator/src/sys/amd64/amd64/mp_machdep.c#7 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.281 2007/02/08 16:49:58 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.283 2007/03/06 17:16:46 jhb Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -152,7 +152,7 @@ int cpu_bsp:1; int cpu_disabled:1; } static cpu_info[MAXCPU]; -static int cpu_apic_ids[MAXCPU]; +int cpu_apic_ids[MAXCPU]; /* Holds pending bitmap based IPIs per CPU */ static volatile u_int cpu_ipi_pending[MAXCPU]; @@ -625,10 +625,11 @@ static void set_interrupt_apic_ids(void) { - u_int apic_id; + u_int i, apic_id; - for (apic_id = 0; apic_id < MAXCPU; apic_id++) { - if (!cpu_info[apic_id].cpu_present) + for (i = 0; i < MAXCPU; i++) { + apic_id = cpu_apic_ids[i]; + if (apic_id == -1) continue; if (cpu_info[apic_id].cpu_bsp) continue; @@ -640,7 +641,7 @@ apic_id % hyperthreading_cpus != 0) continue; - intr_add_cpu(apic_id); + intr_add_cpu(i); } } @@ -835,13 +836,16 @@ ncpu = mp_ncpus - 1; /* does not shootdown self */ if (ncpu < 1) return; /* no other cpus */ - mtx_assert(&smp_ipi_mtx, MA_OWNED); + if (!(read_rflags() & PSL_I)) + panic("%s: interrupts disabled", __func__); + mtx_lock_spin(&smp_ipi_mtx); smp_tlb_addr1 = addr1; smp_tlb_addr2 = addr2; atomic_store_rel_int(&smp_tlb_wait, 0); ipi_all_but_self(vector); while (smp_tlb_wait < ncpu) ia32_pause(); + mtx_unlock_spin(&smp_ipi_mtx); } static void @@ -869,7 +873,9 @@ if (ncpu < 1) return; } - mtx_assert(&smp_ipi_mtx, MA_OWNED); + if (!(read_rflags() & PSL_I)) + panic("%s: interrupts disabled", __func__); + mtx_lock_spin(&smp_ipi_mtx); smp_tlb_addr1 = addr1; smp_tlb_addr2 = addr2; atomic_store_rel_int(&smp_tlb_wait, 0); @@ -879,6 +885,7 @@ ipi_selected(mask, vector); while (smp_tlb_wait < ncpu) ia32_pause(); + mtx_unlock_spin(&smp_ipi_mtx); } void ==== //depot/projects/linuxolator/src/sys/amd64/amd64/mptable.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable.c,v 1.237 2005/10/31 15:41:17 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mptable.c,v 1.239 2007/03/09 15:49:57 jhb Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -316,18 +316,20 @@ static int mptable_setup_local(void) { + vm_paddr_t addr; /* Is this a pre-defined config? */ printf("MPTable: <"); if (mpfps->config_type != 0) { - lapic_init(DEFAULT_APIC_BASE); + addr = DEFAULT_APIC_BASE; printf("Default Configuration %d", mpfps->config_type); } else { - lapic_init((uintptr_t)mpct->apic_address); + addr = mpct->apic_address; printf("%.*s %.*s", (int)sizeof(mpct->oem_id), mpct->oem_id, (int)sizeof(mpct->product_id), mpct->product_id); } printf(">\n"); + lapic_init(addr); return (0); } @@ -514,8 +516,8 @@ if (ioapics[apic->apic_id] != NULL) panic("%s: Double APIC ID %d", __func__, apic->apic_id); - ioapics[apic->apic_id] = ioapic_create( - (uintptr_t)apic->apic_address, apic->apic_id, -1); + ioapics[apic->apic_id] = ioapic_create(apic->apic_address, + apic->apic_id, -1); break; default: break; ==== //depot/projects/linuxolator/src/sys/amd64/amd64/pmap.c#7 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.579 2007/02/19 10:55:16 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.581 2007/03/10 20:26:43 alc Exp $"); /* * Manages physical address maps. @@ -168,7 +168,6 @@ struct pmap kernel_pmap_store; -static vm_paddr_t avail_start; /* PA of first available physical page */ vm_offset_t virtual_avail; /* VA of first avail page (after kernel bss) */ vm_offset_t virtual_end; /* VA of last avail page (end of kernel AS) */ @@ -396,38 +395,38 @@ } static u_int64_t -allocpages(int n) +allocpages(vm_paddr_t *firstaddr, int n) { u_int64_t ret; - ret = avail_start; + ret = *firstaddr; bzero((void *)ret, n * PAGE_SIZE); - avail_start += n * PAGE_SIZE; + *firstaddr += n * PAGE_SIZE; return (ret); } static void -create_pagetables(void) +create_pagetables(vm_paddr_t *firstaddr) { int i; /* Allocate pages */ - KPTphys = allocpages(NKPT); - KPML4phys = allocpages(1); - KPDPphys = allocpages(NKPML4E); - KPDphys = allocpages(NKPDPE); + KPTphys = allocpages(firstaddr, NKPT); + KPML4phys = allocpages(firstaddr, 1); + KPDPphys = allocpages(firstaddr, NKPML4E); + KPDphys = allocpages(firstaddr, NKPDPE); ndmpdp = (ptoa(Maxmem) + NBPDP - 1) >> PDPSHIFT; if (ndmpdp < 4) /* Minimum 4GB of dirmap */ ndmpdp = 4; - DMPDPphys = allocpages(NDMPML4E); - DMPDphys = allocpages(ndmpdp); + DMPDPphys = allocpages(firstaddr, NDMPML4E); + DMPDphys = allocpages(firstaddr, ndmpdp); dmaplimit = (vm_paddr_t)ndmpdp << PDPSHIFT; /* Fill in the underlying page table pages */ /* Read-only from zero to physfree */ /* XXX not fully used, underneath 2M pages */ - for (i = 0; (i << PAGE_SHIFT) < avail_start; i++) { + for (i = 0; (i << PAGE_SHIFT) < *firstaddr; i++) { ((pt_entry_t *)KPTphys)[i] = i << PAGE_SHIFT; ((pt_entry_t *)KPTphys)[i] |= PG_RW | PG_V | PG_G; } @@ -440,7 +439,7 @@ /* Map from zero to end of allocations under 2M pages */ /* This replaces some of the KPTphys entries above */ - for (i = 0; (i << PDRSHIFT) < avail_start; i++) { + for (i = 0; (i << PDRSHIFT) < *firstaddr; i++) { ((pd_entry_t *)KPDphys)[i] = i << PDRSHIFT; ((pd_entry_t *)KPDphys)[i] |= PG_RW | PG_V | PG_PS | PG_G; } @@ -493,15 +492,12 @@ vm_offset_t va; pt_entry_t *pte, *unused; - avail_start = *firstaddr; - /* * Create an initial set of page tables to run the kernel in. */ - create_pagetables(); - *firstaddr = avail_start; + create_pagetables(firstaddr); - virtual_avail = (vm_offset_t) KERNBASE + avail_start; + virtual_avail = (vm_offset_t) KERNBASE + *firstaddr; virtual_avail = pmap_kmem_choose(virtual_avail); virtual_end = VM_MAX_KERNEL_ADDRESS; @@ -752,18 +748,7 @@ u_int cpumask; u_int other_cpus; - if (smp_started) { - if (!(read_rflags() & PSL_I)) - panic("%s: interrupts disabled", __func__); - mtx_lock_spin(&smp_ipi_mtx); - } else - critical_enter(); - /* - * We need to disable interrupt preemption but MUST NOT have - * interrupts disabled here. - * XXX we may need to hold schedlock to get a coherent pm_active - * XXX critical sections disable interrupts again - */ + sched_pin(); if (pmap == kernel_pmap || pmap->pm_active == all_cpus) { invlpg(va); smp_invlpg(va); @@ -775,10 +760,7 @@ if (pmap->pm_active & other_cpus) smp_masked_invlpg(pmap->pm_active & other_cpus, va); } - if (smp_started) - mtx_unlock_spin(&smp_ipi_mtx); - else - critical_exit(); + sched_unpin(); } void @@ -788,18 +770,7 @@ u_int other_cpus; vm_offset_t addr; - if (smp_started) { - if (!(read_rflags() & PSL_I)) - panic("%s: interrupts disabled", __func__); - mtx_lock_spin(&smp_ipi_mtx); - } else - critical_enter(); - /* - * We need to disable interrupt preemption but MUST NOT have - * interrupts disabled here. - * XXX we may need to hold schedlock to get a coherent pm_active - * XXX critical sections disable interrupts again - */ + sched_pin(); if (pmap == kernel_pmap || pmap->pm_active == all_cpus) { for (addr = sva; addr < eva; addr += PAGE_SIZE) invlpg(addr); @@ -814,10 +785,7 @@ smp_masked_invlpg_range(pmap->pm_active & other_cpus, sva, eva); } - if (smp_started) - mtx_unlock_spin(&smp_ipi_mtx); - else - critical_exit(); + sched_unpin(); } void @@ -826,18 +794,7 @@ u_int cpumask; u_int other_cpus; - if (smp_started) { - if (!(read_rflags() & PSL_I)) - panic("%s: interrupts disabled", __func__); - mtx_lock_spin(&smp_ipi_mtx); - } else - critical_enter(); - /* - * We need to disable interrupt preemption but MUST NOT have - * interrupts disabled here. - * XXX we may need to hold schedlock to get a coherent pm_active - * XXX critical sections disable interrupts again - */ + sched_pin(); if (pmap == kernel_pmap || pmap->pm_active == all_cpus) { invltlb(); smp_invltlb(); @@ -849,34 +806,17 @@ if (pmap->pm_active & other_cpus) smp_masked_invltlb(pmap->pm_active & other_cpus); } - if (smp_started) - mtx_unlock_spin(&smp_ipi_mtx); - else - critical_exit(); + sched_unpin(); } void pmap_invalidate_cache(void) { - if (smp_started) { - if (!(read_rflags() & PSL_I)) - panic("%s: interrupts disabled", __func__); - mtx_lock_spin(&smp_ipi_mtx); - } else - critical_enter(); - /* - * We need to disable interrupt preemption but MUST NOT have - * interrupts disabled here. - * XXX we may need to hold schedlock to get a coherent pm_active - * XXX critical sections disable interrupts again - */ + sched_pin(); wbinvd(); smp_cache_flush(); - if (smp_started) - mtx_unlock_spin(&smp_ipi_mtx); - else - critical_exit(); + sched_unpin(); } #else /* !SMP */ /* ==== //depot/projects/linuxolator/src/sys/amd64/amd64/trap.c#5 (text+ko) ==== @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.313 2006/12/17 06:48:39 kmacy Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.314 2007/03/09 04:02:36 mohans Exp $"); /* * AMD64 Trap and System call handling @@ -813,6 +813,8 @@ CTR4(KTR_SYSC, "syscall enter thread %p pid %d proc %s code %d", td, td->td_proc->p_pid, td->td_proc->p_comm, code); + td->td_syscalls++; + if (error == 0) { td->td_retval[0] = 0; td->td_retval[1] = frame->tf_rdx; ==== //depot/projects/linuxolator/src/sys/amd64/include/apicvar.h#5 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/apicvar.h,v 1.21 2006/12/17 06:48:40 kmacy Exp $ + * $FreeBSD: src/sys/amd64/include/apicvar.h,v 1.22 2007/03/05 20:35:16 jhb Exp $ */ #ifndef _MACHINE_APICVAR_H_ @@ -180,7 +180,7 @@ void apic_free_vector(u_int vector, u_int irq); u_int apic_idt_to_irq(u_int vector); void apic_register_enumerator(struct apic_enumerator *enumerator); -void *ioapic_create(uintptr_t addr, int32_t id, int intbase); +void *ioapic_create(vm_paddr_t addr, int32_t apic_id, int intbase); int ioapic_disable_pin(void *cookie, u_int pin); int ioapic_get_vector(void *cookie, u_int pin); void ioapic_register(void *cookie); @@ -197,7 +197,7 @@ void lapic_dump(const char *str); void lapic_eoi(void); int lapic_id(void); -void lapic_init(uintptr_t addr); +void lapic_init(vm_paddr_t addr); int lapic_intr_pending(u_int vector); void lapic_ipi_raw(register_t icrlo, u_int dest); void lapic_ipi_vectored(u_int vector, int dest); ==== //depot/projects/linuxolator/src/sys/amd64/include/intr_machdep.h#7 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/intr_machdep.h,v 1.15 2007/02/23 12:18:26 piso Exp $ + * $FreeBSD: src/sys/amd64/include/intr_machdep.h,v 1.16 2007/03/06 17:16:46 jhb Exp $ */ #ifndef __MACHINE_INTR_MACHDEP_H__ @@ -131,9 +131,7 @@ void elcr_resume(void); void elcr_write_trigger(u_int irq, enum intr_trigger trigger); #ifdef SMP -void intr_add_cpu(u_int apic_id); -#else -#define intr_add_cpu(apic_id) +void intr_add_cpu(u_int cpu); #endif int intr_add_handler(const char *name, int vector, driver_filter_t filter, driver_intr_t handler, void *arg, enum intr_type flags, ==== //depot/projects/linuxolator/src/sys/amd64/include/pcpu.h#3 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/pcpu.h,v 1.46 2007/02/06 18:04:02 bde Exp $ + * $FreeBSD: src/sys/amd64/include/pcpu.h,v 1.47 2007/03/11 05:54:28 alc Exp $ */ #ifndef _MACHINE_PCPU_H_ @@ -56,6 +56,7 @@ extern struct pcpu *pcpup; #define PCPU_GET(member) (pcpup->pc_ ## member) +#define PCPU_LAZY_INC(member) (++pcpup->pc_ ## member) #define PCPU_PTR(member) (&pcpup->pc_ ## member) #define PCPU_SET(member, val) (pcpup->pc_ ## member = (val)) @@ -109,6 +110,34 @@ }) /* + * Increments the value of the per-cpu counter name. The implementation + * must be atomic with respect to interrupts. + */ +#define __PCPU_LAZY_INC(name) do { \ + CTASSERT(sizeof(__pcpu_type(name)) == 1 || \ + sizeof(__pcpu_type(name)) == 2 || \ + sizeof(__pcpu_type(name)) == 4 || \ + sizeof(__pcpu_type(name)) == 8); \ + if (sizeof(__pcpu_type(name)) == 1) { \ + __asm __volatile("incb %%gs:%0" \ + : "=m" (*(__pcpu_type(name) *)(__pcpu_offset(name)))\ + : "m" (*(__pcpu_type(name) *)(__pcpu_offset(name))));\ + } else if (sizeof(__pcpu_type(name)) == 2) { \ + __asm __volatile("incw %%gs:%0" \ + : "=m" (*(__pcpu_type(name) *)(__pcpu_offset(name)))\ + : "m" (*(__pcpu_type(name) *)(__pcpu_offset(name))));\ + } else if (sizeof(__pcpu_type(name)) == 4) { \ + __asm __volatile("incl %%gs:%0" \ + : "=m" (*(__pcpu_type(name) *)(__pcpu_offset(name)))\ + : "m" (*(__pcpu_type(name) *)(__pcpu_offset(name))));\ + } else if (sizeof(__pcpu_type(name)) == 8) { \ + __asm __volatile("incq %%gs:%0" \ + : "=m" (*(__pcpu_type(name) *)(__pcpu_offset(name)))\ + : "m" (*(__pcpu_type(name) *)(__pcpu_offset(name))));\ + } \ +} while (0) >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200703121604.l2CG4QHp029864>
