Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Feb 2006 12:52:02 +0100
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        Peter Jeremy <peterjeremy@optushome.com.au>
Cc:        freebsd-current@freebsd.org, Steve Kargl <sgk@troutmask.apl.washington.edu>
Subject:   Re: memguard monitoring of more than 1 memory_type?
Message-ID:  <20060217115202.GA1269@garage.freebsd.pl>
In-Reply-To: <20060210070918.GA685@turion.vk2pj.dyndns.org>
References:  <20060207183152.GA50629@troutmask.apl.washington.edu> <20060207190121.GF19674@comp.chem.msu.su> <20060207191408.GA50909@troutmask.apl.washington.edu> <20060209215513.GA3590@garage.freebsd.pl> <20060210070918.GA685@turion.vk2pj.dyndns.org>

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

--sdtB3X0nJg68CQEu
Content-Type: text/plain; charset=iso-8859-2
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, Feb 10, 2006 at 06:09:19PM +1100, Peter Jeremy wrote:
+> On Thu, 2006-Feb-09 22:55:14 +0100, Pawel Jakub Dawidek wrote:
+> >On Tue, Feb 07, 2006 at 11:14:08AM -0800, Steve Kargl wrote:
+> >+> Thanks for pointing out the obvious.   I've read that manpage several
+> >+> times and somehow missed the word "particular".   It's unfortunate
+> >+> that it can't monitor more than one type of memory allocation because
+> >+> the new pts code has either uncovered a latent bug in devfs or the
+> >+> pts patch is stomping on memory.
+> >
+> >It shouldn't be hard to implement. You need to change function
+> >memguard_cmp() in sys/vm/memguard.c, which decides which memory type
+> >should be monitored.

I'm sorry for the late response...

+> It's quite a bit messier than this.  memguard.c privately stores a
+> record of which memory type is being debugged in vm_memguard_mtype
+> and vm_memguard_desc and doesn't bother passing this information via
+> the alloc/free hooks.

No, no. vm_memguard_desc is only used for fast comparsion, but it is
turned off by default. Anyway, it is only used to decide if specific
allocation should be done on memguard's map.

+> The current kern_malloc code looks like:
+> #ifdef DEBUG_MEMGUARD
+>         if (memguard_cmp(mtp))
+>                 return memguard_alloc(size, flags);
+> #endif
+> If you are going to support multiple memory types, you need to pass
+> mtp to memguard_{alloc,free}() - in which case, you might as well
+> combine memguard_cmp() into these functions.
+>=20
+> The easiest way to support multiple memory types is to hang the
+> memguard information off the struct malloc_type - except that means
+> that DEBUG_MEMGUARD changes the kernel ABI.

The only thing that has to be done is to modify memguard_cmp() to
operate on list of memory type short description, IMHO.

--=20
Pawel Jakub Dawidek                       http://www.wheel.pl
pjd@FreeBSD.org                           http://www.FreeBSD.org
FreeBSD committer                         Am I Evil? Yes, I Am!

--sdtB3X0nJg68CQEu
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (FreeBSD)

iD8DBQFD9bjiForvXbEpPzQRApp4AJ45iEc723j1oMUxZD8W57Td2P4wSgCeI4k4
L2dxAUeAjcRF8HC+AiRRqPQ=
=DOWc
-----END PGP SIGNATURE-----

--sdtB3X0nJg68CQEu--



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