public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Pollable Semaphores
@ 2005-01-21 21:22 Brandon Corey
  2005-01-21 21:37 ` Roland Dreier
  2005-01-22  0:07 ` Davide Libenzi
  0 siblings, 2 replies; 10+ messages in thread
From: Brandon Corey @ 2005-01-21 21:22 UTC (permalink / raw)
  To: linux-kernel

I'm trying to find out if there is a pollable semaphore equivalent on Linux.

The main idea of a "pollable semaphore", is a semaphore with a related
file descriptor.  The file descriptor can be used to select() when the
semaphore is acquirable.  This provides a convenient way for users to
implement code synchronization between threads, where multiple file
descriptors are already being selected against.

We have a pollable semaphore implementation on IRIX that provides this
functionality.  The API consists of a handful of calls for creation and
destruction of pollable semaphores, as well as a means to attach them
to a file descriptor.  Beyond that, from the users point of view, they're
just treated as any other file descriptor.

These calls are routed through a library and then passed off to a kernel
driver that handles the events.  If someone selects against a semaphore
when it's unaquirable, the driver sleeps on a synchronization variable.
When the semaphore is subsequently made aquirable, the driver will wake up
any waiters.  Multiple pollable semaphores mixed with other file
descriptors can be selected against, and a wakeup will occur when any of
the semaphores become acquirable.

Is anyone aware of any equivalent functionality?

Brandon

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2005-01-24 20:45 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-01-21 21:22 Pollable Semaphores Brandon Corey
2005-01-21 21:37 ` Roland Dreier
2005-01-21 23:17   ` Brent Casavant
2005-01-22  3:43     ` Ulrich Drepper
2005-01-22  5:52       ` Chris Wright
2005-01-22  7:05         ` Chris Wright
2005-01-22  7:39           ` Ulrich Drepper
2005-01-22 18:02             ` Chris Wright
2005-01-24 20:42       ` Robert White
2005-01-22  0:07 ` Davide Libenzi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox