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>