Pollable Semaphores

From: Brandon Corey
Date: Fri Jan 21 2005 - 16:31:35 EST


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
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/