pespin has uploaded this change for review.
osmo_io: Allow fetching maximum value allowed by osmo_iofd_set_io_buffers()
Before this patch, there's no way for a user of the API to know whether
a requested buffers value is actually going to be accepted or not.
Change-Id: Id3d8413c119eb3d9b60aa068295a59561236938c
---
M src/core/osmo_io.c
1 file changed, 9 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/89/41989/1
diff --git a/src/core/osmo_io.c b/src/core/osmo_io.c
index 7c931d3..8ee6967 100644
--- a/src/core/osmo_io.c
+++ b/src/core/osmo_io.c
@@ -915,15 +915,23 @@
* \param[in] op the osmo_io_op (read or write) to set the number of IO buffers for
* \param[in] buffers the number of IO buffer for each specified operation
* \returns zero on success, a negative value on error
+ *
+ * The minimum valid buffers to set is always 1.
+ * The maximum valid buffers is implementation defined, and trying to set a
+ * value greater than the maximum will return an error.
+ * Passing \ref buffers with a value of 0 can be used to fetch the maximum value allowed.
*/
int osmo_iofd_set_io_buffers(struct osmo_io_fd *iofd, enum osmo_io_op op, uint8_t buffers)
{
if (iofd->mode != OSMO_IO_FD_MODE_READ_WRITE)
return -EINVAL;
- if (buffers < 1 || buffers > IOFD_MSGHDR_IO_BUFFERS)
+ if (buffers > IOFD_MSGHDR_IO_BUFFERS)
return -EINVAL;
+ if (buffers == 0)
+ return IOFD_MSGHDR_IO_BUFFERS;
+
switch (op) {
case OSMO_IO_OP_READ:
iofd->io_read_buffers = buffers;
To view, visit change 41989. To unsubscribe, or for help writing mail filters, visit settings.