Re: Support for QNX6, POSIX IPC and PTHREAD-style locking - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: Support for QNX6, POSIX IPC and PTHREAD-style locking
Date
Msg-id 200202222319.g1MNJD505687@candle.pha.pa.us
Whole thread Raw
In response to Support for QNX6, POSIX IPC and PTHREAD-style locking  ("Igor Kovalenko" <Igor.Kovalenko@motorola.com>)
List pgsql-patches
Your patch has been added to the PostgreSQL unapplied patches list at:

    http://candle.pha.pa.us/cgi-bin/pgpatches

I will try to apply it within the next 48 hours.

---------------------------------------------------------------------------


Igor Kovalenko wrote:
> Here is the patch which adds following things to 7.2:
>
> 1. Support for QNX6 (builds cleanly on stock installation and passes all
> regression tests).
>
> 2. HAVE_POSIX_IPC feature, which if enabled switches implementation of
> IpcSemaphoreXXX() (ipc.[ch]) to POSIX semaphores and mmap(). Enabled on QNX6
> but should be useful for lot of platforms. Since IpcSemaphoreCreate() really
> assumed SysV semaphores, I had to change its prototype *when* this feature
> is enabled. That function is called from proc.c and spin.c, which were
> patched accordingly for POSIX case (with #ifdef guards).
>
> 3. USE_PTHREAD_MUTEXES feature, which if enabled implements S_LOCK stuff
> with PTHREAD mutexes. It is useful (better than spinlocks) on non-SMP
> systems when overhead of kernel call is small compared to overhead of
> scheduling. Enabled on QNX6.
>
> 4. USE_PTHREAD_SPINLOCKS feature which if enabled implements S_LOCK stuff
> with PTHREAD spinlocks (may not be available on all platforms). It might be
> better on SMP systems when hardware does not support TAS (in which case SysV
> semaphores would be used as of now and it is hard to be worse than that).
> MIPS systems come to mind (and QNX6 runs on them, so it will be enabled on
> QNX6 in such cases).
>
> I haven't put checks for (2), (3) or (4) into configure to not break
> supported platforms in unexpected ways. Benefits of (3) and (4) are really
> OS and hardware dependent, so if you think they could be useful for your
> platform, they have to be enabled in appropriate OS-specific header.
>
> Same for HAVE_POSIX_IPC, but that one in fact can be useful on lot of
> platforms. I've seen benchmark suggesting POSIX semaphores are 4 times
> faster on Linux than SysV ones. It certainly applies to QNX4 as well and
> makes emulation of SysV stuff unnecessary. I believe it could be extended to
> support platforms like Darwin and BeOS which currently also rely on SysV
> emulation. If there's interest from involved people, we could come up with a
> better unified abstraction model and implementations for all supported
> platforms...
>
> I've been warned it might be considered too 'major' for 7.2, but please look
> at the patch before judging. I tried my best to not break existing stuff,
> all changes are only activated when explicitly enabled, QNX6-specific or
> obviously compatible (the only 'unguarded' changes are typecasts for things
> like SemId = -1, since its type is pointer in case of POSIX and fix for
> broken QNX qsort() which I believe is already commited into CVS). I've spent
> considerable time doing this and would really appreciate if it went into
> 7.2. Code builds and runs clean with or without any of above features
> enabled.
>
> The patch generated as recursive GNU-diff between original 7.2b2 and patched
> (+ make distclean) top level directories, like 'diff -crP pgsql-original
> pgsql-patched'.
> It is big mostly because it contains whole new files for QNX6 (-P treats
> missing files as empty).
>
> regards,
> - igor
>

[ Attachment, skipping... ]

>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026

pgsql-patches by date:

Previous
From: Tom Lane
Date:
Subject: Re: Fix command completion for CREATE TABEL ... AS
Next
From: Bruce Momjian
Date:
Subject: Re: PQunescapeBytea libpq function