kern_mbuf.c (4c7070db251a6f2153f9e4783717151b07449ae3) kern_mbuf.c (e8fd18f306915c411b08ab4664ec0aa3bc03d4d4)
1/*-
2 * Copyright (c) 2004, 2005,
3 * Bosko Milekic <bmilekic@FreeBSD.org>. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 490 unchanged lines hidden (view full) ---

499{
500 struct mbuf *m;
501
502#ifdef INVARIANTS
503 trash_ctor(mem, size, arg, how);
504#endif
505 m = (struct mbuf *)arg;
506 if (m != NULL) {
1/*-
2 * Copyright (c) 2004, 2005,
3 * Bosko Milekic <bmilekic@FreeBSD.org>. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 490 unchanged lines hidden (view full) ---

499{
500 struct mbuf *m;
501
502#ifdef INVARIANTS
503 trash_ctor(mem, size, arg, how);
504#endif
505 m = (struct mbuf *)arg;
506 if (m != NULL) {
507 m->m_ext.ext_buf = (caddr_t)mem;
507 m->m_ext.ext_buf = (char *)mem;
508 m->m_data = m->m_ext.ext_buf;
509 m->m_flags |= M_EXT;
510 m->m_ext.ext_free = NULL;
511 m->m_ext.ext_arg1 = NULL;
512 m->m_ext.ext_arg2 = NULL;
513 m->m_ext.ext_size = size;
514 m->m_ext.ext_type = m_gettype(size);
515 m->m_ext.ext_flags = EXT_FLAG_EMBREF;

--- 167 unchanged lines hidden (view full) ---

683 m->m_ext.ext_arg2);
684 uma_zfree(zone_mbuf, mref);
685 break;
686 case EXT_NET_DRV:
687 case EXT_MOD_TYPE:
688 case EXT_DISPOSABLE:
689 KASSERT(m->m_ext.ext_free != NULL,
690 ("%s: ext_free not set", __func__));
508 m->m_data = m->m_ext.ext_buf;
509 m->m_flags |= M_EXT;
510 m->m_ext.ext_free = NULL;
511 m->m_ext.ext_arg1 = NULL;
512 m->m_ext.ext_arg2 = NULL;
513 m->m_ext.ext_size = size;
514 m->m_ext.ext_type = m_gettype(size);
515 m->m_ext.ext_flags = EXT_FLAG_EMBREF;

--- 167 unchanged lines hidden (view full) ---

683 m->m_ext.ext_arg2);
684 uma_zfree(zone_mbuf, mref);
685 break;
686 case EXT_NET_DRV:
687 case EXT_MOD_TYPE:
688 case EXT_DISPOSABLE:
689 KASSERT(m->m_ext.ext_free != NULL,
690 ("%s: ext_free not set", __func__));
691 (*(m->m_ext.ext_free))(m, m->m_ext.ext_arg1,
692 m->m_ext.ext_arg2);
691 m->m_ext.ext_free(m);
693 uma_zfree(zone_mbuf, mref);
694 break;
695 case EXT_EXTREF:
696 KASSERT(m->m_ext.ext_free != NULL,
697 ("%s: ext_free not set", __func__));
692 uma_zfree(zone_mbuf, mref);
693 break;
694 case EXT_EXTREF:
695 KASSERT(m->m_ext.ext_free != NULL,
696 ("%s: ext_free not set", __func__));
698 (*(m->m_ext.ext_free))(m, m->m_ext.ext_arg1,
699 m->m_ext.ext_arg2);
697 m->m_ext.ext_free(m);
700 break;
701 default:
702 KASSERT(m->m_ext.ext_type == 0,
703 ("%s: unknown ext_type", __func__));
704 }
705 }
706
707 if (freembuf && m != mref)

--- 205 unchanged lines hidden (view full) ---

913 * flags Any other flags to be passed to the provided mbuf.
914 * type The type that the external storage buffer should be
915 * labeled with.
916 *
917 * Returns:
918 * Nothing.
919 */
920void
698 break;
699 default:
700 KASSERT(m->m_ext.ext_type == 0,
701 ("%s: unknown ext_type", __func__));
702 }
703 }
704
705 if (freembuf && m != mref)

--- 205 unchanged lines hidden (view full) ---

911 * flags Any other flags to be passed to the provided mbuf.
912 * type The type that the external storage buffer should be
913 * labeled with.
914 *
915 * Returns:
916 * Nothing.
917 */
918void
921m_extadd(struct mbuf *mb, caddr_t buf, u_int size,
922 void (*freef)(struct mbuf *, void *, void *), void *arg1, void *arg2,
923 int flags, int type)
919m_extadd(struct mbuf *mb, char *buf, u_int size, m_ext_free_t freef,
920 void *arg1, void *arg2, int flags, int type)
924{
925
926 KASSERT(type != EXT_CLUSTER, ("%s: EXT_CLUSTER not allowed", __func__));
927
928 mb->m_flags |= (M_EXT | flags);
929 mb->m_ext.ext_buf = buf;
930 mb->m_data = mb->m_ext.ext_buf;
931 mb->m_ext.ext_size = size;

--- 24 unchanged lines hidden ---
921{
922
923 KASSERT(type != EXT_CLUSTER, ("%s: EXT_CLUSTER not allowed", __func__));
924
925 mb->m_flags |= (M_EXT | flags);
926 mb->m_ext.ext_buf = buf;
927 mb->m_data = mb->m_ext.ext_buf;
928 mb->m_ext.ext_size = size;

--- 24 unchanged lines hidden ---