[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: How to detect NPTL at compile time

Jakub Jelinek wrote:
On Fri, Apr 04, 2003 at 02:51:51PM -0800, Wan-Teh Chang wrote:

Red Hat Linux 9 ships with the NPTL.  Our code
contains workarounds for LinuxThreads, and I
want to disable the workarounds if we are compiling
against NPTL.  How do I detect whether the pthread
library is LinuxThreads or NPTL at compile time?
Can I use the glibc version number to determine
that (i.e., NPTL if glibc 2.3 or higher)?

RH-9 has both NPTL and LinuxThreads. Your program could run with either library. You should detect library type and disable LT workarounds at runtime, not compile time.


int isnptl (void)
  size_t n = confstr (_CS_GNU_LIBPTHREAD_VERSION, NULL, 0);
  if (n > 0)
      char *buf = alloca (n);
      confstr (_CS_GNU_LIBPTHREAD_VERSION, buf, n);
      if (strstr (buf, "NPTL"))
        return 1;
  return 0;

As pointed out by another email today, apparently confstr() doesn't work correctly on RH-9. It always returns "NPTL 0.29" even I'm running with LinuxThreads. Any workaround for that?


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]