.\" Copyright (C) 2025 Jens Axboe .\" Copyright (C) 2025 Ammar Faizi .\" .\" SPDX-License-Identifier: LGPL-2.0-or-later .\" .TH io_uring_set_iowait 3 "July 27, 2025" "liburing-2.12" "liburing Manual" .SH NAME io_uring_set_iowait \- toggle of iowait usage when waiting on CQEs .SH SYNOPSIS .nf .B #include .PP .BI "int io_uring_set_iowait(struct io_uring *" ring ", .BI " bool " enable_iowait ");" .fi .SH DESCRIPTION .PP By default, io_uring marks a waiting task as being in iowait if it's sleeping waiting on events and there are pending requests. This isn't necessarily always useful, and may be confusing on non-storage setups where iowait isn't expected. It can also cause extra power usage by preventing the CPU from entering lower sleep states. The .BR io_uring_set_iowait (3) function allows the user to toggle this behavior. If .BI enable_iowait is set to true, the iowait behavior is enabled. If it is set to false, the iowait behavior is disabled. The iowait behavior is enabled by default when a ring is created. If the iowait is disabled, the submit functions will set .B IORING_ENTER_NO_IOWAIT in the .BI flags argument to .BR io_uring_enter (2). If the kernel supports this feature, it will be marked by having the .B IORING_FEAT_NO_IOWAIT feature flag set. Available since kernel 6.15. .SH RETURN VALUE On success, .BR io_uring_set_iowait (3) returns 0. On failure, it returns .BR -EOPNOTSUPP . .SH SEE ALSO .BR io_uring_enter (2), .BR io_uring_submit (3), .BR io_uring_submit_and_wait (3)