]> git.pld-linux.org Git - packages/db3.git/commitdiff
merge RH patches with POSIX mutex support.
authorkloczek <kloczek@pld-linux.org>
Fri, 8 Dec 2000 08:48:54 +0000 (08:48 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    db3-jbj.patch -> 1.1
    db3-linux.patch -> 1.1

db3-jbj.patch [new file with mode: 0644]
db3-linux.patch [new file with mode: 0644]

diff --git a/db3-jbj.patch b/db3-jbj.patch
new file mode 100644 (file)
index 0000000..362cacb
--- /dev/null
@@ -0,0 +1,237 @@
+--- db-3.1.17/dist/aclocal/mutex.m4.jbj        Sat Apr 29 15:03:49 2000
++++ db-3.1.17/dist/aclocal/mutex.m4    Sat Sep 30 01:03:03 2000
+@@ -307,6 +307,42 @@
+ }], [db_cv_mutex="ia64/gcc-assembly"])
+ fi
++dnl alphalinux/gcc: Linux
++if test "$db_cv_mutex" = no; then
++AC_TRY_RUN([main(){
++#if defined(__alpha__)
++#if defined(__linux__)
++      exit(0);
++#endif
++#endif
++      exit(1);
++}], [db_cv_mutex="alphalinux/gcc-assembly"])
++fi
++
++dnl sparc32linux/gcc: Linux
++if test "$db_cv_mutex" = no; then
++AC_TRY_RUN([main(){
++#if defined(__sparc__) && !defined(__arch64__)
++#if defined(__linux__)
++      exit(0);
++#endif
++#endif
++      exit(1);
++}], [db_cv_mutex="sparc32linux/gcc-assembly"])
++fi
++
++dnl sparc64linux/gcc: Linux
++if test "$db_cv_mutex" = no; then
++AC_TRY_RUN([main(){
++#if defined(__sparc__) && defined(__arch64__)
++#if defined(__linux__)
++      exit(0);
++#endif
++#endif
++      exit(1);
++}], [db_cv_mutex="sparc64linux/gcc-assembly"])
++fi
++
+ dnl: uts/cc: UTS
+ if test "$db_cv_mutex" = no; then
+ AC_TRY_RUN([main(){
+@@ -370,5 +406,11 @@
+                       AC_DEFINE(HAVE_MUTEX_UTS_CC_ASSEMBLY);;
+ x86/gcc-assembly)     ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
+                       AC_DEFINE(HAVE_MUTEX_X86_GCC_ASSEMBLY);;
++alphalinux/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
++                      AC_DEFINE(HAVE_MUTEX_ALPHA_LINUX_ASSEMBLY);;
++sparc32linux/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
++                      AC_DEFINE(HAVE_MUTEX_SPARC32_LINUX_ASSEMBLY);;
++sparc64linux/gcc-assembly) ADDITIONAL_OBJS="mut_tas${o} $ADDITIONAL_OBJS"
++                      AC_DEFINE(HAVE_MUTEX_SPARC64_LINUX_ASSEMBLY);;
+ esac
+ ])dnl
+--- db-3.1.17/dist/acconfig.h.jbj      Tue May 16 11:40:44 2000
++++ db-3.1.17/dist/acconfig.h  Sat Sep 30 01:03:03 2000
+@@ -48,6 +48,9 @@
+ #undef HAVE_MUTEX_WIN16
+ #undef HAVE_MUTEX_WIN32
+ #undef HAVE_MUTEX_X86_GCC_ASSEMBLY
++#undef HAVE_MUTEX_ALPHA_LINUX_ASSEMBLY
++#undef HAVE_MUTEX_SPARC32_LINUX_ASSEMBLY
++#undef HAVE_MUTEX_SPARC64_LINUX_ASSEMBLY
+ /* Define if building RPC client/server. */
+ #undef HAVE_RPC
+--- db-3.1.17/include/mutex.h.jbj      Sat Sep 30 01:10:35 2000
++++ db-3.1.17/include/mutex.h  Sat Sep 30 01:15:44 2000
+@@ -341,6 +341,29 @@
+ typedef unsigned char tsl_t;
+ #endif
++/*********************************************************************
++ * alphalinux/gcc assembly.
++ *********************************************************************/
++#ifdef HAVE_MUTEX_ALPHA_LINUX_ASSEMBLY
++typedef unsigned long int tsl_t;
++
++#define       MUTEX_ALIGN     8
++#endif
++
++/*********************************************************************
++ * sparc32linux/gcc assembly.
++ *********************************************************************/
++#ifdef HAVE_MUTEX_SPARC32_LINUX_ASSEMBLY
++typedef unsigned char tsl_t;
++#endif
++
++/*********************************************************************
++ * sparc64linux/gcc assembly.
++ *********************************************************************/
++#ifdef HAVE_MUTEX_SPARC64_LINUX_ASSEMBLY
++typedef unsigned char tsl_t;
++#endif
++
+ /*
+  * Mutex alignment defaults to one byte.
+  *
+--- db-3.1.17/mutex/sparc32linux.gcc.jbj       Sat Sep 30 01:03:03 2000
++++ db-3.1.17/mutex/sparc32linux.gcc   Sat Sep 30 01:03:03 2000
+@@ -0,0 +1,30 @@
++
++/*
++ * The ldstub instruction takes the location specified by its first argument
++ * (a register containing a memory address) and loads its contents into its
++ * second argument (a register) and atomically sets the contents the location
++ * specified by its first argument to a byte of 1s.  (The value in the second
++ * argument is never read, but only overwritten.)
++ *
++ * The stbar is needed for v8, and is implemented as membar #sync on v9,
++ + so is functional there as well.  For v7, stbar may generate an illegal
++ + instruction and we have no way to tell what we're running on.  Some
++ + operating systems notice and skip this instruction in the fault handler.
++ *
++ * For gcc/sparc, 0 is clear, 1 is set.
++ *
++ * Adapted from glibc-2.1.94 pthreads/sysdeps/sparc/sparc32/pspinlock.c.
++ */
++#define       MUTEX_SET(tsl) ({                                               \
++      register tsl_t *__l = (tsl);                                    \
++      register tsl_t __r;                                             \
++      __asm__ volatile                                                \
++          ("ldstub [%1], %0"                                          \
++          : "=r" (__r)                                                \
++          : "r" (__l)                                                 \
++          : "memory");                                                \
++      !__r;                                                           \
++})
++
++#define       MUTEX_UNSET(tsl)        (*(tsl) = 0)
++#define       MUTEX_INIT(tsl)         MUTEX_UNSET(tsl)
+--- db-3.1.17/mutex/mut_tas.c.jbj      Wed May 31 17:38:14 2000
++++ db-3.1.17/mutex/mut_tas.c  Sat Sep 30 01:03:03 2000
+@@ -43,6 +43,15 @@
+ #ifdef HAVE_MUTEX_X86_GCC_ASSEMBLY
+ #include "x86.gcc"
+ #endif
++#ifdef HAVE_MUTEX_ALPHA_LINUX_ASSEMBLY
++#include "alphalinux.gcc"
++#endif
++#ifdef HAVE_MUTEX_SPARC32_LINUX_ASSEMBLY
++#include "sparc32linux.gcc"
++#endif
++#ifdef HAVE_MUTEX_SPARC64_LINUX_ASSEMBLY
++#include "sparc64linux.gcc"
++#endif
+ #ifdef DIAGNOSTIC
+ #undef        MSG1
+--- db-3.1.17/mutex/sparc64linux.gcc.jbj       Sat Sep 30 01:03:03 2000
++++ db-3.1.17/mutex/sparc64linux.gcc   Sat Sep 30 01:03:03 2000
+@@ -0,0 +1,33 @@
++
++/*
++ * $Id$
++ *
++ * The ldstub instruction takes the location specified by its first argument
++ * (a register containing a memory address) and loads its contents into its
++ * second argument (a register) and atomically sets the contents the location
++ * specified by its first argument to a byte of 1s.  (The value in the second
++ * argument is never read, but only overwritten.)
++ *
++ * The stbar is needed for v8, and is implemented as membar #sync on v9,
++ + so is functional there as well.  For v7, stbar may generate an illegal
++ + instruction and we have no way to tell what we're running on.  Some
++ + operating systems notice and skip this instruction in the fault handler.
++ *
++ * For gcc/sparc, 0 is clear, 1 is set.
++ *
++ * Adapted from glibc-2.1.94 pthreads/sysdeps/sparc/sparc64/pspinlock.c.
++ */
++#define       MUTEX_SET(tsl) ({                                               \
++      register tsl_t *__l = (tsl);                                    \
++      register tsl_t __r;                                             \
++      __asm__ volatile                                                \
++          ("ldstub [%1], %0\n"                                        \
++          "membar #StoreLoad | #StoreStore"                           \
++          : "=r" (__r)                                                \
++          : "r" (__l)                                                 \
++          : "memory");                                                \
++      !__r;                                                           \
++})
++
++#define       MUTEX_UNSET(tsl)        (*(tsl) = 0)
++#define       MUTEX_INIT(tsl)         MUTEX_UNSET(tsl)
+--- db-3.1.17/mutex/alphalinux.gcc.jbj Sat Sep 30 01:03:03 2000
++++ db-3.1.17/mutex/alphalinux.gcc     Sat Sep 30 01:03:03 2000
+@@ -0,0 +1,46 @@
++ * For gcc/alpha.
++ *
++ * Should return 0 if could not acquire the lock, 1 if lock was acquired
++ * properly.
++ */
++#ifdef __GNUC__
++static inline int
++MUTEX_SET(tsl_t *tsl) {
++      register tsl_t *__l = tsl;
++      unsigned long int __r;
++      unsigned long int temp;
++      __asm__ volatile(
++              ("1:    ldl_l   %0,%1\n"
++              "       and     %0,%3,%2\n"
++              "       bne     %2,2f\n"
++              "       xor     %0,%3,%0\n"
++              "       stl_c   %0,%1\n"
++              "       beq     %0,3f\n"
++              "       mb\n"
++              "2:\n"
++              ".subsection 2\n"
++              "3:     br      1b\n"
++              ".previous"
++              : "=&r" (temp), "=m" (*__l), "=&r" (__r)
++              : "Ir" (1UL), "m" (*__l));
++      return __r;
++}
++
++/*
++ * Unset mutex. Judging by Alpha Architecture Handbook, the mb instruction
++ * might be necessary before unlocking
++ */
++static inline int
++MUTEX_UNSET(tsl_t *tsl) {
++      asm volatile("  mb\n");
++      return *tsl = 0;
++}
++#endif
++
++#ifdef __DECC
++#include <alpha/builtins.h>
++#define       MUTEX_SET(tsl)          (__LOCK_LONG_RETRY((tsl), 1) != 0)
++#define       MUTEX_UNSET(tsl)        (*(tsl) = 0)
++#endif
++
++#define       MUTEX_INIT(tsl)         MUTEX_UNSET(tsl)
diff --git a/db3-linux.patch b/db3-linux.patch
new file mode 100644 (file)
index 0000000..e59c982
--- /dev/null
@@ -0,0 +1,25 @@
+--- db-3.0.55/mutex/mut_pthread.c.linux        Mon Apr 24 09:25:36 2000
++++ db-3.0.55/mutex/mut_pthread.c      Mon Apr 24 09:36:31 2000
+@@ -86,16 +86,22 @@
+       if (!F_ISSET(mutexp, MUTEX_THREAD)) {
+               ret = pthread_condattr_init(&condattr);
++/* XXX linux threads implementation has not attributes for conditions. */
++#if !defined(__linux__)
+               if (ret == 0)
+                       ret = pthread_condattr_setpshared(
+                           &condattr, PTHREAD_PROCESS_SHARED);
++#endif
+               condattrp = &condattr;
+               if (ret == 0)
+                       ret = pthread_mutexattr_init(&mutexattr);
++/* XXX linux threads implementation has not attributes for mutexes. */
++#if !defined(__linux__)
+               if (ret == 0)
+                       ret = pthread_mutexattr_setpshared(
+                           &mutexattr, PTHREAD_PROCESS_SHARED);
++#endif
+               mutexattrp = &mutexattr;
+       }
This page took 0.07271 seconds and 4 git commands to generate.