delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2009/06/12/04:49:56

X-Recipient: archive-cygwin AT delorie DOT com
X-Spam-Check-By: sourceware.org
Date: Fri, 12 Jun 2009 10:49:32 +0200
From: Corinna Vinschen <corinna-cygwin AT cygwin DOT com>
To: cygwin AT cygwin DOT com
Subject: Re: 1.7.0 sem_open
Message-ID: <20090612084932.GC5039@calimero.vinschen.de>
Reply-To: cygwin AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
References: <94b5b62d0906112150g473b49fao41f95c3a1c6e6014 AT mail DOT gmail DOT com>
MIME-Version: 1.0
In-Reply-To: <94b5b62d0906112150g473b49fao41f95c3a1c6e6014@mail.gmail.com>
User-Agent: Mutt/1.5.19 (2009-02-20)
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie DOT com AT cygwin DOT com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

On Jun 12 01:50, Pedro Izecksohn wrote:
>   Does the function sem_open work for anyone using Cygwin 1.7.0 ?

Yes.

>   How to use semtool ?

What is semtool?

>   I wrote an example that works on Jaunty on x86-64 but not on Cygwin:
> http://www.izecksohn.com/pedro/c/semaphores/semaphores.tar.gz

Works for me.

  $ gcc -g test.c -o test
  $ ./test /my-sem
  Press ENTER to delete the semaphore or press Control c to its persistence.

I guess I see what you mean:

  $ ./test my-sem
  sem_open: Invalid argument

Maybe I was trying to be over-exact?  sem_open creates a file in
/dev/shm.  The semaphore name is expected to be an absolute pathname.

SUSv4 states:

  The name argument conforms to the construction rules for a pathname,
  except that the interpretation of <slash> characters other than the
  leading <slash> character in name is implementation-defined, [...]

  If name begins with the <slash> character, then processes calling
  sem_open() with the same value of name shall refer to the same semaphore
  object, as long as that name has not been removed. If name does not
  begin with the <slash> character, the effect is implementation-defined.

In my implementation "implementation-defined" means, that the leading
slash is necessary.

Hmm.  I guess I have to lift this restriction.  However, this will very
likly result in "/sem-name" refering the same semaphore as "sem-name".

>   Also: gcc4 does not understand the option "-lrt" so it must be removed.

Even if linking against librt.a would be necessary on Cygwin, which it
isn't, the gcc call is wrong.  The libs must always follow the object
files which request symbols from the lib:

  gcc -lfoo need-foo.c  <-- wrong
  gcc need-foo.c -lfoo  <-- right

That's a restriction of ... I'm not quite sure, either some Windows
rules or in the ld implementation when building PE/COFF files.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019