David,

any new thoughts?

Thanks
/R

On Apr 12, 2013, at 8:06 AM, Rickard Bäckman wrote:

> 
> On Apr 12, 2013, at 7:34 AM, David Holmes wrote:
> 
>> On 12/04/2013 3:01 PM, Rickard Bäckman wrote:
>>> 
>>> On Apr 12, 2013, at 1:04 AM, David Holmes wrote:
>>> 
>>>> On 11/04/2013 11:02 PM, Rickard Bäckman wrote:
>>>>> On Apr 11, 2013, at 2:39 PM, David Holmes wrote:
>>>>>> So what did you mean about pthread_semaphore (what is that anyway?) ??
>>>>> 
>>>>> Never mind, pthread condition variables.
>>>> 
>>>> Ah I see.
>>>> 
>>>>>> 
>>>>>> I really, really, really don't like seeing three versions of this class 
>>>>>> :( Can't BSD and Linux at least share a POSIX version? (And I wonder if 
>>>>>> we can actually mix-n-match UI threads on Solaris with POSIX semaphores 
>>>>>> on Solaris?)
>>>>> 
>>>>> I don't like it either, our OS code isn't really helpful when it comes do 
>>>>> reusing things :) Not sure how I would layout things to make them only 
>>>>> available on BSD (Not Mac) and Linux. I guess os_posix.hpp with lots of 
>>>>> #ifdefs, but I'm not sure I"m feeling that happy about that.
>>>> 
>>>> Why would the os_posix version need a lot of ifdefs?
>>> 
>>> Well, I guess we would need:
>>> 
>>> (in ifdef pseudo language)
>>> 
>>> #ifdef (LINUX || (BSD && !APPLE))
>>> …
>>> #endif
>> 
>> But if it isn't "posix" then we won't be building os_posix - right?
> 
> Linux, Solaris, Bsd & Mac builds and include os_posix. They are all 
> "implementing posix" we are just not using the same semaphore implementation 
> on all of them.
> 
>> 
>>> The second interesting problem this will get us into is that sem_t is not 
>>> declared in this context. Where do we put the #include <semaphore.h>? 
>>> Impossible in os_posix.hpp since it is included in the middle of a class 
>>> definition. I could put it in os.hpp in the #ifdef path that does the 
>>> jvm_platform.h includes, not sure if that is very pretty either.
>> 
>> Semaphores are already used by the signal handler thread - semaphore.h is 
>> included in os_linux.cpp etc, so why would os_posix be any different ?
>> 
>> But couldn't we just have a Semaphore.h/cpp with any needed ifdefs?
>> 
>>>> Do we really have four versions:
>>>> - linux (posix)
>>>> - BSD (posix)
>>>> - Solaris
>>>> - Mac (different to BSD?)
>>>> 
>>> 
>>> 3:
>>> 1) linux & bsd uses the sem_ interface
>>> 2) solaris uses the sema_ interface
>>> 3) mac uses the semaphore_ interface
>> 
>> Okay but if mac is BSD why can't we use bsd ie posix interface instead of 
>> the mach semaphore_ ?
> 
> Because apple decided not to implement sem_timedwait.
> On Solaris we use sema_ because sem_ requires us to link with -lrt which we 
> currently don't (and I'm not really feeling like adding it)
> 
>> 
>> 
>> BTW I like the idea of using the semaphore, we're just haggling on the 
>> details. ;-)
> 
> I'm fine with that :)
> 
> /R
> 
>> 
>> Thanks,
>> David
>> 
>>> /R
>>> 
>>>> ??
>>>> 
>>>> David
>>>> -----
>>> 
> 

Reply via email to