From owner-freebsd-hackers Tue Feb 13 01:16:23 1996 Return-Path: owner-hackers Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id BAA23798 for hackers-outgoing; Tue, 13 Feb 1996 01:16:23 -0800 (PST) Received: from godzilla.zeta.org.au (godzilla.zeta.org.au [203.2.228.19]) by freefall.freebsd.org (8.7.3/8.7.3) with SMTP id BAA23789 for ; Tue, 13 Feb 1996 01:16:07 -0800 (PST) Received: (from bde@localhost) by godzilla.zeta.org.au (8.6.12/8.6.9) id UAA19799; Tue, 13 Feb 1996 20:09:43 +1100 Date: Tue, 13 Feb 1996 20:09:43 +1100 From: Bruce Evans Message-Id: <199602130909.UAA19799@godzilla.zeta.org.au> To: msmith@atrad.adelaide.edu.au Subject: Re: device driver ioctl for nonblocking IO? Cc: hackers@FreeBSD.org Sender: owner-hackers@FreeBSD.org Precedence: bulk >> I've got a really stupid one here... >... >> If I open an fd on the device and fcntl(fd, F_SETFL, O_NONBLOCK), I get >> a mystery ioctl sent to my device. >Argh. FIONBIO. Not enough coffee. Sorry. FIONBIO should be ignored unless you want to handle the races that can result when a process changes the flag while another process is blocked in an i/o. The O_NONBLOCK flag (aka the O_NDELAY flag) (aka the FNDELAY flag) is better aka the FNONBLOCK flag in the kernel. It is stored in the file descriptor flags and passed to all read and write functions after converting it to the IO_NDELAY. It is also passed to the open, ioctl and close functions without conversion. Bruce