Re: [PATCH] Windows x64 [repost]
От | Magnus Hagander |
---|---|
Тема | Re: [PATCH] Windows x64 [repost] |
Дата | |
Msg-id | 9837222c1001050300n2c01d913yd1a58f1227d359f7@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [PATCH] Windows x64 [repost] (Tsutomu Yamada <tsutomu@sraoss.co.jp>) |
Список | pgsql-hackers |
On Tue, Jan 5, 2010 at 09:14, Tsutomu Yamada <tsutomu@sraoss.co.jp> wrote: > Magnus Hagander <magnus@hagander.net> wrote: > > On Fri, Jan 1, 2010 at 20:45, Magnus Hagander <magnus@hagander.net> wrote: > > > On Fri, Dec 4, 2009 at 11:42, Tsutomu Yamada <tsutomu@sraoss.co.jp> wrote: > > >> > > >> 2) use appropriate macro and datatypes for Windows API. > > >> enables more than 32bits shared memory. > > > > > > Are you sure this one should use __noop, and not __nop? > > > > > > __noop: http://msdn.microsoft.com/en-us/library/s6btaxcs.aspx > > > __nop: http://msdn.microsoft.com/en-us/library/aa983381.aspx > > > > > > I think __nop is what we want? > > > > > > Also, that turns it into "nop" and not "rep nop", no? > > > > I did some more research, and __nop() is at least closer than > > __noop(), but it's still not the same. > > > > > > > Should we perhaps instead use __yield, per: > > > http://msdn.microsoft.com/en-us/library/2b2h26kx.aspx > > > > On further reading, __yield() is only available on Itanium. > > > This spinlock code was came from below. > http://archives.postgresql.org/pgsql-hackers/2008-07/msg00307.php > > Sorry, I didn't care which macro was better. > > I found 'YieldProcessor' in MSDN. > http://msdn.microsoft.com/en-us/library/ms687419%28VS.85%29.aspx > > YieldProcessor was defined in "winnt.h". > The definition changes depending on architecture and compiler version. > > __asm { rep nop }; > __mm_pause(); > __yield(); > > YieldProcessor become "__mm_pause()" in _AMD64_. > So "__mm_pause()" is better? Yeah, that seems right. I'll change it to that. -- Magnus HaganderMe: http://www.hagander.net/Work: http://www.redpill-linpro.com/
В списке pgsql-hackers по дате отправления: