Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: [HACKERS] Current Win32 port status


  • From: Andrew Dunstan <andrew(at)dunslane(dot)net>
  • To: pgsql-hackers-win32(at)postgresql(dot)org
  • Subject: Re: [HACKERS] Current Win32 port status
  • Date: Mon, 22 Dec 2003 10:20:13 -0500
  • Message-id: <3FE70BAD(dot)2050601(at)dunslane(dot)net>

Magnus Hagander wrote:

Bruce Momjian wrote:
	* a workable pipe replacement
I don't have 'pipe' mentioned on the win32 patch.  Can you
give details?
Yeah you do. The second point under "Problems with select()".

Basically, the Win32 call to pipe() returns a file descriptor which is invalid to pass on to Win32 select() (as it only takes socket handles).

So, we need to replace the select'ing mechanism under Win32 (yech), or write a Win32 pipe() replacement that returns two socket endpoints (good enough for our purposes), or something else...

I think you want to be investigating
WSAEventSelect() and then WaitForMultipleObjectsEx().
WSAEventSelect() claims it needs a WSAEVENT, but according to docs
otherwhere it should accept a standard event handle on NT+ platforms.

WaitForMultiple... will accept pipes, events, anything. (The Ex function
will also allow dispatching of user APCs, see related discussion about
signals)


Using a socket or a pair of sockets is a very common practice in porting this sort of code from Unix to Windows. IIRC this is what Cygwin does under the hood.

That would help to preserve the programming paradigms already in use in Postgres. If it proves to be a performance bottleneck then it could be revisited, but it seems unlikely.

Tom (rightly) admonished me not long ago that we do not need to use every last part of the Unix API in our code. The same goes a fortiori for the Windows API, IMNSHO. Minimal disturbance and acceptable performance should be the initial goals.

cheers

andrew




Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group