Date: Wed, 22 Oct 2003 12:19:16 +0900 From: Seigo Tanimura <tanimura@tanimura.dyndns.org> To: arch@FreeBSD.org Cc: Seigo Tanimura <tanimura@tanimura.dyndns.org> Subject: Who should set the priority of a select(2)ing thread being waken up? Message-ID: <200310220319.h9M3JGI1005225@urban>
next in thread | raw e-mail | index | archive | help
In good old days, only a socket and a pipe were the major file descriptors being select(2)ed. As select(2) was just a socket operation, it was sufficient to set the priority of select(2)ing process to PSOCK(*1), I suppose. Nowadays, quite a few drivers support select(2) as well, including sound, usb, scsi controllers, and so on. I am not convinced whether a process should select(2) those devices at PSOCK as we do for a socket. Suppose that a process select(2)s for a pcm device and a socket at once. If the process is waken up by the pcm driver at PSOCK, another process at a better priority may preempt the first one, which can result in dropping some pcm data. Maybe it would be better if the caller of selwakeup() could determine the priority of a process or a thread. That would let us raise the priority to PRIBIO if pcm data was ready, while the priority would stay at PSOCK if the socket was ready. (*1) I broke that in 5-CURRENT when I modified select(2) and poll(2) to use a conditional variable. -- Seigo Tanimura <tanimura@tanimura.dyndns.org> <tanimura@FreeBSD.org>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200310220319.h9M3JGI1005225>