Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Jul 2000 13:48:29 -0400 (EDT)
From:      Bosko Milekic <bmilekic@dsuper.net>
To:        Alfred Perlstein <bright@wintelcom.net>
Cc:        net@FreeBSD.ORG, dg@FreeBSD.ORG, dillon@FreeBSD.ORG
Subject:   Re: mbuf refcnt and sendfile
Message-ID:  <Pine.BSF.4.21.0007151342140.19466-100000@jehovah.technokratis.com>
In-Reply-To: <Pine.BSF.4.21.0007151245300.19250-100000@jehovah.technokratis.com>

next in thread | previous in thread | raw e-mail | index | archive | help


> 	When you increase the reference count, it's not exactly atomic as
>   you may be offsetting into a location, it may produce more than one
>   instruction in which case you may catch an interrupt in between where
>   things will get broken.

	I just thought of something that would essentially change this and
  make your assumption correct for the issue of atomicity. However, I still
  think that it's better to not maintain an external reference counter for
  each ext_buf mainly for the reason of transparency. But I guess what you
  could do, if you really insist on it is, in m_ext:

  	union {
		u_int counter;
		u_int *countr;
	} count;

	The first referrer can use the u_int counter and the rest can point
  their *countr's to this first mbuf's counter. This would avoid the
  external management of a reference counter. It might indeed make these
  operations more optimized. I made the changes already so I'll post them a
  little later today, if you want.
	Personally, though, I preferred to have all of the mbufs referring to
  the same external object easily accessible through any of the isolated
  mbufs.

 --Bosko




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0007151342140.19466-100000>