libosmocore 1.11.0.46-c65cb
Osmocom core library
osmo_io_fd Struct Reference

#include <osmo_io_internal.h>

Data Fields

struct llist_head list
 linked list for internal management More...
 
int fd
 actual operating-system level file decriptor More...
 
enum osmo_io_fd_mode mode
 type of read/write mode to use More...
 
uint32_t flags
 flags to guard closing/freeing of iofd More...
 
char * name
 human-readable name to associte with fd More...
 
struct osmo_io_ops io_ops
 send/recv (msg) callback functions More...
 
struct msgbpending
 Pending msgb to keep partial data during segmentation. More...
 
void * data
 data pointer passed through to call-back function More...
 
unsigned int priv_nr
 private number, extending data More...
 
size_t cmsg_size
 size of iofd_msghdr.cmsg[] when allocated in recvmsg path More...
 
uint8_t io_read_buffers
 maximum number of message-buffers per read operation More...
 
uint8_t io_write_buffers
 maximum number of message-buffers per write operation More...
 
struct {
   const void *   ctx
 talloc context from which to allocate msgb when reading More...
 
   unsigned int   size
 size of msgb to allocate (excluding headroom) More...
 
   unsigned int   headroom
 headroom to allocate when allocating msgb's More...
 
msgb_alloc
 
struct {
   unsigned int   max_length
 maximum length of write queue More...
 
   unsigned int   current_length
 current length of write queue More...
 
   struct llist_head   msg_queue
 actual linked list implementing the transmit queue More...
 
tx_queue
 
union {
   struct {
      struct osmo_fd   ofd
 
   }   poll
 
   struct {
      struct {
         bool   enabled
 read is enabled, due to registration of callback function More...
 
         uint8_t   num_sqes
 requested number of simultaniously submitted read SQEs More...
 
         void *   msghdr [IOFD_MSGHDR_MAX_READ_SQES]
 array of simultaneously submitted read SQEs More...
 
         struct io_uring *   ring
 ring the read SQEs have been submitted to More...
 
         uint8_t   sqes_submitted
 current number of simultaneously submitted read SQEs More...
 
      }   read
 
      struct {
         bool   enabled
 write is enabled, due to pending msghdr in tx_queue More...
 
         void *   msghdr
 submitted write SQE More...
 
         struct io_uring *   ring
 ring the write SQE has been submitted to More...
 
      }   write
 
      struct osmo_fd   connect_ofd
 
   }   uring
 
u
 

Field Documentation

◆ cmsg_size

size_t osmo_io_fd::cmsg_size

size of iofd_msghdr.cmsg[] when allocated in recvmsg path

Referenced by iofd_poll_ofd_cb_recvmsg_sendmsg(), and osmo_iofd_set_cmsg_size().

◆ connect_ofd

struct osmo_fd osmo_io_fd::connect_ofd

◆ ctx

const void* osmo_io_fd::ctx

talloc context from which to allocate msgb when reading

Referenced by iofd_handle_recv(), iofd_handle_segmented_read(), and osmo_iofd_setup().

◆ current_length

unsigned int osmo_io_fd::current_length

◆ data

void* osmo_io_fd::data

data pointer passed through to call-back function

Referenced by osmo_iofd_get_data(), osmo_iofd_set_data(), and osmo_iofd_setup().

◆ enabled

bool osmo_io_fd::enabled

read is enabled, due to registration of callback function

write is enabled, due to pending msghdr in tx_queue

◆ fd

int osmo_io_fd::fd

actual operating-system level file decriptor

Referenced by iofd_poll_register(), osmo_iofd_close(), osmo_iofd_get_fd(), osmo_iofd_register(), and osmo_iofd_setup().

◆ flags

uint32_t osmo_io_fd::flags

flags to guard closing/freeing of iofd

◆ headroom

unsigned int osmo_io_fd::headroom

headroom to allocate when allocating msgb's

Referenced by iofd_msgb_alloc2(), osmo_iofd_set_alloc_info(), and osmo_iofd_setup().

◆ io_ops

◆ io_read_buffers

uint8_t osmo_io_fd::io_read_buffers

maximum number of message-buffers per read operation

Referenced by iofd_msghdr_alloc(), osmo_iofd_set_io_buffers(), and osmo_iofd_setup().

◆ io_write_buffers

uint8_t osmo_io_fd::io_write_buffers

maximum number of message-buffers per write operation

Referenced by iofd_txqueue_dequeue(), osmo_iofd_set_io_buffers(), osmo_iofd_setup(), and osmo_iofd_write_msgb().

◆ list

struct llist_head osmo_io_fd::list

linked list for internal management

◆ max_length

unsigned int osmo_io_fd::max_length

maximum length of write queue

Referenced by iofd_txqueue_enqueue(), osmo_iofd_set_txqueue_max_length(), and osmo_iofd_setup().

◆ mode

◆ msg_queue

struct llist_head osmo_io_fd::msg_queue

actual linked list implementing the transmit queue

Referenced by iofd_txqueue_dequeue(), iofd_txqueue_enqueue(), iofd_txqueue_enqueue_front(), osmo_iofd_setup(), and osmo_iofd_write_msgb().

◆ 

◆ msghdr

void* osmo_io_fd::msghdr

array of simultaneously submitted read SQEs

submitted write SQE

◆ name

char* osmo_io_fd::name

human-readable name to associte with fd

Referenced by osmo_iofd_get_name(), osmo_iofd_set_name(), and osmo_iofd_setup().

◆ num_sqes

uint8_t osmo_io_fd::num_sqes

requested number of simultaniously submitted read SQEs

Referenced by osmo_iofd_set_sqes().

◆ ofd

◆ pending

struct msgb* osmo_io_fd::pending

Pending msgb to keep partial data during segmentation.

Referenced by iofd_handle_segmented_read(), osmo_iofd_close(), and osmo_iofd_setup().

◆ 

◆ priv_nr

unsigned int osmo_io_fd::priv_nr

private number, extending data

Referenced by osmo_iofd_get_priv_nr(), and osmo_iofd_set_priv_nr().

◆ 

struct { ... } osmo_io_fd::read

Referenced by osmo_iofd_set_sqes().

◆ ring

struct io_uring* osmo_io_fd::ring

ring the read SQEs have been submitted to

ring the write SQE has been submitted to

◆ size

unsigned int osmo_io_fd::size

size of msgb to allocate (excluding headroom)

Referenced by iofd_msgb_alloc(), osmo_iofd_set_alloc_info(), and osmo_iofd_setup().

◆ sqes_submitted

uint8_t osmo_io_fd::sqes_submitted

current number of simultaneously submitted read SQEs

◆ 

◆ 

◆ 

struct { ... } osmo_io_fd::uring

Referenced by osmo_iofd_set_sqes().

◆ 

struct { ... } osmo_io_fd::write

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