NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: lib/53273: sem_init() with pshared=1 does not actually work



The following reply was made to PR lib/53273; it has been noted by GNATS.

From: David Holland <dholland-bugs%netbsd.org@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: 
Subject: Re: lib/53273: sem_init() with pshared=1 does not actually work
Date: Fri, 28 Sep 2018 19:45:40 +0000

 On Thu, May 10, 2018 at 02:45:00AM +0000, soda%NetBSD.org@localhost wrote:
  > if sem_t is created by sem_init(*, 1, *), the sem_t has to be sharable
  > between processes, even if the processes don't share virtual memory space.
  > but our implemention doesn't satisfy this requirement.
  > 
  > >Fix:
  > 
  > change the definition of sem_t from an opaque pointer to an actual struct
  > just like other UNIXes.
 
 I'm not clear on how that will help - is the idea that you're supposed
 to be able to write the bits of the struct through a pipe to another
 process and have it work on the other end? That seems very unlikely in
 general; also if it were necessary the code wanting it almost
 certainly wouldn't compile with our implementation.
 
 The man page for sem_init is not clear about this. Can someone
 explain? (And while we're at it, the man page for sem_open does not
 explain how multiple opens of the same semaphore are supposed to
 interact with sem_close, which it should.)
 
 My understanding has always been that if you want to use the same
 posix ipc object in multiple processes that you need to name it and
 look it up by name in each (with sem_open)...
 
 -- 
 David A. Holland
 dholland%netbsd.org@localhost
 


Home | Main Index | Thread Index | Old Index