Re: [PATCH] Lightweight userspace semaphores...

Linus Torvalds (torvalds@transmeta.com)
Sun, 24 Feb 2002 17:23:59 -0800 (PST)


On Mon, 25 Feb 2002, Rusty Russell wrote:
>
> Bugger. How about:
>
> sys_sem_area(void *pagestart, size_t len)
> sys_unsem_area(void *pagestart, size_t len)
>
> Is that sufficient? Is sys_unsem_area required at all?

The above is sufficient, but I would personally actually prefer an
interface more like

fd = sem_initialize();
mmap(fd, ...)
..
munmap(..)

which gives you a handle for the semaphore.

Note that getting a file descriptor is really quite useful - it means that
you can pass the file descriptor around through unix domain sockets, for
example, and allow sharing of the semaphore across unrelated processes
that way.

Also, the fd thus acts as an "anchor" for any in-kernel data structures
that the semaphore implementation may (or may not) want to use. Think of
it as your /dev/usem, except with a more explicit interface.

And make the initial mmap() only do a limited number of pages, so that
people don't start trying to allocate tons of memory this way.-

Linus

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