Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Jul 2008 16:18:01 +0300
From:      Kostik Belousov <kostikbel@gmail.com>
To:        Stacey Son <sson@freebsd.org>
Cc:        Andrew Gallatin <gallatin@cs.duke.edu>, freebsd-arch@freebsd.org
Subject:   Re: ksyms pseudo driver
Message-ID:  <20080715131801.GS17123@deviant.kiev.zoral.com.ua>
In-Reply-To: <487CA2B4.7070604@freebsd.org>
References:  <4875A5D2.8030902@freebsd.org> <20080711155232.A96384@grasshopper.cs.duke.edu> <48780661.5050002@freebsd.org> <20080712045837.GD17123@deviant.kiev.zoral.com.ua> <487AD49F.6040304@freebsd.org> <20080715093402.GO17123@deviant.kiev.zoral.com.ua> <487CA2B4.7070604@freebsd.org>

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

--kR01/VAbwQaE53Z3
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Tue, Jul 15, 2008 at 08:14:28AM -0500, Stacey Son wrote:
> Kostik Belousov wrote:
> >>The snapshot of the consolidated symbol table is made when /dev/ksyms is
> >>opened.   The storage for the snapshot is allocated in the memory map of
> >>the calling process.  No kernel address space is used for the snapshot.
> >>    =20
> >Again, why this is done this way ? Why not creating snapshot when the
> >user process issues ioctl that supplies neccessary usermode memory
> >to the driver ?
> >  =20
>=20
> The main reason it is written as a pseudo driver is so it can be used=20
> with standard command-line utilities.   For example, see the ksyms=20
> example in the dtrace manual=20
> (http://wikis.sun.com/display/DTrace/Structs+and+Unions).   I guess it=20
> could still be possible to do in the way you are suggesting but it would=
=20
> require a special 'cat', or something, to allocate the user space buffer=
=20
> and then pass that in driver before it starts reading the symbol table. =
=20
> You could then pipe the output of the "special ksyms cat" to the actual=
=20
> command-line program you wanted to use.    Of course, if you had to use=
=20
> a "special ksyms cat" then there would be no reason to make this a=20
> pseudo driver.   You could simply make it a system call and eliminate a=
=20
> lot of code and calls into the kernel.

Would dd bs=3D<some large value> work as the "special cat" ? procfs'
/proc/pid/map has the similar problem, and there was a procmap program
in ports. I believe dd is enough.

--kR01/VAbwQaE53Z3
Content-Type: application/pgp-signature
Content-Disposition: inline

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

iEYEARECAAYFAkh8o4gACgkQC3+MBN1Mb4gk6wCgudTjZWHagF5Xyr8kkJhDno0l
iKAAoLZCuZpw2ZNArz/qAyNzHZeh6Ryg
=10Cr
-----END PGP SIGNATURE-----

--kR01/VAbwQaE53Z3--



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