Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

KPI, mbuf, strange mbuf and mbuf_len strange definition



Could there be a problem with the declaration of mbuf_len?

size_t mbuf_len(mbuf_t mbuf);

size_t is said to be a __darwin_size_t

__darwin_size_t is said to be __SIZE_TYPE__

__SIZE_TYPE__ is said to be long unsigned int (from what I've found with google).

My problem is that the m_hdr struct is stating (in the xnu source code):

struct m_hdr {
	struct	mbuf *mh_next;		/* next buffer in chain */
	struct	mbuf *mh_nextpkt;	/* next chain in queue/record */
	long	mh_len;			/* amount of data in this mbuf */

so mh_len is signed if I'm not mistaken.

This is a bit "funny" when you're trying to deal with this kind of weird mbuf chain :

p *((struct mbuf *) 0x3d1fd100)
$3 = {
  m_hdr = {
    mh_next = 0x3d221700,
    mh_nextpkt = 0x0,
    mh_len = 0,
    mh_data = 0x3d1fd13b "@\002\001?\b>\006l!E",
    mh_type = 0,
    mh_flags = 0
  },
  ....

p *((struct mbuf *) 0x3d221700)
$5 = {
  m_hdr = {
    mh_next = 0x3d221600,
    mh_nextpkt = 0xfffffff7,
    mh_len = -1,
    mh_data = 0xffffffff <Address 0xffffffff out of bounds>,
    mh_type = 0,
    mh_flags = -1
  },

and you're testing if (mbuf_len( ) < 0) ...

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-kernel mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/darwin-kernel/email@hidden

This email sent to email@hidden


Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.