libosmocore 1.9.0.196-9975
Osmocom core library
osmo_io_internal.h File Reference
#include <unistd.h>
#include <stdbool.h>
#include <netinet/sctp.h>
#include <osmocom/core/osmo_io.h>
#include <osmocom/core/linuxlist.h>
#include <osmocom/core/msgb.h>
#include <osmocom/core/select.h>
#include <osmocom/core/socket.h>
#include "../config.h"

Go to the source code of this file.

Data Structures

struct  iofd_backend_ops
 
struct  osmo_io_fd
 
struct  iofd_msghdr
 serialized version of 'struct msghdr' employed by sendmsg/recvmsg More...
 

Macros

#define OSMO_IO_DEFAULT_MSGB_SIZE   1024
 
#define OSMO_IO_DEFAULT_MSGB_HEADROOM   128
 
#define OSMO_IO_BACKEND_DEFAULT   "POLL"
 
#define IOFD_FLAG_CLOSED   (1<<0)
 
#define IOFD_FLAG_IN_CALLBACK   (1<<1)
 
#define IOFD_FLAG_TO_FREE   (1<<2)
 
#define IOFD_FLAG_NOTIFY_CONNECTED   (1<<3)
 
#define IOFD_FLAG_FD_REGISTERED   (1<<4)
 
#define IOFD_FLAG_SET(iofd, flag)    (iofd)->flags |= (flag)
 
#define IOFD_FLAG_UNSET(iofd, flag)    (iofd)->flags &= ~(flag)
 
#define IOFD_FLAG_ISSET(iofd, flag)   ((iofd)->flags & (flag))
 

Enumerations

enum  iofd_msg_action {
  IOFD_ACT_READ ,
  IOFD_ACT_WRITE ,
  IOFD_ACT_RECVFROM ,
  IOFD_ACT_SENDTO ,
  IOFD_ACT_RECVMSG ,
  IOFD_ACT_SENDMSG
}
 
enum  iofd_seg_act {
  IOFD_SEG_ACT_HANDLE_ONE ,
  IOFD_SEG_ACT_HANDLE_MORE ,
  IOFD_SEG_ACT_DEFER
}
 

Functions

struct iofd_msghdriofd_msghdr_alloc (struct osmo_io_fd *iofd, enum iofd_msg_action action, struct msgb *msg, size_t cmsg_size)
 Allocate the msghdr. More...
 
void iofd_msghdr_free (struct iofd_msghdr *msghdr)
 Free the msghdr. More...
 
struct msgbiofd_msgb_alloc (struct osmo_io_fd *iofd)
 convenience wrapper to call msgb_alloc with parameters from osmo_io_fd More...
 
struct msgbiofd_msgb_pending (struct osmo_io_fd *iofd)
 return the pending msgb in iofd or NULL if there is none More...
 
struct msgbiofd_msgb_pending_or_alloc (struct osmo_io_fd *iofd)
 Return the pending msgb or allocate and return a new one. More...
 
void iofd_handle_recv (struct osmo_io_fd *iofd, struct msgb *msg, int rc, struct iofd_msghdr *msghdr)
 completion handler: Internal function called by osmo_io_backend after a given I/O operation has completed More...
 
void iofd_handle_send_completion (struct osmo_io_fd *iofd, int rc, struct iofd_msghdr *msghdr)
 completion handler: Internal function called by osmo_io_backend after a given I/O operation has completed More...
 
void iofd_handle_segmented_read (struct osmo_io_fd *iofd, struct msgb *msg, int rc)
 Restore message boundaries on read() and pass individual messages to the read callback. More...
 
int iofd_txqueue_enqueue (struct osmo_io_fd *iofd, struct iofd_msghdr *msghdr)
 Enqueue a message to be sent. More...
 
void iofd_txqueue_enqueue_front (struct osmo_io_fd *iofd, struct iofd_msghdr *msghdr)
 Enqueue a message at the front. More...
 
struct iofd_msghdriofd_txqueue_dequeue (struct osmo_io_fd *iofd)
 Dequeue a message from the front. More...
 

Variables

const struct iofd_backend_ops iofd_poll_ops
 

Macro Definition Documentation

◆ IOFD_FLAG_CLOSED

#define IOFD_FLAG_CLOSED   (1<<0)

◆ IOFD_FLAG_FD_REGISTERED

#define IOFD_FLAG_FD_REGISTERED   (1<<4)

◆ IOFD_FLAG_IN_CALLBACK

#define IOFD_FLAG_IN_CALLBACK   (1<<1)

◆ IOFD_FLAG_ISSET

#define IOFD_FLAG_ISSET (   iofd,
  flag 
)    ((iofd)->flags & (flag))

◆ IOFD_FLAG_NOTIFY_CONNECTED

#define IOFD_FLAG_NOTIFY_CONNECTED   (1<<3)

◆ IOFD_FLAG_SET

#define IOFD_FLAG_SET (   iofd,
  flag 
)     (iofd)->flags |= (flag)

◆ IOFD_FLAG_TO_FREE

#define IOFD_FLAG_TO_FREE   (1<<2)

◆ IOFD_FLAG_UNSET

#define IOFD_FLAG_UNSET (   iofd,
  flag 
)     (iofd)->flags &= ~(flag)

◆ OSMO_IO_BACKEND_DEFAULT

#define OSMO_IO_BACKEND_DEFAULT   "POLL"

◆ OSMO_IO_DEFAULT_MSGB_HEADROOM

#define OSMO_IO_DEFAULT_MSGB_HEADROOM   128

◆ OSMO_IO_DEFAULT_MSGB_SIZE

#define OSMO_IO_DEFAULT_MSGB_SIZE   1024

Enumeration Type Documentation

◆ iofd_msg_action

Enumerator
IOFD_ACT_READ 
IOFD_ACT_WRITE 
IOFD_ACT_RECVFROM 
IOFD_ACT_SENDTO 
IOFD_ACT_RECVMSG 
IOFD_ACT_SENDMSG 

◆ iofd_seg_act

Enumerator
IOFD_SEG_ACT_HANDLE_ONE 
IOFD_SEG_ACT_HANDLE_MORE 
IOFD_SEG_ACT_DEFER 

Variable Documentation

◆ iofd_poll_ops

const struct iofd_backend_ops iofd_poll_ops
extern