Re: [PATCH] Windows x64 [repost]
От | Tsutomu Yamada |
---|---|
Тема | Re: [PATCH] Windows x64 [repost] |
Дата | |
Msg-id | 23248.1262679263@srapc2360.sra.co.jp обсуждение исходный текст |
Ответ на | [PATCH] Windows x64 (Tsutomu Yamada <tsutomu@sraoss.co.jp>) |
Ответы |
Re: [PATCH] Windows x64 [repost]
|
Список | pgsql-hackers |
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 anddatatypes 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 stillnot 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? // test program #include <windows.h> main() { YieldProcessor(); } // end // cl /E test.c > out.i // tail out.i // # I recommend redirecting to file, The output become large. Tsutomu Yamada SRA OSS, Inc. Japan
В списке pgsql-hackers по дате отправления: