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 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 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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 Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , 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 characters other than the leading character in name is implementation-defined, [...] If name begins with the 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 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/