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

sowayan at gmail.com sowayan at gmail.com
Sat Jul 28 08:01:00 CDT 2007


Peter,

Also the upcoming ACE 5.5.10 has Semaphore timeout emulation turned on
by default when the platform you're using doesn't support them
natively. This wasn't the case for ACE 5.5.9. ACE 5.5.10 should be out
soon, so I'd try that out first and see if it helps.

Thanks,
Abdul

On Jul 28, 8:14 am, sowa... at gmail.com wrote:
> 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- Hide quoted text -
>
> - Show quoted text -




More information about the Ace-users mailing list