void io_close(int64 fd);
io_close eliminates the descriptor numbered fd. This usually does not mean eliminating the object that the descriptor is talking to. (For example, if a descriptor writes to a named disk file, closing the descriptor will not remove the file; it simply removes one way of writing to the file. On the other hand, a pipe disappears as soon as no descriptors refer to it.)
io_close has no return value; it always succeeds in deallocating the memory used for the descriptor. If fd is not the number of a descriptor, io_close has no effect.
io_close() is like close(), but it also removes the descriptor from the internal io_wait() data structures. If you called io_fd on a descriptor, you need to use io_close to close it, not just close().