Re: [PATCH] Windows x64 [repost]

From: Magnus Hagander <magnus(at)hagander(dot)net>
To: Tsutomu Yamada <tsutomu(at)sraoss(dot)co(dot)jp>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: [PATCH] Windows x64 [repost]
Date: 2010-01-05 11:00:42
Message-ID: 9837222c1001050300n2c01d913yd1a58f1227d359f7@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Jan 5, 2010 at 09:14, Tsutomu Yamada <tsutomu(at)sraoss(dot)co(dot)jp> wrote:
> Magnus Hagander <magnus(at)hagander(dot)net> wrote:
>  > On Fri, Jan 1, 2010 at 20:45, Magnus Hagander <magnus(at)hagander(dot)net> wrote:
>  > > On Fri, Dec 4, 2009 at 11:42, Tsutomu Yamada <tsutomu(at)sraoss(dot)co(dot)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 Hagander
Me: http://www.hagander.net/
Work: http://www.redpill-linpro.com/

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tsutomu Yamada 2010-01-05 11:58:51 Re: [PATCH] Windows x64 [repost]
Previous Message Dave Page 2010-01-05 10:52:20 libpq naming on Win64