[Ace-users] Re: [ACE Autoconf setup]: [ACE_HAS_POSIX_SEM_TIMEOUT never defined under LINUX]

sowayan at gmail.com sowayan at gmail.com
Sat Jul 28 07:14:43 CDT 2007


Peter,

There were a lot of enhancements made to autoconf after ACE 5.5.9,
which ACE 5.5.10 will have these enhancements. I believe ACE 5.5.10
might be released very soon (next week). You could download the head
version from the SVN repository and try it out to see if this is still
a problem.

Thanks,
Abdul

On Jul 28, 5:43 am, Peter Korf <pe... at niendo.de> wrote:
> Hi,
>
>  This problem is simular to BUG# 2836 - but here are two patches.
>  And I'm not permitted to edit bugs in product ACE, so I can not attach them.
>
>    ACE VERSION: 5.5.9
>
>    HOST MACHINE and OPERATING SYSTEM:
>    Linux 2.6.18.8-0.3-default #1 SMP
>    x86_64 x86_64 x86_64 GNU/Linux
>    SuSE 10.2
>
>    COMPILER NAME AND VERSION (AND PATCHLEVEL):
>    gcc (GCC) 4.1.2 20061115 (prerelease) (SUSE Linux)
>
>     SYNOPSIS:
> Neither ACE_HAS_POSIX_SEM_TIMEOUT or ACE_HAS_POSIX_SEM_TIMEOUT_EMULATION can
> be defined using ./configure, because there is no AC_DEFINE for it.
>
>     DESCRIPTION:
> Using the traditional build (not with ./configure) everything works fine.
> But using the ./configure script ACE_HAS_POSIX_SEM_TIMEOUT will not defined,
> because there is no test or anything in configure.ac for it.
>
> In the traditional build this definition is set to 1 under Linux.
>
> Without ACE_HAS_POSIX_SEM_TIMEOUT ACE will not wait on a timed out acquire for
> a semaphore.
>
> This problem should be reproducible on all systems defining ACE_HAS_POSIX_SEM
> and using the configure script.
>
>     REPEAT BY:
> Write a program containing this:
>   ACE_Time_Value tv = ACE_Time_Value(10) + ACE_OS::gettimeofday();
>   ACE_Semaphore* sem = new ACE_Semaphore(0);
>  
>   sem->acquire(tv); // <-- should wait 10 seconds
>
>   delete sem;
>
> Using ./configure the program will not stop for 10 seconds.
> Without using ./configure it will wait.
>
>    PATCHES:
> --- ACE-5.5.9_orig/ACE_wrappers/configure.ac      2007-05-24
> 05:45:22.000000000 +0000
> +++ ACE-5.5.9/ACE_wrappers/configure.ac   2007-07-27
> 06:16:11.000000000 +0000
> @@ -4405,6 +4405,10 @@
>      ,
>      [AC_DEFINE([ACE_LACKS_CONDATTR_PSHARED])])
>
> +  AC_CHECK_FUNC([pthread_cond_timedwait],
> +    [AC_DEFINE([ACE_HAS_POSIX_SEM_TIMEOUT])],
> +    [AC_DEFINE([ACE_HAS_POSIX_SEM_TIMEOUT_EMULATION])])
> +
>    AC_CHECK_FUNC([pthread_attr_setstackaddr],
>      ,
>      [AC_DEFINE([ACE_LACKS_THREAD_STACK_ADDR])])
>
> --- ACE-5.5.9_orig/ACE_wrappers/m4/config_h.m4    2006-12-14
> 00:14:22.000000000 +0000
> +++ ACE-5.5.9/ACE_wrappers/m4/config_h.m4 2007-07-27
> 06:43:41.000000000 +0000
> @@ -516,6 +516,12 @@
>  [Platform supports POSIX real-time semaphores (e.g., VxWorks and
>     Solaris)])
>
> +AH_TEMPLATE([ACE_HAS_POSIX_SEM_TIMEOUT],
> +[Compiler supports timed mutex acquisitions (e.g.
> pthread_mutex_timedlock()).])
> +
> +AH_TEMPLATE([ACE_HAS_POSIX_SEM_TIMEOUT_EMULATION],
> +[Emulation for timed mutex acquisitions.])
> +
>  AH_TEMPLATE([ACE_HAS_POSIX_TIME],
>  [Platform supports the POSIX struct timespec type])
>
> IMPORTANT NOTES:
> I don't know what ACE_HAS_POSIX_SEM_TIMEOUT_EMULATION is for, but it looks
> OK, if its defined here.
> Or the else entry in AC_CHECK_FUNC should be left empty.
>
> This is only tested on one system under one operating system!
>
> (Don't forget to run autoheader and autoconf after applying the patches)
>
> Thanks for developing and maintaing ACE,
> Peter




More information about the Ace-users mailing list