All of lore.kernel.org
 help / color / mirror / Atom feed
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
> 


       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.