libosmocore 0.9.6-23.20170220git32ee5af8.fc42
Osmocom core library
Loading...
Searching...
No Matches
Osmocom msgb write queues

Files

file  write_queue.h
 
file  write_queue.c
 

Data Structures

struct  osmo_wqueue
 

Functions

void osmo_wqueue_init (struct osmo_wqueue *queue, int max_length)
 Initialize a osmo_wqueue structure.
 
void osmo_wqueue_clear (struct osmo_wqueue *queue)
 Clear a osmo_wqueue.
 
int osmo_wqueue_enqueue (struct osmo_wqueue *queue, struct msgb *data)
 Enqueue a new Message buffers into a write queue.
 
int osmo_wqueue_bfd_cb (struct osmo_fd *fd, unsigned int what)
 Select loop function for write queue handling.
 

Detailed Description

Function Documentation

◆ osmo_wqueue_bfd_cb()

int osmo_wqueue_bfd_cb ( struct osmo_fd * fd,
unsigned int what )

Select loop function for write queue handling.

Parameters
[in]fdosmocom file descriptor
[in]whatbit-mask of events that have happened
Returns
0 on success; negative on error

This function is provided so that it can be registered with the select loop abstraction code (osmo_fd::cb).

References osmo_wqueue::bfd, BSC_FD_EXCEPT, BSC_FD_READ, BSC_FD_WRITE, container_of, osmo_wqueue::current_length, osmo_wqueue::except_cb, llist_empty(), osmo_wqueue::msg_queue, msgb_dequeue(), msgb_free(), osmo_wqueue::read_cb, osmo_fd::when, and osmo_wqueue::write_cb.

Referenced by osmo_wqueue_init().

◆ osmo_wqueue_clear()

void osmo_wqueue_clear ( struct osmo_wqueue * queue)

Clear a osmo_wqueue.

Parameters
[in]queueWrite queue to be cleared

This function will clear (remove/release) all messages in it.

References osmo_wqueue::bfd, osmo_wqueue::current_length, llist_empty(), osmo_wqueue::msg_queue, msgb_dequeue(), msgb_free(), and osmo_fd::when.

◆ osmo_wqueue_enqueue()

int osmo_wqueue_enqueue ( struct osmo_wqueue * queue,
struct msgb * data )

Enqueue a new Message buffers into a write queue.

Parameters
[in]queueWrite queue to be used
[in]datato-be-enqueued message buffer
Returns
0 on success; negative on error

References osmo_wqueue::bfd, BSC_FD_WRITE, osmo_wqueue::current_length, msgb::data, DLGLOBAL, LOGL_ERROR, LOGP, osmo_wqueue::max_length, osmo_wqueue::msg_queue, msgb_enqueue(), and osmo_fd::when.

Referenced by gsmtap_sendmsg().

◆ osmo_wqueue_init()

void osmo_wqueue_init ( struct osmo_wqueue * queue,
int max_length )

Initialize a osmo_wqueue structure.

Parameters
[in]queueWrite queue to operate on
[in]max_lengthMaximum length of write queue

References osmo_wqueue::bfd, osmo_fd::cb, osmo_wqueue::current_length, osmo_wqueue::except_cb, INIT_LLIST_HEAD, osmo_wqueue::max_length, osmo_wqueue::msg_queue, osmo_wqueue_bfd_cb(), osmo_wqueue::read_cb, and osmo_wqueue::write_cb.

Referenced by gsmtap_source_init().