> On Oct 11, 2019, at 4:47 PM, Garrett D'Amore <garr...@damore.org> wrote:
> 
> 
>> On 10/11/2019 4:32:11 PM, Richard Elling <richard.ell...@richardelling.com> 
>> wrote:
>> 
>> 
>> 
>>> On Oct 11, 2019, at 2:50 PM, Garrett D'Amore <garr...@damore.org 
>>> <mailto:garr...@damore.org>> wrote:
>>> 
>>> The issue is that you can't just arbitrarily throw a mutex out there -- you 
>>> have to have a place to *store* that, and you can't fit it inside the 
>>> 64-bit value.  With a 64-bit ISA this isn't usually a problem, but with 
>>> 32-bit ISAs it is.
>> 
>> I'm not sure how this affects the compiler builtin atomics since they don't 
>> add mutexes.
> Garrett D'Amore: 
> 
> You're missing the point.  If you have a 32-bit ISA that doesn't offer a 
> 64-bit atomic operation, then you have to fabricate one.  Fabricating one 
> requires a mutex, spinlock, or some other value. 

Or a 64-bit memory barrier. No need for 64-bit ALU.
 -- richard

> 
> What this means is that compiler builtins can't be used to solve the problem 
> of supporting a 64-bit atomic when the underlying platform lacks support. So 
> you have to solve it in software typically, which is what I think this whole 
> discussion is about.
> 
>  - Garrett
> 
>>  -- richard
>> 
>>> 
>>> The only way to store the mutex (which could just be a spinlock) is to have 
>>> some other place that has it -- typically in library code.  Allocation of 
>>> other objects like that normally falls outside the scope of a compiler 
>>> builtin (modulo bringing in a separate runtime object file, which can work 
>>> for user programs but generally not for kernels.)
>>>> On 10/11/2019 11:38:57 AM, Richard Elling 
>>>> <richard.ell...@richardelling.com 
>>>> <mailto:richard.ell...@richardelling.com>> wrote:
>>>> 
>>>> 
>>>> 
>>>>> On Oct 9, 2019, at 11:41 AM, Garrett D'Amore <garr...@damore.org 
>>>>> <mailto:garr...@damore.org>> wrote:
>>>>> 
>>>>> I don't think 32-bit compilers generally offer builtins for 64-bit 
>>>>> atomics.  Frankly, they can't really unless the underlying ISA provides 
>>>>> some additional support for this in particular.
>>>> 
>>>> Yes, that is why the builtins exist... the underlying ISA may have a 
>>>> method that is not part of the C language.
>>>> 
>>>> Worst case, mutex protection will work... slowly.
>>>>  -- richard
>>>> 
>>>>> 
>>>>> To implement a 64-bit atomic on a 32-bit architecture, you generally 
>>>>> needs some additional state somewhere -- typically some sort of mutex or 
>>>>> spinlock.  That has to live somewhere.  (You *might* be able to have a 
>>>>> compiler builtin that provides this along with a compiler runtime which 
>>>>> provides an instance of the spinlock somewhere in the program's data 
>>>>> section.  I think this sort of "builtin" (which isn't really builtin at 
>>>>> all) generally can't be used in operating system kernels -- e.g. with 
>>>>> --freestanding.)
>>>>>> On 10/9/2019 11:26:40 AM, Richard Elling 
>>>>>> <richard.ell...@richardelling.com 
>>>>>> <mailto:richard.ell...@richardelling.com>> wrote:
>>>>>> 
>>>>>> If it is possible to specify a compiler version, it might be easier to 
>>>>>> use the compiler 
>>>>>> builtin atomics. Just sayin' 
>>>>>> -- richard 
>>>>>> 
>>>>>> 
>>>>>> ------------------------------------------ 
>>>>>> openzfs: openzfs-developer 
>>>>>> Permalink: 
>>>>>> https://openzfs.topicbox.com/groups/developer/T3ee8a81d5f09f2ec-Mabd6346845b79e16d16f57c2
>>>>>>  
>>>>>> <https://openzfs.topicbox.com/groups/developer/T3ee8a81d5f09f2ec-Mabd6346845b79e16d16f57c2>
>>>>>> Delivery options: 
>>>>>> https://openzfs.topicbox.com/groups/developer/subscription 
>>>>>> <https://openzfs.topicbox.com/groups/developer/subscription>
> 
> openzfs <https://openzfs.topicbox.com/latest> / openzfs-developer / see 
> discussions <https://openzfs.topicbox.com/groups/developer> + participants 
> <https://openzfs.topicbox.com/groups/developer/members> + delivery options 
> <https://openzfs.topicbox.com/groups/developer/subscription>Permalink 
> <https://openzfs.topicbox.com/groups/developer/T3ee8a81d5f09f2ec-M620340096d08af342b9b67d2>

------------------------------------------
openzfs: openzfs-developer
Permalink: 
https://openzfs.topicbox.com/groups/developer/T3ee8a81d5f09f2ec-M5de9d8b8d3f1acdecbed9ddc
Delivery options: https://openzfs.topicbox.com/groups/developer/subscription

Reply via email to