RTEMS CPU Kit with SuperCore  4.11.3
Data Structures | Macros
mbuf.h File Reference
#include <sys/malloc.h>
Include dependency graph for mbuf.h:

Go to the source code of this file.

Data Structures

struct  m_hdr
 
struct  pkthdr
 
struct  m_ext
 
struct  mbuf
 
struct  mbstat
 
union  mcluster
 

Macros

#define MLEN   (MSIZE - sizeof(struct m_hdr)) /* normal data len */
 
#define MHLEN   (MLEN - sizeof(struct pkthdr)) /* data len w/pkthdr */
 
#define MINCLSIZE   (MHLEN + MLEN) /* smallest amount to put in cluster */
 
#define M_MAXCOMPRESS   (MHLEN / 2) /* max amount to copy for compression */
 
#define mtod(m, t)   ((t)((m)->m_data))
 
#define dtom(x)   ((struct mbuf *)((intptr_t)(x) & ~(MSIZE-1)))
 
#define mtocl(x)   (((uintptr_t)(x) - (uintptr_t)mbutl) >> MCLSHIFT)
 
#define cltom(x)   ((caddr_t)((u_long)mbutl + ((u_long)(x) << MCLSHIFT)))
 
#define m_next   m_hdr.mh_next
 
#define m_len   m_hdr.mh_len
 
#define m_data   m_hdr.mh_data
 
#define m_type   m_hdr.mh_type
 
#define m_flags   m_hdr.mh_flags
 
#define m_nextpkt   m_hdr.mh_nextpkt
 
#define m_act   m_nextpkt
 
#define m_pkthdr   M_dat.MH.MH_pkthdr
 
#define m_ext   M_dat.MH.MH_dat.MH_ext
 
#define m_pktdat   M_dat.MH.MH_dat.MH_databuf
 
#define m_dat   M_dat.M_databuf
 
#define M_EXT   0x0001 /* has associated external storage */
 
#define M_PKTHDR   0x0002 /* start of record */
 
#define M_EOR   0x0004 /* end of record */
 
#define M_PROTO1   0x0008 /* protocol-specific */
 
#define M_BCAST   0x0100 /* send/received as link-level broadcast */
 
#define M_MCAST   0x0200 /* send/received as link-level multicast */
 
#define M_COPYFLAGS   (M_PKTHDR|M_EOR|M_PROTO1|M_BCAST|M_MCAST)
 
#define MT_FREE   0 /* should be on free list */
 
#define MT_DATA   1 /* dynamic (data) allocation */
 
#define MT_HEADER   2 /* packet header */
 
#define MT_SOCKET   3 /* socket structure */
 
#define MT_PCB   4 /* protocol control block */
 
#define MT_RTABLE   5 /* routing tables */
 
#define MT_HTABLE   6 /* IMP host tables */
 
#define MT_ATABLE   7 /* address resolution tables */
 
#define MT_SONAME   8 /* socket name */
 
#define MT_SOOPTS   10 /* socket options */
 
#define MT_FTABLE   11 /* fragment reassembly header */
 
#define MT_RIGHTS   12 /* access rights */
 
#define MT_IFADDR   13 /* interface address */
 
#define MT_CONTROL   14 /* extra-data protocol message */
 
#define MT_OOBDATA   15 /* expedited data */
 
#define M_DONTWAIT   M_NOWAIT
 
#define M_WAIT   M_WAITOK
 
#define MBUFLOCK(code)
 
#define MGET(m, how, type)
 
#define MGETHDR(m, how, type)
 
#define MCLALLOC(p, how)
 
#define MCLGET(m, how)
 
#define MCLFREE(p)
 
#define MFREE(m, n)
 
#define M_COPY_PKTHDR(to, from)
 
#define M_ALIGN(m, len)
 
#define MH_ALIGN(m, len)
 
#define M_LEADINGSPACE(m)
 
#define M_TRAILINGSPACE(m)
 
#define M_PREPEND(m, plen, how)
 
#define MCHTYPE(m, t)
 
#define M_COPYALL   (uint32_t)1000000000L
 
#define m_copy(m, o, l)   m_copym((m), (o), (l), M_DONTWAIT)
 

Macro Definition Documentation

◆ M_ALIGN

#define M_ALIGN (   m,
  len 
)
Value:
do { \
(m)->m_data += (MLEN - (len)) & ~(sizeof(long) - 1); \
} while (0)

◆ M_COPY_PKTHDR

#define M_COPY_PKTHDR (   to,
  from 
)
Value:
{ \
(to)->m_pkthdr = (from)->m_pkthdr; \
(to)->m_flags = (from)->m_flags & M_COPYFLAGS; \
(to)->m_data = (to)->m_pktdat; \
}

◆ M_LEADINGSPACE

#define M_LEADINGSPACE (   m)
Value:
((m)->m_flags & M_EXT ? /* (m)->m_data - (m)->m_ext.ext_buf */ 0 : \
(m)->m_flags & M_PKTHDR ? (m)->m_data - (m)->m_pktdat : \
(m)->m_data - (m)->m_dat)

◆ M_PREPEND

#define M_PREPEND (   m,
  plen,
  how 
)
Value:
{ \
if (M_LEADINGSPACE(m) >= (plen)) { \
(m)->m_data -= (plen); \
(m)->m_len += (plen); \
} else \
(m) = m_prepend((m), (plen), (how)); \
if ((m) && (m)->m_flags & M_PKTHDR) \
(m)->m_pkthdr.len += (plen); \
}

◆ M_TRAILINGSPACE

#define M_TRAILINGSPACE (   m)
Value:
((m)->m_flags & M_EXT ? (m)->m_ext.ext_buf + (m)->m_ext.ext_size - \
((m)->m_data + (m)->m_len) : \
&(m)->m_dat[MLEN] - ((m)->m_data + (m)->m_len))
Definition: mbuf.h:90

◆ MBUFLOCK

#define MBUFLOCK (   code)
Value:
{ int ms = splimp(); \
{ code } \
splx(ms); \
}
Definition: inftrees.h:25

◆ MCHTYPE

#define MCHTYPE (   m,
 
)
Value:
{ \
MBUFLOCK(mbstat.m_mtypes[(m)->m_type]--; mbstat.m_mtypes[t]++;) \
(m)->m_type = t;\
}
Definition: mbuf.h:169

◆ MCLALLOC

#define MCLALLOC (   p,
  how 
)
Value:
MBUFLOCK( \
if (mclfree == 0) \
(void)m_clalloc(1, (how)); \
if (((p) = (caddr_t)mclfree) != 0) { \
++mclrefcnt[mtocl(p)]; \
mbstat.m_clfree--; \
mclfree = ((union mcluster *)(p))->mcl_next; \
} \
)
Definition: mbuf.h:191

◆ MCLFREE

#define MCLFREE (   p)
Value:
MBUFLOCK ( \
if (--mclrefcnt[mtocl(p)] == 0) { \
((union mcluster *)(p))->mcl_next = mclfree; \
mclfree = (union mcluster *)(p); \
mbstat.m_clfree++; \
} \
)
Definition: mbuf.h:191

◆ MCLGET

#define MCLGET (   m,
  how 
)
Value:
{ MCLALLOC((m)->m_ext.ext_buf, (how)); \
if ((m)->m_ext.ext_buf != NULL) { \
(m)->m_data = (m)->m_ext.ext_buf; \
(m)->m_flags |= M_EXT; \
(m)->m_ext.ext_free = NULL; \
(m)->m_ext.ext_ref = NULL; \
(m)->m_ext.ext_size = MCLBYTES; \
} \
}
Definition: mbuf.h:90

◆ MFREE

#define MFREE (   m,
 
)
Value:
MBUFLOCK( \
mbstat.m_mtypes[(m)->m_type]--; \
if ((m)->m_flags & M_EXT) { \
if ((m)->m_ext.ext_free) \
(*((m)->m_ext.ext_free))((m)->m_ext.ext_buf, \
(m)->m_ext.ext_size); \
else { \
char *p = (m)->m_ext.ext_buf; \
if (--mclrefcnt[mtocl(p)] == 0) { \
((union mcluster *)(p))->mcl_next = mclfree; \
mclfree = (union mcluster *)(p); \
mbstat.m_clfree++; \
} \
} \
} \
(n) = (m)->m_next; \
(m)->m_type = MT_FREE; \
mbstat.m_mtypes[MT_FREE]++; \
(m)->m_next = mmbfree; \
mmbfree = (m); \
)
Definition: mbuf.h:191
Definition: mbuf.h:169
Definition: mbuf.h:90

◆ MGET

#define MGET (   m,
  how,
  type 
)
Value:
{ \
int _ms = splimp(); \
if (mmbfree == 0) \
(void)m_mballoc(1, (how)); \
if (((m) = mmbfree) != 0) { \
mmbfree = (m)->m_next; \
mbstat.m_mtypes[MT_FREE]--; \
(m)->m_type = (type); \
mbstat.m_mtypes[type]++; \
(m)->m_next = (struct mbuf *)NULL; \
(m)->m_nextpkt = (struct mbuf *)NULL; \
(m)->m_data = (m)->m_dat; \
(m)->m_flags = 0; \
splx(_ms); \
} else { \
splx(_ms); \
(m) = m_retry((how), (type)); \
} \
}
Definition: mbuf.h:103

◆ MGETHDR

#define MGETHDR (   m,
  how,
  type 
)
Value:
{ \
int _ms = splimp(); \
if (mmbfree == 0) \
(void)m_mballoc(1, (how)); \
if (((m) = mmbfree) != 0) { \
mmbfree = (m)->m_next; \
mbstat.m_mtypes[MT_FREE]--; \
(m)->m_type = (type); \
mbstat.m_mtypes[type]++; \
(m)->m_next = (struct mbuf *)NULL; \
(m)->m_nextpkt = (struct mbuf *)NULL; \
(m)->m_data = (m)->m_pktdat; \
(m)->m_flags = M_PKTHDR; \
splx(_ms); \
} else { \
splx(_ms); \
(m) = m_retryhdr((how), (type)); \
} \
}
Definition: mbuf.h:103

◆ MH_ALIGN

#define MH_ALIGN (   m,
  len 
)
Value:
do { \
(m)->m_data += (MHLEN - (len)) & ~(sizeof(long) - 1); \
} while (0)