Index: configure
===================================================================
RCS file: /cvsroot/pgsql-server/configure,v
retrieving revision 1.295
diff -c -c -r1.295 configure
*** configure 7 Sep 2003 16:49:41 -0000 1.295
--- configure 12 Sep 2003 01:36:28 -0000
***************
*** 869,874 ****
--- 869,875 ----
--with-rendezvous build with Rendezvous support
--with-openssl[=DIR] build with OpenSSL support [/usr/local/ssl]
--without-readline do not use Readline
+ --without-spinlocks do not use Spinlocks
--without-zlib do not use Zlib
--with-gnu-ld assume the C compiler uses GNU ld default=no
***************
*** 3494,3499 ****
--- 3495,3530 ----
#
+ # Spinlocks
+ #
+
+
+
+ # Check whether --with-spinlocks or --without-spinlocks was given.
+ if test "${with_spinlocks+set}" = set; then
+ withval="$with_spinlocks"
+
+ case $withval in
+ yes)
+ :
+ ;;
+ no)
+ :
+ ;;
+ *)
+ { { echo "$as_me:$LINENO: error: no argument expected for --with-spinlocks option" >&5
+ echo "$as_me: error: no argument expected for --with-spinlocks option" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ else
+ with_spinlocks=yes
+
+ fi;
+
+
+ #
# Zlib
#
***************
*** 3523,3529 ****
fi;
-
#
# Elf
#
--- 3554,3559 ----
***************
*** 6060,6065 ****
--- 6090,6108 ----
{ (exit 1); exit 1; }; }
fi
+ fi
+
+ if test "$with_spinlocks" = yes; then
+
+ cat >>confdefs.h <<\_ACEOF
+ #define HAVE_SPINLOCKS 1
+ _ACEOF
+
+ else
+ { echo "$as_me:$LINENO: WARNING:
+ *** Not using spinlocks will cause poor performance." >&5
+ echo "$as_me: WARNING:
+ *** Not using spinlocks will cause poor performance." >&2;}
fi
if test "$with_krb4" = yes ; then
Index: configure.in
===================================================================
RCS file: /cvsroot/pgsql-server/configure.in,v
retrieving revision 1.286
diff -c -c -r1.286 configure.in
*** configure.in 7 Sep 2003 16:38:05 -0000 1.286
--- configure.in 12 Sep 2003 01:36:31 -0000
***************
*** 522,533 ****
[ --without-readline do not use Readline])
#
# Zlib
#
PGAC_ARG_BOOL(with, zlib, yes,
[ --without-zlib do not use Zlib])
-
#
# Elf
#
--- 522,538 ----
[ --without-readline do not use Readline])
#
+ # Spinlocks
+ #
+ PGAC_ARG_BOOL(with, spinlocks, yes,
+ [ --without-spinlocks do not use Spinlocks])
+
+ #
# Zlib
#
PGAC_ARG_BOOL(with, zlib, yes,
[ --without-zlib do not use Zlib])
#
# Elf
#
***************
*** 676,681 ****
--- 681,693 ----
If you have zlib already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory.
Use --without-zlib to disable zlib support.])])
+ fi
+
+ if test "$with_spinlocks" = yes; then
+ AC_DEFINE(HAVE_SPINLOCKS, 1, [Define to 1 if you have spinlocks.])
+ else
+ AC_MSG_WARN([
+ *** Not using spinlocks will cause poor performance.])
fi
if test "$with_krb4" = yes ; then
Index: doc/src/sgml/installation.sgml
===================================================================
RCS file: /cvsroot/pgsql-server/doc/src/sgml/installation.sgml,v
retrieving revision 1.141
diff -c -c -r1.141 installation.sgml
*** doc/src/sgml/installation.sgml 11 Sep 2003 21:42:20 -0000 1.141
--- doc/src/sgml/installation.sgml 12 Sep 2003 01:36:34 -0000
***************
*** 900,905 ****
--- 900,915 ----
+
+
+
+ Allows source builds to succeed without CPU spinlock support.
+ Lack of spinlock support will produce poor performance.
+
+
+
+
+
Index: src/backend/main/main.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/main/main.c,v
retrieving revision 1.62
diff -c -c -r1.62 main.c
*** src/backend/main/main.c 9 Sep 2003 15:19:31 -0000 1.62
--- src/backend/main/main.c 12 Sep 2003 01:36:34 -0000
***************
*** 23,29 ****
#include
#include
! #if defined(__alpha) && defined(__osf__)
#include
#include "machine/hal_sysinfo.h"
#define ASSEMBLER
--- 23,29 ----
#include
#include
! #if defined(__alpha__) && defined(__osf__)
#include
#include "machine/hal_sysinfo.h"
#define ASSEMBLER
***************
*** 63,76 ****
* without help. Avoid adding more here, if you can.
*/
! #if defined(__alpha)
#ifdef NOFIXADE
int buffer[] = {SSIN_UACPROC, UAC_SIGBUS};
#endif /* NOFIXADE */
#ifdef NOPRINTADE
int buffer[] = {SSIN_UACPROC, UAC_NOPRINT};
#endif /* NOPRINTADE */
! #endif /* __alpha */
#if defined(NOFIXADE) || defined(NOPRINTADE)
--- 63,76 ----
* without help. Avoid adding more here, if you can.
*/
! #if defined(__alpha__)
#ifdef NOFIXADE
int buffer[] = {SSIN_UACPROC, UAC_SIGBUS};
#endif /* NOFIXADE */
#ifdef NOPRINTADE
int buffer[] = {SSIN_UACPROC, UAC_NOPRINT};
#endif /* NOPRINTADE */
! #endif /* __alpha__ */
#if defined(NOFIXADE) || defined(NOPRINTADE)
***************
*** 78,84 ****
syscall(SYS_sysmips, MIPS_FIXADE, 0, NULL, NULL, NULL);
#endif
! #if defined(__alpha)
if (setsysinfo(SSI_NVPAIRS, buffer, 1, (caddr_t) NULL,
(unsigned long) NULL) < 0)
fprintf(stderr, gettext("%s: setsysinfo failed: %s\n"),
--- 78,84 ----
syscall(SYS_sysmips, MIPS_FIXADE, 0, NULL, NULL, NULL);
#endif
! #if defined(__alpha__)
if (setsysinfo(SSI_NVPAIRS, buffer, 1, (caddr_t) NULL,
(unsigned long) NULL) < 0)
fprintf(stderr, gettext("%s: setsysinfo failed: %s\n"),
Index: src/backend/storage/lmgr/s_lock.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/storage/lmgr/s_lock.c,v
retrieving revision 1.16
diff -c -c -r1.16 s_lock.c
*** src/backend/storage/lmgr/s_lock.c 8 Aug 2003 21:42:00 -0000 1.16
--- src/backend/storage/lmgr/s_lock.c 12 Sep 2003 01:36:35 -0000
***************
*** 118,128 ****
* Various TAS implementations that cannot live in s_lock.h as no inline
* definition exists (yet).
* In the future, get rid of tas.[cso] and fold it into this file.
*/
#if defined(__GNUC__)
! /*************************************************************************
* All the gcc flavors that are not inlined
*/
--- 118,133 ----
* Various TAS implementations that cannot live in s_lock.h as no inline
* definition exists (yet).
* In the future, get rid of tas.[cso] and fold it into this file.
+ *
+ * If you change something here, you have to modify s_lock.h because
+ * the definitions for these is split between this file and s_lock.h.
*/
#if defined(__GNUC__)
!
! /*
! * -----------------------------------------------------------------
* All the gcc flavors that are not inlined
*/
***************
*** 208,214 ****
! #if defined(NEED_SPARC_TAS_ASM)
/*
* sparc machines not using gcc
*/
--- 213,219 ----
! #if defined(__sparc__)
/*
* sparc machines not using gcc
*/
***************
*** 227,240 ****
asm("retl");
asm("nop");
}
! #endif /* NEED_SPARC_TAS_ASM */
!
!
!
- #if defined(NEED_I386_TAS_ASM)
- /* non gcc i386 based things */
- #endif /* NEED_I386_TAS_ASM */
#endif /* not __GNUC__ */
--- 232,239 ----
asm("retl");
asm("nop");
}
! #endif /* __sparc__ */
#endif /* not __GNUC__ */
Index: src/backend/storage/lmgr/spin.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/storage/lmgr/spin.c,v
retrieving revision 1.11
diff -c -c -r1.11 spin.c
*** src/backend/storage/lmgr/spin.c 4 Aug 2003 02:40:03 -0000 1.11
--- src/backend/storage/lmgr/spin.c 12 Sep 2003 01:36:35 -0000
***************
*** 25,31 ****
#include "storage/lwlock.h"
#include "storage/pg_sema.h"
#include "storage/spin.h"
!
#ifdef HAS_TEST_AND_SET
--- 25,31 ----
#include "storage/lwlock.h"
#include "storage/pg_sema.h"
#include "storage/spin.h"
! #include "storage/s_lock.h"
#ifdef HAS_TEST_AND_SET
Index: src/include/pg_config.h.in
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/pg_config.h.in,v
retrieving revision 1.62
diff -c -c -r1.62 pg_config.h.in
*** src/include/pg_config.h.in 7 Sep 2003 03:43:56 -0000 1.62
--- src/include/pg_config.h.in 12 Sep 2003 01:36:36 -0000
***************
*** 357,362 ****
--- 357,365 ----
/* Define to 1 if you have the `snprintf' function. */
#undef HAVE_SNPRINTF
+ /* Define to 1 if you have spinlocks. */
+ #undef HAVE_SPINLOCKS
+
/* Define to 1 if you have the `srandom' function. */
#undef HAVE_SRANDOM
Index: src/include/port/aix.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/aix.h,v
retrieving revision 1.9
diff -c -c -r1.9 aix.h
*** src/include/port/aix.h 12 Nov 2002 00:39:08 -0000 1.9
--- src/include/port/aix.h 12 Sep 2003 01:36:36 -0000
***************
*** 1,8 ****
#define CLASS_CONFLICT
#define DISABLE_XOPEN_NLS
- #define HAS_TEST_AND_SET
-
- typedef unsigned int slock_t;
#include /* ENDIAN definitions for network
* communication */
--- 1,5 ----
Index: src/include/port/beos.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/beos.h,v
retrieving revision 1.11
diff -c -c -r1.11 beos.h
*** src/include/port/beos.h 25 Oct 2001 05:50:09 -0000 1.11
--- src/include/port/beos.h 12 Sep 2003 01:36:36 -0000
***************
*** 2,11 ****
#include
#include
- #define HAS_TEST_AND_SET
-
- typedef unsigned char slock_t;
-
#define AF_UNIX 10 /* no domain sockets on BeOS */
/* Beos doesn't have all the required getrusage fields */
--- 2,7 ----
Index: src/include/port/bsdi.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/bsdi.h,v
retrieving revision 1.8
diff -c -c -r1.8 bsdi.h
*** src/include/port/bsdi.h 4 Aug 2003 00:43:32 -0000 1.8
--- src/include/port/bsdi.h 12 Sep 2003 01:36:36 -0000
***************
*** 1,10 ****
- #if defined(__i386__)
- #define NEED_I386_TAS_ASM
- #endif
- #if defined(__sparc__)
- #define NEED_SPARC_TAS_ASM
- #endif
-
- #define HAS_TEST_AND_SET
-
- typedef unsigned char slock_t;
--- 0 ----
Index: src/include/port/cygwin.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/cygwin.h,v
retrieving revision 1.4
diff -c -c -r1.4 cygwin.h
*** src/include/port/cygwin.h 4 Aug 2003 00:43:32 -0000 1.4
--- src/include/port/cygwin.h 12 Sep 2003 01:36:36 -0000
***************
*** 1,8 ****
/* $Header: /cvsroot/pgsql-server/src/include/port/cygwin.h,v 1.4 2003/08/04 00:43:32 momjian Exp $ */
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
-
#include
/*
--- 1,5 ----
***************
*** 20,24 ****
#define DLLIMPORT __declspec (dllexport)
#else
#define DLLIMPORT __declspec (dllimport)
-
#endif
--- 17,20 ----
Index: src/include/port/darwin.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/darwin.h,v
retrieving revision 1.5
diff -c -c -r1.5 darwin.h
*** src/include/port/darwin.h 28 Oct 2001 06:26:08 -0000 1.5
--- src/include/port/darwin.h 12 Sep 2003 01:36:36 -0000
***************
*** 1,13 ****
#define __darwin__ 1
-
- #if defined(__ppc__)
- #define HAS_TEST_AND_SET
- #endif
-
- #if defined(__ppc__)
- typedef unsigned int slock_t;
-
- #else
- typedef unsigned char slock_t;
-
- #endif
--- 1 ----
Index: src/include/port/dgux.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/dgux.h,v
retrieving revision 1.9
diff -c -c -r1.9 dgux.h
*** src/include/port/dgux.h 28 Oct 2001 06:26:08 -0000 1.9
--- src/include/port/dgux.h 12 Sep 2003 01:36:36 -0000
***************
*** 9,13 ****
#endif
#ifndef BYTE_ORDER
#define BYTE_ORDER BIG_ENDIAN
-
#endif
--- 9,12 ----
Index: src/include/port/freebsd.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/freebsd.h,v
retrieving revision 1.10
diff -c -c -r1.10 freebsd.h
*** src/include/port/freebsd.h 4 Aug 2003 00:43:32 -0000 1.10
--- src/include/port/freebsd.h 12 Sep 2003 01:36:36 -0000
***************
*** 1,48 ****
- #if defined(__i386__)
- #define NEED_I386_TAS_ASM
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__sparc__)
- #define NEED_SPARC_TAS_ASM
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__vax__)
- #define NEED_VAX_TAS_ASM
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__ns32k__)
- #define NEED_NS32K_TAS_ASM
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__m68k__)
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__arm__)
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__mips__)
- /* # undef HAS_TEST_AND_SET */
- #endif
-
- #if defined(__alpha__)
- #define HAS_TEST_AND_SET
- typedef unsigned long slock_t;
- #endif
-
- #if defined(__powerpc__)
- #define HAS_TEST_AND_SET
- typedef unsigned int slock_t;
-
- #endif
--- 0 ----
Index: src/include/port/hpux.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/hpux.h,v
retrieving revision 1.19
diff -c -c -r1.19 hpux.h
*** src/include/port/hpux.h 4 Aug 2003 00:43:32 -0000 1.19
--- src/include/port/hpux.h 12 Sep 2003 01:36:36 -0000
***************
*** 10,35 ****
#if defined(__hppa)
- #define HAS_TEST_AND_SET
- typedef struct
- {
- int sema[4];
- } slock_t;
-
#ifndef BYTE_ORDER
#define BYTE_ORDER BIG_ENDIAN
#endif
#elif defined(__ia64)
- #define HAS_TEST_AND_SET
- typedef unsigned int slock_t;
-
#ifndef BYTE_ORDER
#define BYTE_ORDER LITTLE_ENDIAN
#endif
#else
#error unrecognized CPU type for HP-UX
#endif
--- 10,27 ----
#if defined(__hppa)
#ifndef BYTE_ORDER
#define BYTE_ORDER BIG_ENDIAN
#endif
#elif defined(__ia64)
#ifndef BYTE_ORDER
#define BYTE_ORDER LITTLE_ENDIAN
#endif
#else
+
#error unrecognized CPU type for HP-UX
#endif
Index: src/include/port/irix5.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/irix5.h,v
retrieving revision 1.8
diff -c -c -r1.8 irix5.h
*** src/include/port/irix5.h 12 Nov 2002 00:39:08 -0000 1.8
--- src/include/port/irix5.h 12 Sep 2003 01:36:36 -0000
***************
*** 1,3 ****
- #define HAS_TEST_AND_SET
-
- typedef unsigned long slock_t;
--- 0 ----
Index: src/include/port/linux.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/linux.h,v
retrieving revision 1.33
diff -c -c -r1.33 linux.h
*** src/include/port/linux.h 10 Nov 2002 00:33:43 -0000 1.33
--- src/include/port/linux.h 12 Sep 2003 01:36:36 -0000
***************
*** 2,52 ****
#ifndef _GNU_SOURCE
#define _GNU_SOURCE 1
#endif
-
-
- #if defined(__i386__)
- typedef unsigned char slock_t;
-
- #define HAS_TEST_AND_SET
-
- #elif defined(__sparc__)
- typedef unsigned char slock_t;
-
- #define HAS_TEST_AND_SET
-
- #elif defined(__powerpc64__)
- typedef unsigned long slock_t;
-
- #define HAS_TEST_AND_SET
-
- #elif defined(__powerpc__)
- typedef unsigned int slock_t;
-
- #define HAS_TEST_AND_SET
-
- #elif defined(__alpha__)
- typedef long int slock_t;
-
- #define HAS_TEST_AND_SET
-
- #elif defined(__mips__)
- typedef unsigned int slock_t;
-
- #define HAS_TEST_AND_SET
-
- #elif defined(__arm__)
- typedef unsigned char slock_t;
-
- #define HAS_TEST_AND_SET
-
- #elif defined(__ia64__)
- typedef unsigned int slock_t;
-
- #define HAS_TEST_AND_SET
-
- #elif defined(__s390__) || defined(__s390x__)
- typedef unsigned int slock_t;
-
- #define HAS_TEST_AND_SET
-
- #endif
--- 2,4 ----
Index: src/include/port/netbsd.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/netbsd.h,v
retrieving revision 1.9
diff -c -c -r1.9 netbsd.h
*** src/include/port/netbsd.h 4 Aug 2003 00:43:32 -0000 1.9
--- src/include/port/netbsd.h 12 Sep 2003 01:36:36 -0000
***************
*** 1,48 ****
- #if defined(__i386__)
- #define NEED_I386_TAS_ASM
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__sparc__)
- #define NEED_SPARC_TAS_ASM
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__vax__)
- #define NEED_VAX_TAS_ASM
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__ns32k__)
- #define NEED_NS32K_TAS_ASM
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__m68k__)
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__arm__)
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__mips__)
- /* # undef HAS_TEST_AND_SET */
- #endif
-
- #if defined(__alpha__)
- #define HAS_TEST_AND_SET
- typedef unsigned long slock_t;
- #endif
-
- #if defined(__powerpc__)
- #define HAS_TEST_AND_SET
- typedef unsigned int slock_t;
-
- #endif
--- 0 ----
Index: src/include/port/nextstep.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/nextstep.h,v
retrieving revision 1.6
diff -c -c -r1.6 nextstep.h
*** src/include/port/nextstep.h 28 Oct 2000 23:53:00 -0000 1.6
--- src/include/port/nextstep.h 12 Sep 2003 01:36:36 -0000
***************
*** 15,18 ****
#endif
#define NO_WAITPID
- typedef struct mutex slock_t;
--- 15,17 ----
Index: src/include/port/openbsd.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/openbsd.h,v
retrieving revision 1.8
diff -c -c -r1.8 openbsd.h
*** src/include/port/openbsd.h 4 Aug 2003 00:43:32 -0000 1.8
--- src/include/port/openbsd.h 12 Sep 2003 01:36:36 -0000
***************
*** 1,48 ****
- #if defined(__i386__)
- #define NEED_I386_TAS_ASM
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__sparc__)
- #define NEED_SPARC_TAS_ASM
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__vax__)
- #define NEED_VAX_TAS_ASM
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__ns32k__)
- #define NEED_NS32K_TAS_ASM
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__m68k__)
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__arm__)
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
- #endif
-
- #if defined(__mips__)
- /* # undef HAS_TEST_AND_SET */
- #endif
-
- #if defined(__alpha__)
- #define HAS_TEST_AND_SET
- typedef unsigned long slock_t;
- #endif
-
- #if defined(__powerpc__)
- #define HAS_TEST_AND_SET
- typedef unsigned int slock_t;
-
- #endif
--- 0 ----
Index: src/include/port/osf.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/osf.h,v
retrieving revision 1.7
diff -c -c -r1.7 osf.h
*** src/include/port/osf.h 28 Oct 2001 06:26:08 -0000 1.7
--- src/include/port/osf.h 12 Sep 2003 01:36:36 -0000
***************
*** 1,7 ****
#define NOFIXADE
#define DISABLE_XOPEN_NLS
! #define HAS_TEST_AND_SET
! /* #include */ /* for msemaphore */
/*typedef msemaphore slock_t;*/
#include
- typedef volatile long slock_t;
--- 1,5 ----
#define NOFIXADE
#define DISABLE_XOPEN_NLS
! /* #include */ /* for msemaphore */
/*typedef msemaphore slock_t;*/
#include
Index: src/include/port/qnx4.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/qnx4.h,v
retrieving revision 1.8
diff -c -c -r1.8 qnx4.h
*** src/include/port/qnx4.h 9 May 2003 16:59:43 -0000 1.8
--- src/include/port/qnx4.h 12 Sep 2003 01:36:36 -0000
***************
*** 5,12 ****
#include
#include /* for select */
- #define HAS_TEST_AND_SET
-
#undef HAVE_GETRUSAGE
#define strncasecmp strnicmp
--- 5,10 ----
***************
*** 21,28 ****
#endif /* NAN */
typedef u_short ushort;
-
- typedef unsigned char slock_t;
extern int isnan(double dsrc);
--- 19,24 ----
Index: src/include/port/sco.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/sco.h,v
retrieving revision 1.13
diff -c -c -r1.13 sco.h
*** src/include/port/sco.h 28 Oct 2001 06:26:08 -0000 1.13
--- src/include/port/sco.h 12 Sep 2003 01:36:36 -0000
***************
*** 1,13 ****
/* see src/backend/libpq/pqcomm.c */
#define SCO_ACCEPT_BUG
- #define HAS_TEST_AND_SET
- #define NEED_I386_TAS_ASM
-
#define USE_UNIVEL_CC
- typedef unsigned char slock_t;
-
#ifndef BIG_ENDIAN
#define BIG_ENDIAN 4321
#endif
--- 1,8 ----
***************
*** 19,23 ****
#endif
#ifndef BYTE_ORDER
#define BYTE_ORDER LITTLE_ENDIAN
-
#endif
--- 14,17 ----
Index: src/include/port/solaris.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/solaris.h,v
retrieving revision 1.8
diff -c -c -r1.8 solaris.h
*** src/include/port/solaris.h 10 Mar 2003 22:28:21 -0000 1.8
--- src/include/port/solaris.h 12 Sep 2003 01:36:36 -0000
***************
*** 1,8 ****
/* $Header: /cvsroot/pgsql-server/src/include/port/solaris.h,v 1.8 2003/03/10 22:28:21 tgl Exp $ */
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
-
/*
* Sort this out for all operating systems some time. The __xxx
* symbols are defined on both GCC and Solaris CC, although GCC
--- 1,5 ----
Index: src/include/port/sunos4.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/sunos4.h,v
retrieving revision 1.7
diff -c -c -r1.7 sunos4.h
*** src/include/port/sunos4.h 28 Oct 2001 06:26:08 -0000 1.7
--- src/include/port/sunos4.h 12 Sep 2003 01:36:36 -0000
***************
*** 1,6 ****
- #define HAS_TEST_AND_SET
- typedef unsigned char slock_t;
-
/* sprintf() returns char *, not int, on SunOS 4.1.x */
#define SPRINTF_CHAR
--- 1,3 ----
***************
*** 15,19 ****
#endif
#ifndef BYTE_ORDER
#define BYTE_ORDER BIG_ENDIAN
-
#endif
--- 12,15 ----
Index: src/include/port/svr4.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/svr4.h,v
retrieving revision 1.11
diff -c -c -r1.11 svr4.h
*** src/include/port/svr4.h 28 Oct 2001 06:26:08 -0000 1.11
--- src/include/port/svr4.h 12 Sep 2003 01:36:36 -0000
***************
*** 3,13 ****
#define BYTE_ORDER BIG_ENDIAN
#endif
#endif
-
- #ifdef sinix
- #define HAS_TEST_AND_SET
-
- #include "abi_mutex.h"
- typedef abilock_t slock_t;
-
- #endif
--- 3,5 ----
Index: src/include/port/univel.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/univel.h,v
retrieving revision 1.17
diff -c -c -r1.17 univel.h
*** src/include/port/univel.h 28 Oct 2001 06:26:08 -0000 1.17
--- src/include/port/univel.h 12 Sep 2003 01:36:36 -0000
***************
*** 1,14 ****
- #define HAS_TEST_AND_SET
- #define NEED_I386_TAS_ASM
-
/***************************************
* Define this if you are compiling with
* the native UNIXWARE C compiler.
***************************************/
#define USE_UNIVEL_CC
- typedef unsigned char slock_t;
-
#ifndef BIG_ENDIAN
#define BIG_ENDIAN 4321
#endif
--- 1,9 ----
***************
*** 20,24 ****
#endif
#ifndef BYTE_ORDER
#define BYTE_ORDER LITTLE_ENDIAN
-
#endif
--- 15,18 ----
Index: src/include/port/unixware.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/port/unixware.h,v
retrieving revision 1.11
diff -c -c -r1.11 unixware.h
*** src/include/port/unixware.h 28 Oct 2001 06:26:08 -0000 1.11
--- src/include/port/unixware.h 12 Sep 2003 01:36:36 -0000
***************
*** 1,6 ****
- #define HAS_TEST_AND_SET
- #define NEED_I386_TAS_ASM
-
/* see src/backend/libpq/pqcomm.c */
#define SCO_ACCEPT_BUG
--- 1,3 ----
***************
*** 10,17 ****
***************************************/
#define USE_UNIVEL_CC
- typedef unsigned char slock_t;
-
#ifndef BIG_ENDIAN
#define BIG_ENDIAN 4321
#endif
--- 7,12 ----
***************
*** 23,27 ****
#endif
#ifndef BYTE_ORDER
#define BYTE_ORDER LITTLE_ENDIAN
-
#endif
--- 18,21 ----
Index: src/include/storage/s_lock.h
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/storage/s_lock.h,v
retrieving revision 1.112
diff -c -c -r1.112 s_lock.h
*** src/include/storage/s_lock.h 4 Aug 2003 02:40:15 -0000 1.112
--- src/include/storage/s_lock.h 12 Sep 2003 01:36:37 -0000
***************
*** 73,84 ****
#include "storage/pg_sema.h"
- #if defined(HAS_TEST_AND_SET)
-
-
#if defined(__GNUC__) || defined(__ICC)
! /*************************************************************************
* All the gcc inlines
*/
/*
--- 73,84 ----
#include "storage/pg_sema.h"
#if defined(__GNUC__) || defined(__ICC)
! /*
! * ---------------------------------------------------------------------
* All the gcc inlines
+ *
+ * Gcc consistently defines the CPU as __cpu__.
*/
/*
***************
*** 95,101 ****
--- 95,104 ----
#if defined(__i386__) || defined(__x86_64__) /* AMD Opteron */
+
+ #define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
+ typedef unsigned char slock_t;
static __inline__ int
tas(volatile slock_t *lock)
***************
*** 114,122 ****
/* Intel Itanium */
! #if defined(__ia64__) || defined(__ia64)
! #define TAS(lock) tas(lock)
static __inline__ int
tas(volatile slock_t *lock)
{
--- 117,128 ----
/* Intel Itanium */
! #if defined(__ia64__)
+ #define HAS_TEST_AND_SET
+ #define TAS(lock) tas(lock)
+ typedef unsigned int slock_t;
+
static __inline__ int
tas(volatile slock_t *lock)
{
***************
*** 131,141 ****
return (int) ret;
}
! #endif /* __ia64__ || __ia64 */
! #if defined(__arm__) || defined(__arm__)
#define TAS(lock) tas(lock)
static __inline__ int
tas(volatile slock_t *lock)
--- 137,150 ----
return (int) ret;
}
! #endif /* __ia64__ */
!
+ #if defined(__arm__)
! #define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
+ typedef unsigned char slock_t;
static __inline__ int
tas(volatile slock_t *lock)
***************
*** 156,162 ****
/*
* S/390 Linux
*/
! #define TAS(lock) tas(lock)
static __inline__ int
tas(volatile slock_t *lock)
--- 165,174 ----
/*
* S/390 Linux
*/
!
! #define HAS_TEST_AND_SET
! #define TAS(lock) tas(lock)
! typedef unsigned int slock_t;
static __inline__ int
tas(volatile slock_t *lock)
***************
*** 182,188 ****
/*
* S/390x Linux (64-bit zSeries)
*/
! #define TAS(lock) tas(lock)
static __inline__ int
tas(volatile slock_t *lock)
--- 194,203 ----
/*
* S/390x Linux (64-bit zSeries)
*/
!
! #define HAS_TEST_AND_SET
! #define TAS(lock) tas(lock)
! typedef unsigned int slock_t;
static __inline__ int
tas(volatile slock_t *lock)
***************
*** 206,212 ****
--- 221,230 ----
#if defined(__sparc__)
+
+ #define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
+ typedef unsigned char slock_t;
static __inline__ int
tas(volatile slock_t *lock)
***************
*** 223,229 ****
--- 241,251 ----
#endif /* __sparc__ */
#if defined(__ppc__) || defined(__powerpc__) || defined(__powerpc64__)
+
+ #define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
+ typedef unsigned int slock_t;
+
/*
* NOTE: per the Enhanced PowerPC Architecture manual, v1.0 dated 7-May-2002,
* an isync is a sufficient synchronization barrier after a lwarx/stwcx loop.
***************
*** 259,265 ****
--- 281,290 ----
#if defined(__mc68000__) && defined(__linux__)
+
+ #define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
+ typedef unsigned char slock_t;
static __inline__ int
tas(volatile slock_t *lock)
***************
*** 281,286 ****
--- 306,315 ----
#if defined(__ppc__) || defined(__powerpc__) || defined(__powerpc64__)
+
+ #define HAS_TEST_AND_SET
+ typedef unsigned int slock_t;
+
/*
* PowerPC S_UNLOCK is almost standard but requires a "sync" instruction.
*/
***************
*** 294,305 ****
#endif /* powerpc */
! #if defined(NEED_VAX_TAS_ASM)
/*
* VAXen -- even multiprocessor ones
* (thanks to Tom Ivar Helbekkmo)
*/
#define TAS(lock) tas(lock)
static __inline__ int
tas(volatile slock_t *lock)
--- 323,337 ----
#endif /* powerpc */
! #if defined(__vax__)
/*
* VAXen -- even multiprocessor ones
* (thanks to Tom Ivar Helbekkmo)
*/
+
+ #define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
+ typedef unsigned char slock_t;
static __inline__ int
tas(volatile slock_t *lock)
***************
*** 317,327 ****
return _res;
}
! #endif /* NEED_VAX_TAS_ASM */
! #if defined(NEED_NS32K_TAS_ASM)
#define TAS(lock) tas(lock)
static __inline__ int
tas(volatile slock_t *lock)
--- 349,362 ----
return _res;
}
! #endif /* __vax__ */
! #if defined (__ns32k__)
!
! #define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
+ typedef unsigned char slock_t;
static __inline__ int
tas(volatile slock_t *lock)
***************
*** 335,352 ****
return _res;
}
! #endif /* NEED_NS32K_TAS_ASM */
#else /* !__GNUC__ */
! /***************************************************************************
* All non-gcc inlines
*/
! #if defined(NEED_I386_TAS_ASM) && defined(USE_UNIVEL_CC)
! #define TAS(lock) tas(lock)
asm int
tas(volatile slock_t *s_lock)
--- 370,404 ----
return _res;
}
! #endif /* __ns32k__ */
!
!
! /* These live in s_lock.c */
!
! #if defined(__m68k__)
! #define HAS_TEST_AND_SET
! typedef unsigned char slock_t;
! #endif
!
! #if defined(__mips__) && !defined(__sgi)
! #define HAS_TEST_AND_SET
! typedef unsigned char slock_t;
! #endif
#else /* !__GNUC__ */
! /*
! * ---------------------------------------------------------------------
* All non-gcc inlines
*/
! #if defined(__i386__) && defined(USE_UNIVEL_CC)
!
! #define HAS_TEST_AND_SET
! #define TAS(lock) tas(lock)
! typedef unsigned char slock_t;
asm int
tas(volatile slock_t *s_lock)
***************
*** 361,380 ****
popl %ebx
}
! #endif /* defined(NEED_I386_TAS_ASM) && defined(USE_UNIVEL_CC) */
#endif /* defined(__GNUC__) */
! /*************************************************************************
* These are the platforms that have only one compiler, or do not use inline
* assembler (and hence have common code for gcc and non-gcc compilers,
* if both are available).
*/
! #if defined(__alpha)
/*
* Correct multi-processor locking methods are explained in section 5.5.3
--- 413,451 ----
popl %ebx
}
! #endif /* defined(__i386__) && defined(USE_UNIVEL_CC) */
!
!
! /* These live in s_lock.c */
!
! #if defined(sun3)
! #define HAS_TEST_AND_SET
! typedef unsigned char slock_t;
! #endif
!
! #if defined(__sparc__)
! #define HAS_TEST_AND_SET
! typedef unsigned char slock_t;
! #endif
!
!
#endif /* defined(__GNUC__) */
! /*
! * -------------------------------------------------------------------------
* These are the platforms that have only one compiler, or do not use inline
* assembler (and hence have common code for gcc and non-gcc compilers,
* if both are available).
*/
! #if defined(__alpha__)
!
! #define HAS_TEST_AND_SET
! typedef unsigned long slock_t;
/*
* Correct multi-processor locking methods are explained in section 5.5.3
***************
*** 384,390 ****
*/
#if defined(__GNUC__)
! #define TAS(lock) tas(lock)
#define S_UNLOCK(lock) \
do \
{\
--- 455,461 ----
*/
#if defined(__GNUC__)
! #define TAS(lock) tas(lock)
#define S_UNLOCK(lock) \
do \
{\
***************
*** 435,441 ****
#endif /* defined(__GNUC__) */
! #endif /* __alpha */
#if defined(__hppa)
--- 506,512 ----
#endif /* defined(__GNUC__) */
! #endif /* __alpha__ */
#if defined(__hppa)
***************
*** 449,454 ****
--- 520,530 ----
* all words set to non-zero. tas() is in tas.s
*/
+ #define HAS_TEST_AND_SET
+ typedef struct
+ {
+ int sema[4];
+ } slock_t;
#define S_UNLOCK(lock) \
do { \
volatile slock_t *lock_ = (volatile slock_t *) (lock); \
***************
*** 466,471 ****
--- 542,550 ----
/*
* QNX 4 using WATCOM C
*/
+
+ #define HAS_TEST_AND_SET
+ typedef unsigned char slock_t;
#define TAS(lock) wc_tas(lock)
extern slock_t wc_tas(volatile slock_t *lock);
#pragma aux wc_tas =\
***************
*** 490,495 ****
--- 569,578 ----
* assembly from his NECEWS SVR4 port, but we probably ought to retain this
* for the R3000 chips out there.
*/
+
+ #define HAS_TEST_AND_SET
+ typedef unsigned long slock_t;
+
#include "mutex.h"
#define TAS(lock) (test_and_set(lock,1))
#define S_UNLOCK(lock) (test_then_and(lock,0))
***************
*** 504,509 ****
--- 587,597 ----
* member. (Basically same as SGI)
*
*/
+
+ #define HAS_TEST_AND_SET
+ #include "abi_mutex.h"
+ typedef abilock_t slock_t;
+
#define TAS(lock) (!acquire_lock(lock))
#define S_UNLOCK(lock) release_lock(lock)
#define S_INIT_LOCK(lock) init_lock(lock)
***************
*** 517,522 ****
--- 605,614 ----
*
* Note that slock_t on POWER/POWER2/PowerPC is int instead of char
*/
+
+ #define HAS_TEST_AND_SET
+ typedef unsigned int slock_t;
+
#define TAS(lock) _check_lock(lock, 0, 1)
#define S_UNLOCK(lock) _clear_lock(lock, 0)
#endif /* _AIX */
***************
*** 528,533 ****
--- 620,628 ----
* slock_t is defined as a struct mutex.
*/
+ #define HAS_TEST_AND_SET
+ typedef struct mutex slock_t;
+
#define S_LOCK(lock) mutex_lock(lock)
#define S_UNLOCK(lock) mutex_unlock(lock)
#define S_INIT_LOCK(lock) mutex_init(lock)
***************
*** 537,543 ****
! #else /* !HAS_TEST_AND_SET */
/*
* Fake spinlock implementation using semaphores --- slow and prone
--- 632,645 ----
! #ifndef HAS_TEST_AND_SET
!
! #ifdef HAVE_SPINLOCKS
! #error This platform does not support native spinlocks.
! #error To continue the compile, rerun configure using --without-spinlocks.
! #error However, performance will be poor.
! #error Please report this to pgsql-bugs@postgresql.org.
! #endif
/*
* Fake spinlock implementation using semaphores --- slow and prone
***************
*** 556,562 ****
#define S_INIT_LOCK(lock) s_init_lock_sema(lock)
#define TAS(lock) tas_sema(lock)
! #endif /* HAS_TEST_AND_SET */
--- 658,664 ----
#define S_INIT_LOCK(lock) s_init_lock_sema(lock)
#define TAS(lock) tas_sema(lock)
! #endif