* whenever a new piece of memory mapped in from the VM crosses the 1MB
* boundary.
*/
-#define MBSHIFT 20 /* 1MB */
#define NSLABSPMB ((1 << MBSHIFT) >> MCLSHIFT) /* 512 slabs/grp */
typedef struct mcl_slabg {
VERIFY(slabstbl != NULL);
/* Allocate audit structures if needed */
- PE_parse_boot_arg("mbuf_debug", &mbuf_debug);
+ PE_parse_boot_argn("mbuf_debug", &mbuf_debug, sizeof (mbuf_debug));
mbuf_debug |= mcache_getflags();
if (mbuf_debug & MCF_AUDIT) {
MALLOC(mclaudit, mcl_audit_t *,
embutl = (union mcluster *)
((unsigned char *)mbutl + (nmbclusters * MCLBYTES));
- PE_parse_boot_arg("initmcl", &initmcl);
+ PE_parse_boot_argn("initmcl", &initmcl, sizeof (initmcl));
lck_mtx_lock(mbuf_mlock);
#endif /* MAC_NET */
to->m_pkthdr = from->m_pkthdr; /* especially tags */
m_tag_init(from); /* purge tags from src */
- to->m_flags = from->m_flags & M_COPYFLAGS;
- to->m_data = (to)->m_pktdat;
+ to->m_flags = (from->m_flags & M_COPYFLAGS) | (to->m_flags & M_EXT);
+ if ((to->m_flags & M_EXT) == 0)
+ to->m_data = to->m_pktdat;
}
/*