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
[-- Attachment #1 --]
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.
+>
+> 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.
--
Pawel Jakub Dawidek http://www.wheel.pl
pjd@FreeBSD.org http://www.FreeBSD.org
FreeBSD committer Am I Evil? Yes, I Am!
[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (FreeBSD)
iD8DBQFD9bjiForvXbEpPzQRApp4AJ45iEc723j1oMUxZD8W57Td2P4wSgCeI4k4
L2dxAUeAjcRF8HC+AiRRqPQ=
=DOWc
-----END PGP SIGNATURE-----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060217115202.GA1269>
