[Ace-users] Re: [ace-bugs] [ACE Autoconf setup]:
[ACE_HAS_POSIX_SEM_TIMEOUT neverdefined under LINUX]
Johnny Willemsen
jwillemsen at remedy.nl
Mon Jul 30 02:29:36 CDT 2007
Hi,
Thanks for reporting this. I have fixed this in the main archive.
Regards,
Johnny Willemsen
Remedy IT
Postbus 101
2650 AC Berkel en Rodenrijs
The Netherlands
www.theaceorb.nl / www.remedy.nl
*** Integrated compile and test statistics see
http://scoreboard.theaceorb.nl ***
*** Commercial service and support for ACE/TAO/CIAO ***
*** See http://www.theaceorb.nl/en/support.html ***
> 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
>
> _______________________________________________
> ace-bugs mailing list
> ace-bugs at mail.cse.wustl.edu
> http://mail.cse.wustl.edu/mailman/listinfo/ace-bugs
>
More information about the Ace-users
mailing list