public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Roland Dreier <roland@topspin.com>
To: root@chaos.analogic.com
Cc: Linux kernel <linux-kernel@vger.kernel.org>
Subject: Re: poll() in 2.6 and beyond
Date: 02 Mar 2004 14:56:22 -0800	[thread overview]
Message-ID: <52hdx6rh7t.fsf@topspin.com> (raw)
In-Reply-To: <Pine.LNX.4.53.0403021651010.9048@chaos>

    Richard> You are playing games with semantics because you are
    Richard> wrong.  The code in fs/select.c about line 101, adds the
    Richard> current caller to the wait-queue.

I assume you mean the call to add_wait_queue() there.  That does not
sleep.  Look at the implementation.  add_wait_queue() is defined in
kernel/fork.c -- it just does some locking and calls
__add_wait_queue().  __add_wait_queue() is really nothing more than 
a list_add().  There's nothing more to it and nothing that goes to
sleep.  Where do you think add_wait_queue() goes to sleep?

    Richard> This wait-queue is the mechanism by which the current
    Richard> caller sleeps, i.e., gives the CPU up to somebody else.
    Richard> That caller's thread will not return past that line until
    Richard> a wake_up_interruptible() call has been made for/from the
    Richard> driver or interface handling that file descriptor. In
    Richard> this manner any number of file discriptors may be handled
    Richard> because the poll() routine for each of then makes its own
    Richard> entry into the wait-queue using the described mechanism.

But there's only one thread around: the user space process that called
into the kernel via poll().  If the first driver goes to sleep, which
thread do you think is going to wake up and call into the second
driver?

 - Roland

  parent reply	other threads:[~2004-03-02 22:56 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-03-02 18:21 poll() in 2.6 and beyond Richard B. Johnson
2004-03-02 20:04 ` Roland Dreier
2004-03-02 20:24   ` Richard B. Johnson
2004-03-02 21:00     ` Roland Dreier
2004-03-02 21:26       ` Richard B. Johnson
2004-03-02 21:39         ` Roland Dreier
2004-03-02 21:59           ` Richard B. Johnson
2004-03-02 22:41             ` Dave Dillow
2004-03-02 22:56             ` Roland Dreier [this message]
2004-03-02 23:16               ` Richard B. Johnson
2004-03-02 23:21                 ` Roland Dreier
     [not found] <1vmPm-4lU-11@gated-at.bofh.it>
     [not found] ` <1vonq-6dr-37@gated-at.bofh.it>
     [not found]   ` <1voGY-6vC-41@gated-at.bofh.it>
     [not found]     ` <1vpjt-7dl-17@gated-at.bofh.it>
     [not found]       ` <1vpCV-7wY-41@gated-at.bofh.it>
     [not found]         ` <1vpWa-7Py-19@gated-at.bofh.it>
2004-03-02 22:53           ` Bill Davidsen
2004-03-02 22:57             ` Roland Dreier
2004-03-02 23:32             ` Richard B. Johnson
2004-03-03  0:07               ` John Muir
2004-03-03  1:18                 ` Richard B. Johnson
2004-03-03  4:04                   ` Roland Dreier
2004-03-03 12:38                     ` Richard B. Johnson
2004-03-03 14:29                       ` Davide Libenzi
2004-03-03  3:57               ` David Dillow
2004-03-03 18:23                 ` Richard B. Johnson
2004-03-03 19:29                   ` Dave Dillow
2004-03-03 20:10                     ` Richard B. Johnson
2004-03-03 22:25                   ` Linus Torvalds
2004-03-03 22:42                     ` Richard B. Johnson
2004-03-03 23:14                       ` Linus Torvalds
2004-03-03 22:52                     ` Linus Torvalds
2004-03-03 23:07                       ` Richard B. Johnson
  -- strict thread matches above, loose matches on Subject: below --
2004-03-03  3:06 linux

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=52hdx6rh7t.fsf@topspin.com \
    --to=roland@topspin.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=root@chaos.analogic.com \
    /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