From owner-freebsd-net Tue Dec 12 1:44:34 2000 From owner-freebsd-net@FreeBSD.ORG Tue Dec 12 01:44:32 2000 Return-Path: Delivered-To: freebsd-net@freebsd.org Received: from fw.wintelcom.net (ns1.wintelcom.net [209.1.153.20]) by hub.freebsd.org (Postfix) with ESMTP id 52D8E37B400; Tue, 12 Dec 2000 01:44:32 -0800 (PST) Received: (from bright@localhost) by fw.wintelcom.net (8.10.0/8.10.0) id eBC9iUq03639; Tue, 12 Dec 2000 01:44:30 -0800 (PST) Date: Tue, 12 Dec 2000 01:44:30 -0800 From: Alfred Perlstein To: Bosko Milekic Cc: net@FreeBSD.ORG, jhb@FreeBSD.ORG, jasone@FreeBSD.ORG Subject: MEXT_IS_REF broken. Message-ID: <20001212014429.Y16205@fw.wintelcom.net> References: <20001211014837.W16205@fw.wintelcom.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i In-Reply-To: ; from bmilekic@technokratis.com on Mon, Dec 11, 2000 at 12:44:55PM -0500 Sender: bright@fw.wintelcom.net Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org grr... considering this: #define MEXT_IS_REF(m) ((m)->m_ext.ref_cnt->refcnt > 1) #define MEXT_REM_REF(m) do { \ KASSERT((m)->m_ext.ref_cnt->refcnt > 0, ("m_ext refcnt < 0")); \ atomic_subtract_long(&((m)->m_ext.ref_cnt->refcnt), 1); \ } while(0) this: #define MEXTFREE(m) do { \ struct mbuf *_mmm = (m); \ \ if (MEXT_IS_REF(_mmm)) \ MEXT_REM_REF(_mmm); \ is not mpsafe. we _NEED_ some type that allows atomic dec and test for 0. thanks, -Alfred To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message