[reSIProcate] RecursiveMutex for APPLE and INTEL_COMPILER

Adam Roach adam at nostrum.com
Wed Sep 26 13:39:00 CDT 2007


Okay; I'm uncommenting the asserts, adding some preprocessor warnings, 
and checking it in in a few minutes.

/a

On 9/26/07 1:31 PM, Byron Campen wrote:
>     Agreed (on the assert(0)).
>
> Best regards,
> Byron Campen
>
>> This seems reasonable to me.  When you check in that change, could you
>> also uncomment the assert(0)'s in the code?  Since resip doesn't use
>> them, it doesn't matter to resip itself what the code does, but having
>> a mutex class that can compile as a nop seems bad.
>>
>> Bruce
>>
>>
>> On 9/25/07, Adam Roach <adam at nostrum.com> wrote:
>>> Thanks for doing the research, Byron. I'd hate to break things for 10.1
>>> when keeping them fixed is easy.
>>>
>>> I propose the following (which I will commit shortly unless someone
>>> objects):
>>>
>>> Index: rutil/RecursiveMutex.cxx
>>> ===================================================================
>>> --- rutil/RecursiveMutex.cxx    (revision 7264)
>>> +++ rutil/RecursiveMutex.cxx    (working copy)
>>> @@ -18,7 +18,10 @@
>>>
>>>  using resip::RecursiveMutex;
>>>
>>> -#if defined( __APPLE__ )  || defined (__INTEL_COMPILER)
>>> +// .abr. OS X 10.2 is OS_MAJOR_VER 6. Prior to this, OS X did not 
>>> support
>>> +// recursive mutexes.
>>> +
>>> +#if (defined( __APPLE__ ) && OS_MAJOR_VER < 6) || defined
>>>
>>> (__INTEL_COMPILER)
>>>  // !cj! need to write apple/intel mutex stuff
>>>  namespace resip
>>>  {
>>> Index: build/Makefile.all
>>> ===================================================================
>>> --- build/Makefile.all  (revision 7264)
>>> +++ build/Makefile.all  (working copy)
>>> @@ -90,9 +90,19 @@
>>>
>>>  # Detect and normalize the OSTYPE
>>>  ifndef OSTYPE
>>> -OSTYPE = $(shell uname)
>>> +OSTYPE       := $(shell uname)
>>> +OSVER        := $(shell uname -r)
>>>  endif
>>>
>>> +OS_MAJOR_VER := $(word 1,$(subst ., ,$(OSVER)) 0 0 0 0)
>>> +OS_MINOR_VER := $(word 2,$(subst ., ,$(OSVER)) 0 0 0 0)
>>> +OS_POINT_VER := $(word 3,$(subst ., ,$(OSVER)) 0 0 0 0)
>>> +OS_PATCH_VER := $(word 4,$(subst ., ,$(OSVER)) 0 0 0 0)
>>> +DEFINES += OS_MAJOR_VER=$(OS_MAJOR_VER) \
>>> +           OS_MINOR_VER=$(OS_MINOR_VER) \
>>> +           OS_POINT_VER=$(OS_POINT_VER) \
>>> +           OS_PATCH_VER=$(OS_PATCH_VER)
>>> +
>>>  ifeq ($(OSTYPE),solaris)
>>>  OSTYPE = SunOS
>>>  endif
>>>
>>>
>>>
>>>
>>> On 9/25/07 3:29 PM, Byron Campen wrote:
>>>>       After some digging, it appears that support for recursive 
>>>> mutexes
>>>> was added to OS X in version 10.2. Is this sufficiently far in the
>>>> past (last update released was 10.2.8 in Oct 2003) that we are
>>>> comfortable with removing the defined(__APPLE__) check?
>>>>
>>>> Best regards,
>>>> Byron Campen
>>>>
>>>>
>>>>> Why is this ifdef to not compile RecursiveMutex in the code?
>>>>>
>>>>> #if defined( __APPLE__ )  || defined (__INTEL_COMPILER)
>>>>> // !cj! need to write apple/intel mutex stuff
>>>>> namespace resip
>>>>> {
>>>>>
>>>>> RecursiveMutex::RecursiveMutex()
>>>>> {
>>>>>    //assert(0);
>>>>> }
>>>>> ...
>>>>>
>>>>>
>>>>> OSX (at least 10.4) can compile the regular implementation just
>>>>> fine---we just removed the defined(__APPLE__) and recursive mutexes
>>>>> work.  I don't know about the __INTEL_COMPILER, but why are all the
>>>>> assert(0)'s commented out?  Seems like code that tries to use this
>>>>> would want to know it's not really getting a mutex.
>>>>>
>>>>> Bruce
>>>>> _______________________________________________
>>>>> resiprocate-devel mailing list
>>>>> resiprocate-devel at list.resiprocate.org
>>>>> https://list.resiprocate.org/mailman/listinfo/resiprocate-devel
>>>>>
>>>>
>>>> _______________________________________________
>>>> resiprocate-devel mailing list
>>>
>>>> resiprocate-devel at resiprocate.org
>>>
>>>> https://list.resiprocate.org/mailman/listinfo/resiprocate-devel
>>>>
>>>
>>>
>




More information about the resiprocate-devel mailing list