Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Oct 1996 17:34:01 -0700
From:      David Greenman <dg@root.com>
To:        Mark Tinguely <tinguely@plains.nodak.edu>
Cc:        freebsd-atm@freebsd.org, freebsd-hackers@freebsd.org
Subject:   Re: custom free for external mbuf 
Message-ID:  <199610180034.RAA13429@root.com>
In-Reply-To: Your message of "Thu, 17 Oct 1996 17:23:18 CDT." <199610172223.RAA09577@plains.nodak.edu> 

next in thread | previous in thread | raw e-mail | index | archive | help
>If I add a new flag entry (say M_PERM) and change the MFREE routine (here
>I show changes to the "notyet" part of MFREE, the current MFREE changes
>would be simular):
>
>	 if ((m)->m_flags & M_EXT) { \
>+		if ((m)->m_flags & M_PERM) { \
>+		    if ((m)->m_ext.ext_free) \
>+			(*((m)->m_ext.ext_free))((m), \	
>+			    (m)->m_ext.ext_size); \
>+		} \
>+		else \
>		if ((m)->m_ext.ext_free) \
>			(*((m)->m_ext.ext_free))((m)->m_ext.ext_buf, \
>			    (m)->m_ext.ext_size); \
>		else \
>			MCLFREE((m)->m_ext.ext_buf); \
>	  } \
>	  (n) = (m)->m_next; \
>+	 if ((m)->m_flags & M_PERM == 0) { \
>	  FREE((m), mbtypes[(m)->m_type]); \
>	 } \
>	}

   It seems to me that the above can be optimized:

	if ((m)->m_flags & M_EXT) { \
		if ((m)->m_ext.ext_free) {\
			if ((m)->m_flags & M_PERM) \
				(*((m)->m_ext.ext_free))((m), \	
				    (m)->m_ext.ext_size); \
			else \
				(*((m)->m_ext.ext_free))((m)->m_ext.ext_buf, \
				    (m)->m_ext.ext_size); \
		} else \
			MCLFREE((m)->m_ext.ext_buf); \
	} \

   This would retain the same performance as the original routine in the
standard case of no external free function.

-DG

David Greenman
Core-team/Principal Architect, The FreeBSD Project



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199610180034.RAA13429>