GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  LIBOWFAT_IO_NONBLOCK (3)

NAME

io_nonblock - switch to non-blocking I/O

CONTENTS

Syntax
Description

SYNTAX

#include <io.h>

void io_nonblock(int64 fd);

DESCRIPTION

io_nonblock puts UNIX descriptor fd into ‘‘non-blocking mode.’’ Calling io_nonblock(fd) before io_fd(fd) makes io_tryread and io_trywrite faster and more efficient.

Actually, current UNIX kernels do not support non-blocking descriptors; they support non-blocking open files. Furthermore, many programs will break if they encounter non-blocking mode. This means that you must not use io_nonblock for a descriptor inherited from another program.

io_nonblock has no return value; it always succeeds. If d is not the number of a UNIX descriptor, io_nonblock has no effect.

If io_fd is given a descriptor in blocking mode, io_tryread and io_trywrite go through the following contortions to avoid blocking:

0step] Stop if poll says that the descriptor is not ready. Otherwise there’s a good chance, but not a guarantee: even if poll says the descriptor is ready, the descriptor might not be ready a moment later. (Furthermore, poll can fail on some systems.)
0[step] Catch SIGALRM. SIGALRM must not be blocked, and must not be used elsewhere in the program.
0[step] Set an interval timer so that any blocking call will be interrupted by SIGALRM within 10 milliseconds. (Current UNIX kernels do not allow any shorter interval.) Of course, this may still mean a 10-millisecond delay.

If io_fd is given a descriptor in non-blocking mode (or a descriptor for a regular disk file), io_tryread and io_trywrite avoid these contortions.

SEE ALSO

io_wait(3), io_canwrite(3)
Search for    or go to Top of page |  Section 3 |  Main Index


IO_NONBLOCK (3) -->

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.