From: Benjamin LaHaise <bcrl@kvack.org>
To: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [RFC] unify semaphore implementations
Date: Thu, 28 Apr 2005 14:29:26 -0400 [thread overview]
Message-ID: <20050428182926.GC16545@kvack.org> (raw)
Hello all,
Please review the following series of patches for unifying the
semaphore implementation across all architectures (not posted as
they're about 350K), as they have only been tested on x86-64. The
code generated is functionally identical to the earlier i386
variant, but since gcc has no way of taking condition codes as
results, there are two additional instructions inserted from the
use of generic atomic operations. All told the >6000 lines of code
deleted makes for a much easier job for subsequent patches changing
semaphore functionality. Cheers,
-ben
http://www.kvack.org/~bcrl/patches/sem-cleanup-A2/10-rename_semaphore_h.diff
Introduce linux/semaphore.h. Convert all users of asm/semaphore.h over
to linux/semaphore.h.
http://www.kvack.org/~bcrl/patches/sem-cleanup-A2/20-move_rwlock.diff
Move i386 rwlock helper functions out of semaphore.c and into their own
file rwlock.c.
http://www.kvack.org/~bcrl/patches/sem-cleanup-A2/30-one_semaphore.diff
Replace all semaphore implementations with a single implementation
derrived from the i386 code using atomic operations. Tested on x86-64,
compiled on i386 and ia64.
--
"Time is what keeps everything from happening all at once." -- John Wheeler
sem-10/arch/alpha/kernel/alpha_ksyms.c | 2
sem-10/arch/arm/common/rtctime.c | 2
sem-10/arch/arm/kernel/semaphore.c | 5
sem-10/arch/arm/mach-integrator/clock.c | 2
sem-10/arch/arm/mach-omap/clock.c | 2
sem-10/arch/arm/mach-versatile/clock.c | 2
sem-10/arch/arm/oprofile/common.c | 2
sem-10/arch/arm26/kernel/armksyms.c | 2
sem-10/arch/arm26/kernel/semaphore.c | 5
sem-10/arch/arm26/kernel/traps.c | 2
sem-10/arch/cris/kernel/crisksyms.c | 2
sem-10/arch/cris/kernel/semaphore.c | 4
sem-10/arch/frv/kernel/frv_ksyms.c | 2
sem-10/arch/frv/kernel/semaphore.c | 2
sem-10/arch/h8300/kernel/h8300_ksyms.c | 2
sem-10/arch/h8300/kernel/semaphore.c | 4
sem-10/arch/i386/kernel/cpu/common.c | 2
sem-10/arch/i386/kernel/cpu/proc.c | 2
sem-10/arch/i386/kernel/i386_ksyms.c | 2
sem-10/arch/i386/kernel/semaphore.c | 4
sem-10/arch/ia64/ia32/sys_ia32.c | 2
sem-10/arch/ia64/kernel/ia64_ksyms.c | 2
sem-10/arch/ia64/kernel/salinfo.c | 2
sem-10/arch/ia64/kernel/semaphore.c | 4
sem-10/arch/ia64/sn/kernel/sn2/sn_hwperf.c | 2
sem-10/arch/m32r/kernel/m32r_ksyms.c | 2
sem-10/arch/m32r/kernel/semaphore.c | 4
sem-10/arch/m68k/atari/stram.c | 2
sem-10/arch/m68k/kernel/m68k_ksyms.c | 2
sem-10/arch/m68k/kernel/semaphore.c | 4
sem-10/arch/m68k/sun3/intersil.c | 2
sem-10/arch/m68knommu/kernel/m68k_ksyms.c | 2
sem-10/arch/m68knommu/kernel/semaphore.c | 4
sem-10/arch/mips/kernel/semaphore.c | 2
sem-10/arch/mips/lasat/picvue.h | 2
sem-10/arch/mips/sgi-ip27/ip27-console.c | 2
sem-10/arch/parisc/kernel/parisc_ksyms.c | 2
sem-10/arch/parisc/kernel/semaphore.c | 4
sem-10/arch/parisc/kernel/sys_parisc32.c | 2
sem-10/arch/ppc/kernel/ppc_ksyms.c | 2
sem-10/arch/ppc/kernel/semaphore.c | 2
sem-10/arch/ppc/kernel/syscalls.c | 2
sem-10/arch/ppc/syslib/ocp.c | 2
sem-10/arch/ppc64/kernel/rtas.c | 2
sem-10/arch/ppc64/kernel/semaphore.c | 2
sem-10/arch/ppc64/kernel/sys_ppc32.c | 2
sem-10/arch/ppc64/kernel/syscalls.c | 2
sem-10/arch/ppc64/mm/imalloc.c | 2
sem-10/arch/s390/kernel/compat_linux.c | 2
sem-10/arch/s390/kernel/debug.c | 2
sem-10/arch/s390/kernel/semaphore.c | 2
sem-10/arch/sh/kernel/semaphore.c | 6
sem-10/arch/sh/kernel/sh_ksyms.c | 2
sem-10/arch/sh/mm/pg-dma.c | 2
sem-10/arch/sh64/kernel/semaphore.c | 6
sem-10/arch/sh64/kernel/sh_ksyms.c | 2
sem-10/arch/sparc/kernel/semaphore.c | 4
sem-10/arch/sparc64/kernel/sys_sparc32.c | 2
sem-10/arch/um/drivers/port_kern.c | 2
sem-10/arch/um/drivers/xterm_kern.c | 2
sem-10/arch/um/include/line.h | 2
sem-10/arch/um/kernel/trap_kern.c | 2
sem-10/arch/um/sys-i386/ksyms.c | 2
sem-10/arch/v850/kernel/semaphore.c | 4
sem-10/arch/v850/kernel/syscalls.c | 2
sem-10/arch/v850/kernel/v850_ksyms.c | 2
sem-10/arch/x86_64/ia32/sys_ia32.c | 2
sem-10/arch/x86_64/kernel/semaphore.c | 4
sem-10/arch/x86_64/kernel/x8664_ksyms.c | 2
sem-10/drivers/atm/idt77252.c | 2
sem-10/drivers/base/core.c | 2
sem-10/drivers/base/firmware_class.c | 2
sem-10/drivers/base/power/shutdown.c | 2
sem-10/drivers/block/cryptoloop.c | 2
sem-10/drivers/block/sx8.c | 2
sem-10/drivers/char/generic_serial.c | 2
sem-10/drivers/char/ipmi/ipmi_devintf.c | 2
sem-10/drivers/char/ipmi/ipmi_poweroff.c | 2
sem-10/drivers/char/rio/rioboot.c | 2
sem-10/drivers/char/rio/riocmd.c | 2
sem-10/drivers/char/rio/rioctrl.c | 2
sem-10/drivers/char/rio/rioinit.c | 2
sem-10/drivers/char/rio/riointr.c | 2
sem-10/drivers/char/rio/rioparam.c | 2
sem-10/drivers/char/rio/rioroute.c | 2
sem-10/drivers/char/rio/riotable.c | 2
sem-10/drivers/char/rio/riotty.c | 2
sem-10/drivers/char/rocket.c | 2
sem-10/drivers/char/ser_a2232.c | 2
sem-10/drivers/char/snsc.h | 2
sem-10/drivers/char/watchdog/sc1200wdt.c | 2
sem-10/drivers/fc4/fc.c | 2
sem-10/drivers/i2c/busses/i2c-ali1535.c | 2
sem-10/drivers/ieee1394/eth1394.c | 2
sem-10/drivers/ieee1394/hosts.h | 2
sem-10/drivers/ieee1394/ieee1394_core.c | 2
sem-10/drivers/ieee1394/ieee1394_core.h | 2
sem-10/drivers/ieee1394/ieee1394_types.h | 2
sem-10/drivers/infiniband/core/device.c | 2
sem-10/drivers/infiniband/core/user_mad.c | 2
sem-10/drivers/infiniband/hw/mthca/mthca_dev.h | 2
sem-10/drivers/infiniband/hw/mthca/mthca_memfree.h | 2
sem-10/drivers/infiniband/ulp/ipoib/ipoib.h | 2
sem-10/drivers/input/joystick/iforce/iforce.h | 2
sem-10/drivers/macintosh/adb.c | 2
sem-10/drivers/media/dvb/dvb-core/dmxdev.h | 2
sem-10/drivers/media/dvb/dvb-core/dvb_demux.h | 2
sem-10/drivers/media/dvb/dvb-core/dvb_frontend.c | 2
sem-10/drivers/media/dvb/ttpci/av7110.c | 2
sem-10/drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c | 2
sem-10/drivers/media/dvb/ttusb-dec/ttusb_dec.c | 2
sem-10/drivers/media/radio/miropcm20-rds-core.c | 2
sem-10/drivers/media/radio/radio-aimslab.c | 2
sem-10/drivers/media/radio/radio-maestro.c | 2
sem-10/drivers/media/radio/radio-maxiradio.c | 2
sem-10/drivers/media/radio/radio-sf16fmi.c | 2
sem-10/drivers/media/radio/radio-sf16fmr2.c | 2
sem-10/drivers/media/video/arv.c | 2
sem-10/drivers/media/video/bw-qcam.c | 2
sem-10/drivers/media/video/c-qcam.c | 2
sem-10/drivers/media/video/cpia.c | 2
sem-10/drivers/media/video/ir-kbd-i2c.c | 2
sem-10/drivers/media/video/msp3400.c | 2
sem-10/drivers/media/video/planb.c | 2
sem-10/drivers/media/video/tvmixer.c | 2
sem-10/drivers/media/video/videodev.c | 2
sem-10/drivers/mtd/mtd_blkdevs.c | 2
sem-10/drivers/net/3c527.c | 2
sem-10/drivers/net/hamradio/6pack.c | 2
sem-10/drivers/net/ibmveth.c | 2
sem-10/drivers/net/plip.c | 2
sem-10/drivers/net/ppp_synctty.c | 2
sem-10/drivers/oprofile/event_buffer.h | 2
sem-10/drivers/oprofile/oprof.c | 2
sem-10/drivers/pci/hotplug/acpiphp_glue.c | 2
sem-10/drivers/pci/hotplug/pciehp.h | 2
sem-10/drivers/pci/hotplug/rpadlpar_core.c | 2
sem-10/drivers/pci/hotplug/shpchp.h | 2
sem-10/drivers/s390/char/sclp_cpi.c | 2
sem-10/drivers/s390/cio/ccwgroup.c | 2
sem-10/drivers/s390/cio/qdio.c | 2
sem-10/drivers/s390/net/qeth_main.c | 2
sem-10/drivers/scsi/aacraid/aachba.c | 2
sem-10/drivers/scsi/aacraid/commctrl.c | 2
sem-10/drivers/scsi/aacraid/comminit.c | 2
sem-10/drivers/scsi/aacraid/commsup.c | 2
sem-10/drivers/scsi/aacraid/dpcsup.c | 2
sem-10/drivers/scsi/aacraid/linit.c | 2
sem-10/drivers/scsi/aacraid/rkt.c | 2
sem-10/drivers/scsi/aacraid/rx.c | 2
sem-10/drivers/scsi/aacraid/sa.c | 2
sem-10/drivers/scsi/aha152x.c | 2
sem-10/drivers/scsi/dpt/dpti_i2o.h | 2
sem-10/drivers/scsi/libata-core.c | 2
sem-10/drivers/scsi/megaraid/mega_common.h | 2
sem-10/drivers/scsi/megaraid/megaraid_ioctl.h | 2
sem-10/drivers/scsi/qla2xxx/qla_def.h | 2
sem-10/drivers/scsi/scsi_scan.c | 2
sem-10/drivers/scsi/scsi_transport_spi.c | 2
sem-10/drivers/serial/mcfserial.c | 2
sem-10/drivers/serial/pmac_zilog.c | 2
sem-10/drivers/usb/atm/usb_atm.h | 2
sem-10/drivers/usb/class/usb-midi.c | 2
sem-10/drivers/usb/core/hub.c | 2
sem-10/drivers/usb/media/ov511.c | 2
sem-10/drivers/usb/media/pwc/pwc.h | 2
sem-10/drivers/usb/media/sn9c102.h | 2
sem-10/drivers/usb/media/w9968cf.h | 2
sem-10/drivers/usb/net/kaweth.c | 2
sem-10/drivers/usb/serial/io_ti.c | 2
sem-10/drivers/usb/serial/ti_usb_3410_5052.c | 2
sem-10/drivers/w1/w1.h | 2
sem-10/fs/cramfs/inode.c | 2
sem-10/fs/eventpoll.c | 2
sem-10/fs/isofs/compress.c | 2
sem-10/fs/jffs/inode-v23.c | 2
sem-10/fs/jffs/intrep.c | 2
sem-10/fs/jffs2/compr_zlib.c | 2
sem-10/fs/locks.c | 2
sem-10/fs/ntfs/inode.h | 2
sem-10/fs/partitions/devfs.c | 2
sem-10/fs/reiserfs/journal.c | 2
sem-10/fs/reiserfs/xattr.c | 2
sem-10/fs/sysfs/file.c | 2
sem-10/fs/xfs/linux-2.6/mutex.h | 2
sem-10/fs/xfs/linux-2.6/sema.h | 2
sem-10/include/asm-i386/mmu.h | 2
sem-10/include/asm-ia64/sn/nodepda.h | 2
sem-10/include/asm-ppc/ocp.h | 2
sem-10/include/asm-sh/dma.h | 2
sem-10/include/asm-x86_64/mmu.h | 2
sem-10/include/linux/cpu.h | 2
sem-10/include/linux/devfs_fs_kernel.h | 2
sem-10/include/linux/device.h | 2
sem-10/include/linux/fs.h | 2
sem-10/include/linux/i2c.h | 2
sem-10/include/linux/i2o.h | 2
sem-10/include/linux/ide.h | 2
sem-10/include/linux/if_pppox.h | 2
sem-10/include/linux/jbd.h | 2
sem-10/include/linux/jffs2_fs_i.h | 2
sem-10/include/linux/jffs2_fs_sb.h | 2
sem-10/include/linux/lp.h | 2
sem-10/include/linux/mtd/blktrans.h | 2
sem-10/include/linux/mtd/doc2000.h | 2
sem-10/include/linux/parport.h | 2
sem-10/include/linux/raid/md.h | 2
sem-10/include/linux/sched.h | 2
sem-10/include/linux/seq_file.h | 2
sem-10/include/linux/syscalls.h | 2
sem-10/include/linux/udf_fs_sb.h | 2
sem-10/include/sound/core.h | 2
sem-10/include/sound/rawmidi.h | 2
sem-10/ipc/compat.c | 2
sem-10/kernel/cpu.c | 2
sem-10/kernel/cpuset.c | 2
sem-10/kernel/kthread.c | 2
sem-10/kernel/module.c | 2
sem-10/kernel/posix-timers.c | 2
sem-10/kernel/profile.c | 2
sem-10/kernel/stop_machine.c | 2
sem-10/lib/reed_solomon/reed_solomon.c | 2
sem-10/net/core/flow.c | 2
sem-10/net/ipv4/ipcomp.c | 2
sem-10/net/ipv4/netfilter/arp_tables.c | 2
sem-10/net/ipv4/netfilter/ip_tables.c | 2
sem-10/net/ipv6/ipcomp6.c | 2
sem-10/net/ipv6/netfilter/ip6_tables.c | 2
sem-10/security/selinux/hooks.c | 2
sem-10/security/selinux/selinuxfs.c | 2
sem-10/security/selinux/ss/conditional.c | 2
sem-10/security/selinux/ss/services.c | 2
sem-10/sound/arm/sa11xx-uda1341.c | 2
sem-10/sound/core/memalloc.c | 2
sem-10/sound/core/seq/seq_midi.c | 2
sem-10/sound/oss/aci.c | 2
sem-10/sound/oss/dmasound/dmasound_awacs.c | 2
sem-10/sound/oss/via82cxxx_audio.c | 2
sem-10/sound/oss/vwsnd.c | 2
sem-20/arch/i386/kernel/Makefile | 1
sem-20/arch/i386/kernel/rwlock.c | 50 ++
sem-20/arch/i386/kernel/semaphore.c | 33 -
sem-30/Makefile | 2
sem-30/arch/alpha/kernel/Makefile | 2
sem-30/arch/alpha/kernel/alpha_ksyms.c | 9
sem-30/arch/alpha/kernel/semaphore.c | 224 ------------
sem-30/arch/arm/kernel/Makefile | 2
sem-30/arch/arm/kernel/semaphore.c | 219 ------------
sem-30/arch/arm26/kernel/Makefile | 2
sem-30/arch/arm26/kernel/semaphore.c | 222 ------------
sem-30/arch/cris/kernel/Makefile | 2
sem-30/arch/cris/kernel/crisksyms.c | 6
sem-30/arch/cris/kernel/semaphore.c | 130 -------
sem-30/arch/frv/kernel/Makefile | 2
sem-30/arch/frv/kernel/semaphore.c | 156 --------
sem-30/arch/h8300/kernel/Makefile | 2
sem-30/arch/h8300/kernel/semaphore.c | 133 -------
sem-30/arch/i386/kernel/Makefile | 2
sem-30/arch/i386/kernel/i386_ksyms.c | 4
sem-30/arch/i386/kernel/semaphore.c | 264 ---------------
sem-30/arch/ia64/kernel/Makefile | 2
sem-30/arch/ia64/kernel/ia64_ksyms.c | 6
sem-30/arch/ia64/kernel/semaphore.c | 165 ---------
sem-30/arch/m32r/kernel/Makefile | 2
sem-30/arch/m32r/kernel/m32r_ksyms.c | 4
sem-30/arch/m32r/kernel/semaphore.c | 186 ----------
sem-30/arch/m68k/kernel/Makefile | 2
sem-30/arch/m68k/kernel/m68k_ksyms.c | 5
sem-30/arch/m68k/kernel/semaphore.c | 133 -------
sem-30/arch/m68k/lib/Makefile | 2
sem-30/arch/m68k/lib/semaphore.S | 53 ---
sem-30/arch/m68knommu/kernel/Makefile | 2
sem-30/arch/m68knommu/kernel/m68k_ksyms.c | 5
sem-30/arch/m68knommu/kernel/semaphore.c | 134 -------
sem-30/arch/m68knommu/lib/Makefile | 2
sem-30/arch/m68knommu/lib/semaphore.S | 67 ---
sem-30/arch/mips/kernel/Makefile | 2
sem-30/arch/mips/kernel/semaphore.c | 164 ---------
sem-30/arch/parisc/kernel/Makefile | 2
sem-30/arch/parisc/kernel/parisc_ksyms.c | 5
sem-30/arch/parisc/kernel/semaphore.c | 102 -----
sem-30/arch/ppc/kernel/Makefile | 2
sem-30/arch/ppc/kernel/ppc_ksyms.c | 3
sem-30/arch/ppc/kernel/semaphore.c | 131 -------
sem-30/arch/ppc64/kernel/Makefile | 2
sem-30/arch/ppc64/kernel/semaphore.c | 136 -------
sem-30/arch/s390/kernel/Makefile | 2
sem-30/arch/s390/kernel/s390_ksyms.c | 7
sem-30/arch/s390/kernel/semaphore.c | 108 ------
sem-30/arch/sh/kernel/Makefile | 2
sem-30/arch/sh/kernel/semaphore.c | 139 -------
sem-30/arch/sh/kernel/sh_ksyms.c | 6
sem-30/arch/sh64/kernel/Makefile | 2
sem-30/arch/sh64/kernel/semaphore.c | 140 -------
sem-30/arch/sh64/kernel/sh_ksyms.c | 3
sem-30/arch/sparc/kernel/Makefile | 2
sem-30/arch/sparc/kernel/semaphore.c | 155 --------
sem-30/arch/sparc/kernel/sparc_ksyms.c | 5
sem-30/arch/sparc64/kernel/Makefile | 2
sem-30/arch/sparc64/kernel/semaphore.c | 251 --------------
sem-30/arch/sparc64/kernel/sparc64_ksyms.c | 6
sem-30/arch/um/sys-i386/ksyms.c | 6
sem-30/arch/v850/kernel/Makefile | 2
sem-30/arch/v850/kernel/semaphore.c | 166 ---------
sem-30/arch/v850/kernel/v850_ksyms.c | 6
sem-30/arch/x86_64/kernel/Makefile | 2
sem-30/arch/x86_64/kernel/semaphore.c | 180 ----------
sem-30/arch/x86_64/kernel/x8664_ksyms.c | 4
sem-30/arch/x86_64/lib/thunk.S | 16
sem-30/include/asm-alpha/semaphore.h | 153 --------
sem-30/include/asm-arm/semaphore.h | 106 ------
sem-30/include/asm-arm26/semaphore.h | 103 -----
sem-30/include/asm-cris/semaphore.h | 142 --------
sem-30/include/asm-frv/semaphore.h | 161 ---------
sem-30/include/asm-h8300/semaphore-helper.h | 86 ----
sem-30/include/asm-h8300/semaphore.h | 194 -----------
sem-30/include/asm-i386/semaphore.h | 194 -----------
sem-30/include/asm-ia64/semaphore.h | 102 -----
sem-30/include/asm-m32r/semaphore.h | 205 -----------
sem-30/include/asm-m68k/semaphore.h | 167 ---------
sem-30/include/asm-m68knommu/semaphore.h | 157 --------
sem-30/include/asm-mips/semaphore.h | 112 ------
sem-30/include/asm-parisc/semaphore.h | 147 --------
sem-30/include/asm-ppc/semaphore.h | 111 ------
sem-30/include/asm-ppc64/semaphore.h | 98 -----
sem-30/include/asm-s390/semaphore.h | 110 ------
sem-30/include/asm-sh/semaphore.h | 119 ------
sem-30/include/asm-sh64/semaphore.h | 123 ------
sem-30/include/asm-sparc/semaphore.h | 196 -----------
sem-30/include/asm-sparc64/semaphore.h | 57 ---
sem-30/include/asm-um/semaphore.h | 6
sem-30/include/asm-v850/semaphore.h | 88 -----
sem-30/include/asm-x86_64/semaphore.h | 196 -----------
sem-30/include/linux/semaphore.h | 147 ++++++++
sem-30/kernel/Makefile | 3
sem-30/kernel/semaphore.c | 179 ++++++++++
336 files changed, 659 insertions(+), 7315 deletions(-)
next reply other threads:[~2005-04-28 18:29 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-04-28 18:29 Benjamin LaHaise [this message]
2005-04-28 18:48 ` [RFC] unify semaphore implementations James Bottomley
2005-04-28 18:59 ` Benjamin LaHaise
2005-04-28 18:53 ` David S. Miller
2005-04-28 22:40 ` Russell King
2005-04-29 0:42 ` Trond Myklebust
2005-04-29 1:26 ` Paul Mackerras
2005-04-28 22:54 ` David Howells
2005-04-29 0:44 ` Paul Mackerras
2005-04-29 5:33 ` Richard Henderson
2005-04-29 14:14 ` Benjamin LaHaise
2005-04-29 15:42 ` Trond Myklebust
2005-04-30 1:45 ` Paul Mackerras
2005-04-30 5:13 ` Paul Mackerras
2005-04-30 16:40 ` Trond Myklebust
2005-04-30 1:49 ` Paul Mackerras
2005-04-30 16:50 ` Trond Myklebust
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050428182926.GC16545@kvack.org \
--to=bcrl@kvack.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox