libosmocore 0.9.6-23.20170220git32ee5af8.fc42
Osmocom core library
Loading...
Searching...
No Matches
msgb.h File Reference

Osmocom message buffers The Osmocom message buffers are modelled after the 'struct skb' inside the Linux kernel network stack. As they exist in userspace, they are much simplified. However, terminology such as headroom, tailroom, push/pull/put etc. remains the same. More...

#include <stdint.h>
#include <osmocom/core/linuxlist.h>
#include <osmocom/core/utils.h>
#include <osmocom/core/bits.h>
#include <osmocom/core/defs.h>
#include <osmocom/core/panic.h>

Go to the source code of this file.

Data Structures

struct  msgb
 Osmocom message buffer. More...
 

Macros

#define MSGB_DEBUG
 
#define MSGB_ABORT(msg, fmt, args ...)
 
#define msgb_l1(m)
 obtain L1 header of msgb
 
#define msgb_l2(m)
 obtain L2 header of msgb
 
#define msgb_l3(m)
 obtain L3 header of msgb
 
#define msgb_sms(m)
 obtain SMS header of msgb
 

Functions

struct msgbmsgb_alloc (uint16_t size, const char *name)
 Allocate a new message buffer.
 
void msgb_free (struct msgb *m)
 Release given message buffer.
 
void msgb_enqueue (struct llist_head *queue, struct msgb *msg)
 Enqueue message buffer to tail of a queue.
 
struct msgbmsgb_dequeue (struct llist_head *queue)
 Dequeue message buffer from head of queue.
 
void msgb_reset (struct msgb *msg)
 Re-set all message buffer pointers.
 
uint16_t msgb_length (const struct msgb *msg)
 get length of message buffer
 
const char * msgb_hexdump (const struct msgb *msg)
 Return a (static) buffer containing a hexdump of the msg.
 
int msgb_resize_area (struct msgb *msg, uint8_t *area, int old_size, int new_size)
 Resize an area within an msgb.
 
struct msgbmsgb_copy (const struct msgb *msg, const char *name)
 Copy an msgb.
 
static int msgb_test_invariant (const struct msgb *msg)
 Check a message buffer for consistency.
 
static unsigned int msgb_l1len (const struct msgb *msgb)
 determine length of L1 message
 
static unsigned int msgb_l2len (const struct msgb *msgb)
 determine length of L2 message
 
static unsigned int msgb_l3len (const struct msgb *msgb)
 determine length of L3 message
 
static unsigned int msgb_headlen (const struct msgb *msgb)
 determine the length of the header
 
static int msgb_tailroom (const struct msgb *msgb)
 determine how much tail room is left in msgb
 
static int msgb_headroom (const struct msgb *msgb)
 determine the amount of headroom in msgb
 
static unsigned char * msgb_put (struct msgb *msgb, unsigned int len)
 append data to end of message buffer
 
static void msgb_put_u8 (struct msgb *msgb, uint8_t word)
 append a uint8 value to the end of the message
 
static void msgb_put_u16 (struct msgb *msgb, uint16_t word)
 append a uint16 value to the end of the message
 
static void msgb_put_u32 (struct msgb *msgb, uint32_t word)
 append a uint32 value to the end of the message
 
static unsigned char * msgb_get (struct msgb *msgb, unsigned int len)
 remove data from end of message
 
static uint8_t msgb_get_u8 (struct msgb *msgb)
 remove uint8 from end of message
 
static uint16_t msgb_get_u16 (struct msgb *msgb)
 remove uint16 from end of message
 
static uint32_t msgb_get_u32 (struct msgb *msgb)
 remove uint32 from end of message
 
static unsigned char * msgb_push (struct msgb *msgb, unsigned int len)
 prepend (push) some data to start of message
 
static void msgb_push_u8 (struct msgb *msg, uint8_t word)
 prepend a uint8 value to the head of the message
 
static void msgb_push_u16 (struct msgb *msg, uint16_t word)
 prepend a uint16 value to the head of the message
 
static void msgb_push_u32 (struct msgb *msg, uint32_t word)
 prepend a uint32 value to the head of the message
 
static unsigned char * msgb_pull (struct msgb *msgb, unsigned int len)
 remove (pull) a header from the front of the message buffer
 
static unsigned char * msgb_pull_to_l3 (struct msgb *msg)
 remove (pull) all headers in front of l3h from the message buffer.
 
static uint8_t msgb_pull_u8 (struct msgb *msgb)
 remove uint8 from front of message
 
static uint16_t msgb_pull_u16 (struct msgb *msgb)
 remove uint16 from front of message
 
static uint32_t msgb_pull_u32 (struct msgb *msgb)
 remove uint32 from front of message
 
static void msgb_reserve (struct msgb *msg, int len)
 Increase headroom of empty msgb, reducing the tailroom.
 
static int msgb_trim (struct msgb *msg, int len)
 Trim the msgb to a given absolute length.
 
static int msgb_l3trim (struct msgb *msg, int l3len)
 Trim the msgb to a given layer3 length.
 
static struct msgbmsgb_alloc_headroom (int size, int headroom, const char *name)
 Allocate message buffer with specified headroom.
 
uint8_t * msgb_data (const struct msgb *msg)
 get pointer to data section of message buffer
 
void * msgb_talloc_ctx_init (void *root_ctx, unsigned int pool_size)
 Initialize a msgb talloc context for msgb_alloc. Create a talloc context called "msgb". If pool_size is 0, create a named const as msgb talloc context. If pool_size is nonzero, create a talloc pool, possibly for faster msgb allocations (see talloc_pool()).
 
void msgb_set_talloc_ctx (void *ctx)
 Set the talloc context for msgb_alloc Deprecated, use msgb_talloc_ctx_init() instead.
 

Detailed Description

Osmocom message buffers The Osmocom message buffers are modelled after the 'struct skb' inside the Linux kernel network stack. As they exist in userspace, they are much simplified. However, terminology such as headroom, tailroom, push/pull/put etc. remains the same.