mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Tommy Reynolds <reynolds@redhat.com>
To: "Chris Friesen" <cfriesen@nortelnetworks.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: recommended method for hardware to report events to userspace?
Date: Wed, 19 Jun 2002 11:15:55 -0500	[thread overview]
Message-ID: <20020619111555.1abc950e.reynolds@redhat.com> (raw)
In-Reply-To: <3D10A017.C22CDD0D@nortelnetworks.com>

Uttered "Chris Friesen" <cfriesen@nortelnetworks.com>, spoke thus:

> I'm doing some work on a SONET PHY and I was wondering what the recommended
> method is for asynchronously reporting events to userspace.
> 
> I have some non-critical events (correctable ecc errors, etc) that I poll
> every once in a while, but there are some critical events (loss of signal, for
> instance) that I want to report immediately.
> 
> What is the usual way of doing this?  I see three possibilities: 1) the
> userspace app could register its pid with the driver using ioctl() and on a
> fault the interrupt handler in the driver could fire off a signal to the
> registered pids to alert them that something happened, at which point they do
> another ioctl() to find out exactly what it was,  2) use netlink to provide a
> socket-based notification of what happened,  3) provide a file descriptor that
> becomes readable when an event happens.
> 
> What's the Right Thing to do here?

There's no One Right Way to do this.  Here's my suggested feature
hierarchy:

1) Provide a "/proc" file system entry so humans can easily see your
driver's status.  It's easy to make a simple read-only "/proc" file.

2) Implement a "poll" method in your device driver that simply blocks
until one of your anomalous events occurs.  Applications can then do
a standard select(2) system call to detect these events.  Select(2)
is quite efficient.  After the select(2) returns, then a simple
read(2) could get the data.

3) Implement a "mmap" method in your device driver so that
applications could just map in a status buffer.

4) You could use signals, but these take more handshaking
infrastructure via ioctl's between the driver and applications than
do these other suggestions.

      reply	other threads:[~2002-06-19 16:16 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-06-19 15:15 Chris Friesen
2002-06-19 16:15 ` Tommy Reynolds [this message]

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=20020619111555.1abc950e.reynolds@redhat.com \
    --to=reynolds@redhat.com \
    --cc=cfriesen@nortelnetworks.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®