diff options
| author | Sam Varshavchik | 2013-08-19 16:39:41 -0400 | 
|---|---|---|
| committer | Sam Varshavchik | 2013-08-25 14:43:51 -0400 | 
| commit | 9c45d9ad13fdf439d44d7443ae75da15ea0223ed (patch) | |
| tree | 7a81a04cb51efb078ee350859a64be2ebc6b8813 /pcp/intl/threadlib.c | |
| parent | a9520698b770168d1f33d6301463bb70a19655ec (diff) | |
| download | courier-libs-9c45d9ad13fdf439d44d7443ae75da15ea0223ed.tar.bz2 | |
Initial checkin
Imported from subversion report, converted to git. Updated all paths in
scripts and makefiles, reflecting the new directory hierarchy.
Diffstat (limited to 'pcp/intl/threadlib.c')
| -rw-r--r-- | pcp/intl/threadlib.c | 73 | 
1 files changed, 73 insertions, 0 deletions
| diff --git a/pcp/intl/threadlib.c b/pcp/intl/threadlib.c new file mode 100644 index 0000000..107e335 --- /dev/null +++ b/pcp/intl/threadlib.c @@ -0,0 +1,73 @@ +/* Multithreading primitives. +   Copyright (C) 2005-2009 Free Software Foundation, Inc. + +   This program is free software: you can redistribute it and/or modify +   it under the terms of the GNU Lesser General Public License as published by +   the Free Software Foundation; either version 2.1 of the License, or +   (at your option) any later version. + +   This program is distributed in the hope that it will be useful, +   but WITHOUT ANY WARRANTY; without even the implied warranty of +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +   GNU Lesser General Public License for more details. + +   You should have received a copy of the GNU Lesser General Public License +   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2005.  */ + +#include <config.h> + +/* ========================================================================= */ + +#if USE_POSIX_THREADS + +/* Use the POSIX threads library.  */ + +# include <pthread.h> +# include <stdlib.h> + +# if PTHREAD_IN_USE_DETECTION_HARD + +/* The function to be executed by a dummy thread.  */ +static void * +dummy_thread_func (void *arg) +{ +  return arg; +} + +int +glthread_in_use (void) +{ +  static int tested; +  static int result; /* 1: linked with -lpthread, 0: only with libc */ + +  if (!tested) +    { +      pthread_t thread; + +      if (pthread_create (&thread, NULL, dummy_thread_func, NULL) != 0) +        /* Thread creation failed.  */ +        result = 0; +      else +        { +          /* Thread creation works.  */ +          void *retval; +          if (pthread_join (thread, &retval) != 0) +            abort (); +          result = 1; +        } +      tested = 1; +    } +  return result; +} + +# endif + +#endif + +/* ========================================================================= */ + +/* This declaration is solely to ensure that after preprocessing +   this file is never empty.  */ +typedef int dummy; | 
