From: Bruce Momjian <pgman@candle.pha.pa.us>
To: Shridhar Daithankar <shridhar_daithankar@persistent.co.in>
Cc: PostgreSQL-patches <pgsql-patches@postgresql.org>
Subject: Re: [HACKERS] ECPG thread-safety
Date: Mon, 26 May 2003 13:06:36 -0400 (EDT)
Message-ID: <200305261706.h4QH6aB06687@candle.pha.pa.us> (raw)
In-Reply-To: <200303282226.20016.shridhar_daithankar@nospam.persistent.co.in>
Shridhar Daithankar wrote:
> On Friday 28 March 2003 21:45, you wrote:
> > For testing the library, I think it is enough to init an thread attr. like
> > pthread_init_attr, that should be enough to test header and library.
>
> And compiler flags, I forgot.. -pthread on freeBSD/gcc and -D_REENTRANT on
> linux at least. FreeBSD needs _THREAD_SAFE as well IIRC.
Are you saying FreeBSD actually has a -pthread compiler flag? And Linux
needs REENTRANT. We can do that. Here is an updated patch. Of course,
I need to run autoconf too.
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
Index: configure.in
===================================================================
RCS file: /cvsroot/pgsql-server/configure.in,v
retrieving revision 1.253
diff -c -c -r1.253 configure.in
*** configure.in 22 May 2003 16:39:28 -0000 1.253
--- configure.in 26 May 2003 17:05:52 -0000
***************
*** 506,511 ****
--- 506,514 ----
[ --without-zlib do not use Zlib])
+ #
+ # Elf
+ #
# Assume system is ELF if it predefines __ELF__ as 1,
# otherwise believe host_os based default.
***************
*** 527,533 ****
--- 530,560 ----
fi])
AC_SUBST(ELF_SYS)
+ #
+ # Pthreads
+ #
+ AC_CHECK_HEADER(pthread.h,
+ [AC_DEFINE(HAVE_THREADS, 1, [Define to 1 if you have the threads interface.])])
+ if test ! -z "$HAVE_THREADS"
+ then
+ case $host_os in
+ # BSD/OS and NetBSD require no special libraries or flags
+ netbsd*|bsdi*) ;;
+ freebsd*) THREAD_LIBS="-lc_r"
+ THREAD_CFLAGS="-pthread" ;;
+ linux*) THREAD_LIBS="-lpthread"
+ THREAD_CFLAGS="-D_REENTRANT" ;;
+ # other operating systems might fail because they have pthread.h but need
+ # special libs we don't know about yet.
+ esac
+ fi
+ AC_SUBST(THREAD_LIBS)
+ AC_SUBST(THREAD_CFLAGS)
+
+ #
+ # Assignments
+ #
CPPFLAGS="$CPPFLAGS $INCLUDES"
LDFLAGS="$LDFLAGS $LIBDIRS"
Index: src/Makefile.global.in
===================================================================
RCS file: /cvsroot/pgsql-server/src/Makefile.global.in,v
retrieving revision 1.162
diff -c -c -r1.162 Makefile.global.in
*** src/Makefile.global.in 11 May 2003 20:50:53 -0000 1.162
--- src/Makefile.global.in 26 May 2003 17:05:54 -0000
***************
*** 152,157 ****
--- 152,160 ----
TK_LIB_SPEC = @TK_LIB_SPEC@
TK_XINCLUDES = @TK_XINCLUDES@
+ THREAD_CFLAGS = @THREAD_CFLAGS@
+ THREAD_LIBS = @THREAD_LIBS@
+
have_docbook = @have_docbook@
DOCBOOKSTYLE = @DOCBOOKSTYLE@
COLLATEINDEX = @COLLATEINDEX@
Index: src/include/pg_config.h.in
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/pg_config.h.in,v
retrieving revision 1.47
diff -c -c -r1.47 pg_config.h.in
*** src/include/pg_config.h.in 22 May 2003 16:39:30 -0000 1.47
--- src/include/pg_config.h.in 26 May 2003 17:05:56 -0000
***************
*** 465,470 ****
--- 465,473 ----
/* Define to 1 if you have the <termios.h> header file. */
#undef HAVE_TERMIOS_H
+ /* Define to 1 if you have the <pthread.h> header file. */
+ #undef HAVE_THREADS
+
/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
`HAVE_STRUCT_TM_TM_ZONE' instead. */
#undef HAVE_TM_ZONE
Attachments:/pgpatches/threads (text/plain, 2.6K) download
Index: configure.in
===================================================================
RCS file: /cvsroot/pgsql-server/configure.in,v
retrieving revision 1.253
diff -c -c -r1.253 configure.in
*** configure.in 22 May 2003 16:39:28 -0000 1.253
--- configure.in 26 May 2003 17:05:52 -0000
***************
*** 506,511 ****
--- 506,514 ----
[ --without-zlib do not use Zlib])
+ #
+ # Elf
+ #
# Assume system is ELF if it predefines __ELF__ as 1,
# otherwise believe host_os based default.
***************
*** 527,533 ****
--- 530,560 ----
fi])
AC_SUBST(ELF_SYS)
+ #
+ # Pthreads
+ #
+ AC_CHECK_HEADER(pthread.h,
+ [AC_DEFINE(HAVE_THREADS, 1, [Define to 1 if you have the threads interface.])])
+ if test ! -z "$HAVE_THREADS"
+ then
+ case $host_os in
+ # BSD/OS and NetBSD require no special libraries or flags
+ netbsd*|bsdi*) ;;
+ freebsd*) THREAD_LIBS="-lc_r"
+ THREAD_CFLAGS="-pthread" ;;
+ linux*) THREAD_LIBS="-lpthread"
+ THREAD_CFLAGS="-D_REENTRANT" ;;
+ # other operating systems might fail because they have pthread.h but need
+ # special libs we don't know about yet.
+ esac
+ fi
+ AC_SUBST(THREAD_LIBS)
+ AC_SUBST(THREAD_CFLAGS)
+
+ #
+ # Assignments
+ #
CPPFLAGS="$CPPFLAGS $INCLUDES"
LDFLAGS="$LDFLAGS $LIBDIRS"
Index: src/Makefile.global.in
===================================================================
RCS file: /cvsroot/pgsql-server/src/Makefile.global.in,v
retrieving revision 1.162
diff -c -c -r1.162 Makefile.global.in
*** src/Makefile.global.in 11 May 2003 20:50:53 -0000 1.162
--- src/Makefile.global.in 26 May 2003 17:05:54 -0000
***************
*** 152,157 ****
--- 152,160 ----
TK_LIB_SPEC = @TK_LIB_SPEC@
TK_XINCLUDES = @TK_XINCLUDES@
+ THREAD_CFLAGS = @THREAD_CFLAGS@
+ THREAD_LIBS = @THREAD_LIBS@
+
have_docbook = @have_docbook@
DOCBOOKSTYLE = @DOCBOOKSTYLE@
COLLATEINDEX = @COLLATEINDEX@
Index: src/include/pg_config.h.in
===================================================================
RCS file: /cvsroot/pgsql-server/src/include/pg_config.h.in,v
retrieving revision 1.47
diff -c -c -r1.47 pg_config.h.in
*** src/include/pg_config.h.in 22 May 2003 16:39:30 -0000 1.47
--- src/include/pg_config.h.in 26 May 2003 17:05:56 -0000
***************
*** 465,470 ****
--- 465,473 ----
/* Define to 1 if you have the <termios.h> header file. */
#undef HAVE_TERMIOS_H
+ /* Define to 1 if you have the <pthread.h> header file. */
+ #undef HAVE_THREADS
+
/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
`HAVE_STRUCT_TM_TM_ZONE' instead. */
#undef HAVE_TM_ZONE
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-interfaces@postgresql.org
Cc: pgman@candle.pha.pa.us, shridhar_daithankar@persistent.co.in, pgsql-patches@postgresql.org
Subject: Re: [HACKERS] ECPG thread-safety
In-Reply-To: <200305261706.h4QH6aB06687@candle.pha.pa.us>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox