libosmocore 1.9.0.192-1c24.202404062026
Osmocom core library
osmo_io_ops Struct Reference

I/O operations (call-back functions) related to an osmo_io_fd. More...

#include <osmo_io.h>

Data Fields

struct {
   void(*   read_cb )(struct osmo_io_fd *iofd, int
      res, struct msgb *msg)
 completion call-back function when something was read from fd. More...
 
   void(*   write_cb )(struct osmo_io_fd *iofd, int
      res, struct msgb *msg)
 completion call-back function when write issued via osmo_iofd_write_msgb() has completed on fd. More...
 
   int(*   segmentation_cb )(struct msgb *msg)
 optional call-back function to segment the data at message boundaries. More...
 
}; 
 
struct {
   void(*   recvfrom_cb )(struct osmo_io_fd *iofd, int
      res, struct msgb *msg, const
      struct osmo_sockaddr *saddr)
 completion call-back function when recvfrom(2) has completed. More...
 
   void(*   sendto_cb )(struct osmo_io_fd *iofd, int
      res, struct msgb *msg, const
      struct osmo_sockaddr *daddr)
 completion call-back function when sendto() issued via osmo_iofd_sendto_msgb() has completed on fd. More...
 
}; 
 
struct {
   void(*   recvmsg_cb )(struct osmo_io_fd *iofd, int
      res, struct msgb *msg, const
      struct msghdr *msgh)
 completion call-back function when recvmsg(2) has completed. More...
 
   void(*   sendmsg_cb )(struct osmo_io_fd *iofd, int
      res, struct msgb *msg)
 completion call-back function when sendmsg() issued via osmo_iofd_sendmsg_msgb() has completed on fd. More...
 
}; 
 

Detailed Description

I/O operations (call-back functions) related to an osmo_io_fd.

Field Documentation

◆ 

struct { ... } osmo_io_ops::@19

◆ 

struct { ... } osmo_io_ops::@21

◆ 

struct { ... } osmo_io_ops::@23

◆ read_cb

void(* osmo_io_ops::read_cb) (struct osmo_io_fd *iofd, int res, struct msgb *msg)

completion call-back function when something was read from fd.

Only valid in OSMO_IO_FD_MODE_READ_WRITE.

Parameters
[in]iofdosmo_io_fd for which read() has completed.
[in]resreturn value of the read() call, or -errno in case of error.
[in]msgmessage buffer containing the read data. Ownership is transferred to the call-back, and it must make sure to msgb_free() it eventually!

Referenced by check_mode_callback_compat(), iofd_handle_segmented_read(), osmo_iofd_register(), and osmo_iofd_set_ioops().

◆ recvfrom_cb

void(* osmo_io_ops::recvfrom_cb) (struct osmo_io_fd *iofd, int res, struct msgb *msg, const struct osmo_sockaddr *saddr)

completion call-back function when recvfrom(2) has completed.

Only valid in OSMO_IO_FD_MODE_RECVFROM_SENDTO.

Parameters
[in]iofdosmo_io_fd for which recvfrom() has completed.
[in]resreturn value of the recvfrom() call, or -errno in case of error.
[in]msgmessage buffer containing the read data. Ownership is transferred to the call-back, and it must make sure to msgb_free() it eventually!
[in]saddrsocket-address of sender from which data was received.

Referenced by check_mode_callback_compat(), iofd_handle_recv(), osmo_iofd_register(), and osmo_iofd_set_ioops().

◆ recvmsg_cb

void(* osmo_io_ops::recvmsg_cb) (struct osmo_io_fd *iofd, int res, struct msgb *msg, const struct msghdr *msgh)

completion call-back function when recvmsg(2) has completed.

Only valid in OSMO_IO_FD_MODE_RECVMSG_SENDMSG.

Parameters
[in]iofdosmo_io_fd for which recvmsg() has completed.
[in]resreturn value of the recvmsg() call, or -errno in case of error.
[in]msgmessage buffer containing the read data. Ownership is transferred to the call-back, and it must make sure to msgb_free() it eventually!
[in]msghmsghdr containing metadata related to the recvmsg call. Only valid until call-back ends.

Referenced by check_mode_callback_compat(), iofd_handle_recv(), osmo_iofd_register(), and osmo_iofd_set_ioops().

◆ segmentation_cb

int(* osmo_io_ops::segmentation_cb) (struct msgb *msg)

optional call-back function to segment the data at message boundaries.

This is useful when message boundaries are to be preserved over a SOCK_STREAM transport socket like TCP. Can be NULL for any application not requiring de-segmentation of received data.

The call-back needs to return the size of the next message. If it returns -EAGAIN or a value larger than msgb_length() (message is incomplete) osmo_io will wait for more data to be read. Other negative values cause the msg to be discarded. If a full message was received (segmentation_cb() returns a value <= msgb_length()) the msgb will be trimmed to size by osmo_io and forwarded to the read call-back. Any parsing done to the msgb by segmentation_cb() will be preserved for the read_cb() (e.g. setting lxh or msgb->cb).

Referenced by iofd_handle_segmentation().

◆ sendmsg_cb

void(* osmo_io_ops::sendmsg_cb) (struct osmo_io_fd *iofd, int res, struct msgb *msg)

completion call-back function when sendmsg() issued via osmo_iofd_sendmsg_msgb() has completed on fd.

Only valid in Only valid in OSMO_IO_FD_MODE_RECVMSG_SENDMSG.

Parameters
[in]iofdon which a sendmsg() has completed.
[in]resreturn value of the sendmsg() call, or -errno in case of error.
[in]msgmessage buffer whose write has completed. Ownership is not transferred to the call-back; it is automatically freed after the call-back terminates!

Referenced by check_mode_callback_compat(), iofd_handle_send_completion(), and iofd_poll_ofd_cb_recvmsg_sendmsg().

◆ sendto_cb

void(* osmo_io_ops::sendto_cb) (struct osmo_io_fd *iofd, int res, struct msgb *msg, const struct osmo_sockaddr *daddr)

completion call-back function when sendto() issued via osmo_iofd_sendto_msgb() has completed on fd.

Only valid in OSMO_IO_FD_MODE_RECVFROM_SENDTO.

Parameters
[in]iofdon which a sendto() has completed.
[in]resreturn value of the sendto() call, or -errno in case of error.
[in]msgmessage buffer whose write has completed. Ownership is not transferred to the call-back; it is automatically freed after the call-back terminates!
[in]daddrsocket-address of destination to which data was sent.

Referenced by check_mode_callback_compat(), iofd_handle_send_completion(), and iofd_poll_ofd_cb_recvmsg_sendmsg().

◆ write_cb

void(* osmo_io_ops::write_cb) (struct osmo_io_fd *iofd, int res, struct msgb *msg)

completion call-back function when write issued via osmo_iofd_write_msgb() has completed on fd.

Only valid in OSMO_IO_FD_MODE_READ_WRITE.

Parameters
[in]iofdon which a write() has completed.
[in]resreturn value of the write() call, or -errno in case of error.
[in]msgmessage buffer whose write has completed. Ownership is not transferred to the call-back; it is automatically freed after the call-back terminates!

Referenced by check_mode_callback_compat(), iofd_handle_send_completion(), and iofd_poll_ofd_cb_recvmsg_sendmsg().


The documentation for this struct was generated from the following file: