From: Martin Sustrik <sustrik@fastmq.com>
To: linux-kernel@vger.kernel.org
Subject: Re: [patch/rfc] eventfd semaphore-like behavior
Date: Fri, 20 Feb 2009 08:00:22 +0100 [thread overview]
Message-ID: <499E5506.5090406@fastmq.com> (raw)
In-Reply-To: <499E527B.2030702@fastmq.com>
Hi,
Speaking of eventfd use cases, we're using it as a bitmap. Everything
works great, the only problem being that we have to take extra care not
to set the same bit twice:
fd_counter is 00000000
write (fd, 00001000)
fd_counter is 00001000
write (fd, 00000001)
fd_counter is 00001001
write (fd, 00001000) /* oops! */
fd_counter is 00010001
Would anyone else benefit from a new eventfd flag, say EFD_BITMAP, that
would cause write(2) to do binary OR rather than + on the counter?
Martin
Martin Sustrik wrote:
>
> Enter your search termsSubmit search formWeblkml.org
> Date Wed, 4 Feb 2009 14:58:39 -0800 (PST)
> From Davide Libenzi <>
> Subject [patch/rfc] eventfd semaphore-like behavior
>
> People started using eventfd in scnarios where before where using pipes.
> Many of them use eventfds in a semaphore-like way, like they were before
> with pipes. The problem with eventfd is that a read() on the fd returns
> and wipes the whole counter, making the use of it as semaphore a little
> bit more cumbersome. You can do a read() followed by a write() of
> COUNTER-1, but IMO it's pretty easy and cheap to make this work w/out
> extra steps. This patch introduces a new eventfd flag that tells eventfd
> to only dequeue 1 from the counter, allowing simple read/write to make it
> behave like a semaphore.
> Simple test here:
>
> http://www.xmailserver.org/eventfd-sem.c
>
>
> Signed-off-by: Davide Libenzi <davidel@xmailserver.org>
>
>
> - Davide
>
next parent reply other threads:[~2009-02-20 7:33 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <499E527B.2030702@fastmq.com>
2009-02-20 7:00 ` Martin Sustrik [this message]
2009-02-04 22:58 [patch/rfc] eventfd semaphore-like behavior Davide Libenzi
[not found] ` <alpine.DEB.1.10.0902041349180.6214-GPJ85BhbkB8RepQJljzAVbITYcZ0+W3JAL8bYrjMMd8@public.gmane.org>
2009-02-04 23:05 ` Andrew Morton
2009-02-04 23:05 ` Andrew Morton
[not found] ` <20090204150507.665b5b7c.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-02-04 23:18 ` Davide Libenzi
2009-02-04 23:18 ` Davide Libenzi
[not found] ` <alpine.DEB.1.10.0902041509060.6214-GPJ85BhbkB8RepQJljzAVbITYcZ0+W3JAL8bYrjMMd8@public.gmane.org>
2009-02-04 23:24 ` Andrew Morton
2009-02-04 23:24 ` Andrew Morton
[not found] ` <20090204152434.c8f65d52.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-02-04 23:27 ` Davide Libenzi
2009-02-04 23:27 ` Davide Libenzi
[not found] ` <alpine.DEB.1.10.0902041526590.6214-GPJ85BhbkB8RepQJljzAVbITYcZ0+W3JAL8bYrjMMd8@public.gmane.org>
2009-02-04 23:48 ` Michael Kerrisk
2009-02-04 23:48 ` Michael Kerrisk
2009-02-04 23:55 ` Andrew Morton
2009-02-04 23:55 ` Andrew Morton
[not found] ` <20090204155514.6abbdc8f.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-02-04 23:59 ` Michael Kerrisk
2009-02-04 23:59 ` Michael Kerrisk
[not found] ` <cfd18e0f0902041559l4c40d9b6k704068337a00df7a-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-02-05 0:02 ` Davide Libenzi
2009-02-05 0:02 ` Davide Libenzi
[not found] ` <alpine.DEB.1.10.0902041600170.6214-GPJ85BhbkB8RepQJljzAVbITYcZ0+W3JAL8bYrjMMd8@public.gmane.org>
2010-08-30 5:21 ` Michael Kerrisk
2010-08-30 5:21 ` Michael Kerrisk
[not found] ` <AANLkTim_seWr0LZJyC+dPBy-N+_NkzTx21vte7qrwunC-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-08-30 5:24 ` Michael Kerrisk
2010-08-30 5:24 ` Michael Kerrisk
2010-08-30 14:22 ` Davide Libenzi
2009-02-05 0:18 ` Andrew Morton
2009-02-05 0:18 ` Andrew Morton
[not found] ` <20090204161816.b93a4588.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2009-02-05 0:25 ` Davide Libenzi
2009-02-05 0:25 ` Davide Libenzi
[not found] ` <alpine.DEB.1.10.0902041621360.6214-GPJ85BhbkB8RepQJljzAVbITYcZ0+W3JAL8bYrjMMd8@public.gmane.org>
2009-02-05 0:34 ` Andrew Morton
2009-02-05 0:34 ` Andrew Morton
2009-02-05 0:26 ` Michael Kerrisk
2009-02-04 23:45 ` Ulrich Drepper
2009-02-04 23:45 ` Ulrich Drepper
[not found] ` <a36005b50902041545qb9ce459y710bb3b9b8949b17-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-02-04 23:49 ` Michael Kerrisk
2009-02-04 23:49 ` Michael Kerrisk
2009-02-09 7:45 ` Michael Kerrisk
2009-02-09 17:39 ` Davide Libenzi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=499E5506.5090406@fastmq.com \
--to=sustrik@fastmq.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.