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

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

--CE+1k2dSO48ffgeK
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

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.

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.

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.

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.

--=20
Peter Jeremy

--CE+1k2dSO48ffgeK
Content-Type: application/pgp-signature
Content-Disposition: inline

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

iD8DBQFD7Dwc/opHv/APuIcRAkMAAJ4wSmDg3nCrOQmL40GAdQrOXbEjmgCgjWK+
K+3Iyo1z72KqorZ0lqG9tKs=
=JWx3
-----END PGP SIGNATURE-----

--CE+1k2dSO48ffgeK--



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