libosmocore  1.9.0.142-9cce.202401252026
Osmocom core library
osmo_io_internal.h File Reference
#include <unistd.h>
#include <stdbool.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_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
}
 
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)
 
void iofd_msghdr_free (struct iofd_msghdr *msghdr)
 
struct msgbiofd_msgb_alloc (struct osmo_io_fd *iofd)
 
struct msgbiofd_msgb_pending (struct osmo_io_fd *iofd)
 
struct msgbiofd_msgb_pending_or_alloc (struct osmo_io_fd *iofd)
 
void iofd_handle_recv (struct osmo_io_fd *iofd, struct msgb *msg, int rc, struct iofd_msghdr *msghdr)
 
void iofd_handle_send_completion (struct osmo_io_fd *iofd, int rc, struct iofd_msghdr *msghdr)
 
void iofd_handle_segmented_read (struct osmo_io_fd *iofd, struct msgb *msg, int rc)
 
int iofd_txqueue_enqueue (struct osmo_io_fd *iofd, struct iofd_msghdr *msghdr)
 
void iofd_txqueue_enqueue_front (struct osmo_io_fd *iofd, struct iofd_msghdr *msghdr)
 
struct iofd_msghdriofd_txqueue_dequeue (struct osmo_io_fd *iofd)
 

Variables

const struct iofd_backend_ops iofd_poll_ops
 

Macro Definition Documentation

◆ IOFD_FLAG_CLOSED

#define IOFD_FLAG_CLOSED   (1<<0)

◆ 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_seg_act

Enumerator
IOFD_SEG_ACT_HANDLE_ONE 
IOFD_SEG_ACT_HANDLE_MORE 
IOFD_SEG_ACT_DEFER 

Function Documentation

◆ iofd_handle_recv()

void iofd_handle_recv ( struct osmo_io_fd iofd,
struct msgb msg,
int  rc,
struct iofd_msghdr msghdr 
)

◆ iofd_handle_segmented_read()

void iofd_handle_segmented_read ( struct osmo_io_fd iofd,
struct msgb msg,
int  rc 
)

◆ iofd_handle_send_completion()

void iofd_handle_send_completion ( struct osmo_io_fd iofd,
int  rc,
struct iofd_msghdr msghdr 
)

◆ iofd_msgb_alloc()

struct msgb* iofd_msgb_alloc ( struct osmo_io_fd iofd)

◆ iofd_msgb_pending()

struct msgb* iofd_msgb_pending ( struct osmo_io_fd iofd)

◆ iofd_msgb_pending_or_alloc()

struct msgb* iofd_msgb_pending_or_alloc ( struct osmo_io_fd iofd)

◆ iofd_msghdr_alloc()

struct iofd_msghdr* iofd_msghdr_alloc ( struct osmo_io_fd iofd,
enum iofd_msg_action  action,
struct msgb msg 
)

◆ iofd_msghdr_free()

void iofd_msghdr_free ( struct iofd_msghdr msghdr)

◆ iofd_txqueue_dequeue()

struct iofd_msghdr* iofd_txqueue_dequeue ( struct osmo_io_fd iofd)

◆ iofd_txqueue_enqueue()

int iofd_txqueue_enqueue ( struct osmo_io_fd iofd,
struct iofd_msghdr msghdr 
)

◆ iofd_txqueue_enqueue_front()

void iofd_txqueue_enqueue_front ( struct osmo_io_fd iofd,
struct iofd_msghdr msghdr 
)

Variable Documentation

◆ iofd_poll_ops

const struct iofd_backend_ops iofd_poll_ops
extern