[vlc-devel] [PATCH 1/6] os2: implement vlc_once()
KO Myung-Hun
komh78 at gmail.com
Mon Apr 9 12:27:52 CEST 2018
Rémi Denis-Courmont wrote:
> Le sunnuntaina 8. huhtikuuta 2018, 10.01.32 EEST KO Myung-Hun a écrit :
>>>> And compiler cannot see the internal of cb().
>>>
>>> With LTO and IPA combined, a compiler can propagate vlc_CPU_init as the cb
>>> value into vlc_once() from vlc_CPU().
>>
>> Then, are you saying that with them, compiler can reorder a call to
>> function pointer and others ?
>
> The compiler can do *anything* as long as it does not contradict the
> observable side effects.
>
vlc_once() is an exported API. So cb() is still opaque.
>>> Not that it matters much. The problem is not a lack of release fence.
>>> Unlocking the mutex provides a release fence. The problem is the lack fo
>>> acquire fence before reading the flag.
>>
>> I'm saying that acquire fence is not necessary in this case, especially
>> on x86 because x86 guarantees "Writes by a single processor are observed
>> in the same order by all processors" in Intel Manual Vol 3A 8.2.2.
>
> You still need a compiler-level acquire fence to ensure the load instruction
> actually happens.
>
Acquire fence is implied on x86 on which OS/2 runs. Of course, it would
be good to use acquire fence explicitly. However, no problem even if
without it on x86.
Anyway, I already submitted the patch using C11 atomic functions. Review
it, please...
https://mailman.videolan.org/pipermail/vlc-devel/2018-April/118556.html
--
KO Myung-Hun
Using Mozilla SeaMonkey 2.7.2
Under OS/2 Warp 4 for Korean with FixPak #15
In VirtualBox v4.1.32 on Intel Core i7-3615QM 2.30GHz with 8GB RAM
Korean OS/2 User Community : http://www.os2.kr/
More information about the vlc-devel
mailing list