nbd_aio_get_direction(3)
nbd_aio_get_direction(3) β the read/write direction vibe check π
okay bestie, welcome to nbd_aio_get_direction(3) from the LIBNBD manual β¨ this one is literally about figuring out which way the connection is facing next: read, write, both, or βnone of the above, donβt poll yet.β iconic little state-machine check π¦
πΈ NAME πΈ
nbd_aio_get_direction β return the read or write direction, bestie. Thatβs the whole assignment. π
β¨ SYNOPSIS β¨
#include <libnbd.h>
unsigned nbd_aio_get_direction (
struct nbd_handle *h
);
π DESCRIPTION π
Return the current direction of this connection, which means whether we are next expecting to read data from the server, write data to the server, or both. It returns:
0β we are not expected to interact with the server file descriptor from the current state. It is not worth attempting to usepoll(2); if the connection is not dead, then state machine progress must instead come from some other means such asnbd_aio_connect(3)."LIBNBD_AIO_DIRECTION_READ" = 1β we are expected next to read from the server. If usingpoll(2)you would setevents = POLLIN. IfreventsreturnsPOLLINorPOLLHUPyou would then callnbd_aio_notify_read(3).
Note that once libnbd reaches nbd_aio_is_ready(3), this direction is returned even when there are no commands in flight (see nbd_aio_in_flight(3)). In a single-threaded use of libnbd, it is not worth polling until after issuing a command, as otherwise the server will never wake up the poll. In a multi-threaded scenario, you can have one thread begin a polling loop prior to any commands, but any other thread that issues a command will need a way to kick the polling thread out of poll in case issuing the command changes the needed polling direction. Possible ways to do this include polling for activity on a pipe-to-self, or using pthread_kill(3) to send a signal that is masked except during ppoll(2).
"LIBNBD_AIO_DIRECTION_WRITE" = 2β we are expected next to write to the server. If usingpoll(2)you would setevents = POLLOUT. IfreventsreturnsPOLLOUTyou would then callnbd_aio_notify_write(3)."LIBNBD_AIO_DIRECTION_BOTH" = 3β we are expected next to either read or write to the server. If usingpoll(2)you would setevents = POLLIN|POLLOUT. If only one ofPOLLINorPOLLOUTis returned, then see above. However, if both are returned, it is better to call onlynbd_aio_notify_read(3), as processing the serverβs reply may change the state of the connection and invalidate the need to write more commands.
π RETURN VALUE π
This call returns a bitmask. short, sweet, and very much the moment β¨
π¦ ERRORS π¦
This function does not fail. no cap, thatβs the whole error section π
The following parameters must not be NULL: "h". For more information see "Non-NULL parameters" in libnbd(3).
π VERSION π
This function first appeared in libnbd 1.0.
If you need to test if this function is available at compile time check if the following macro is defined:
#define LIBNBD_HAVE_NBD_AIO_GET_DIRECTION 1
π₯ SEE ALSO π₯
go give these a little read, iykyk:
nbd_aio_connect(3)nbd_aio_in_flight(3)nbd_aio_is_ready(3)nbd_aio_notify_read(3)nbd_aio_notify_write(3)nbd_create(3)libnbd(3)poll(2)ppoll(2)pthread_kill(3)
π AUTHORS π
- Eric Blake
- Richard W.M. Jones
πΈ COPYRIGHT πΈ
Copyright Red Hat
π LICENSE π
okay the legal text stays exactly as written, no edits, bestie:
This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
catch u later, bestie β this iconic page is from libnbd-1.25.8, dated 2026-10-13 π«Άπ
π¦ where this page comes from
- centos-stream 10: libnbd-devel 1.25.8-1.el10 Β· LGPL-2.0-or-later AND BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms