io_fd_flags(3) | Library Functions Manual | io_fd_flags(3) |
io_fd_flags - prepare descriptor for io_wait
#include <libowfat/io.h>
int io_fd(int64 fd);
#ifdef HAVE_IO_FD_FLAGS
int io_fd_flags(int64 fd);
io_fd_flags behaves just like io_fd, but certain flags can be bitwise-ORed to it to alter its behavior:
Normally, io_fd calls fcntl to ask the operating system whether the descriptor is blocking or not. The frameworks needs to know because it alters how io_tryread and io_trywrite handle the socket. Never pass both IO_FD_BLOCK and IO_FD_NONBLOCK at the same time.
Newly connected stream sockets are always writable if the connection is established, so it is usually safe to pass IO_FD_CANWRITE. The main exception case where IO_FD_CANWRITE should not be passed is on a non-blocking socket where a connect() is pending. Then you need to poll for writability to get notified when the connection is established.
io_fd_flags returns 1 on success, 0 on error.