[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4B82197F.4050902@metux.de>
Date: Mon, 22 Feb 2010 06:43:27 +0100
From: Enrico Weigelt <weigelt@...ux.de>
To: unlisted-recipients:; (no To-header on input)
CC: linux-kernel@...r.kernel.org
Subject: Re: Dynamic linking in the kernel
David Miller wrote:
> In order to implement this the kernel would have to also save a copy
> of all pieces of the processes's environment and compare all of the
> environment variable settings on every execution. This would be
> needed to handle things like LD_PRELOAD, LD_LIBRARY_PATH, and LD_DEBUG
> as just three examples.
Fairly simple:
* parsed per-module data is cached by its inode id
* cached data that can be influenced by LD_PRELOAD/LD_LIBRARY_PATH
(eg. mapping of library names to actual filenames or inode-id's)
is cached on hash of these variables plus inode-id
> What's more, any filesystem change involved in the shared libraries,
> the executable, or the dynamic linker would have to be monitored as
> well.
What could go wrong ?
a) overwring an currently mapped-in library. this also applies to
the traditional approach as well. write-locking (w/o locking
against removal, of course ;-)) might help.
b) filesystems could get remounted while modules are already cached:
that (IMHO) changes the inode-id's as well, so not affecting the
inode-id based cache lookups
c) permissions could get changed: either use the inode data we can on
the file lookups (we most likely wont get rid of) or use inotify.
> Really, this is not a good idea, and the cost is only ~3 system calls
> per shared library and considering the amount of flexibility we get in
> return it's not that bad at all.
It's worth much more than that:
a) able to cache much data that now have to be parsed/computed on
each single exec (eg. dependencies, symbol tables, etc)
b) sharing pages even when mmap() is not available
cu
--
----------------------------------------------------------------------
Enrico Weigelt, metux IT service -- http://www.metux.de/
cellphone: +49 174 7066481 email: info@...ux.de skype: nekrad666
----------------------------------------------------------------------
Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme
----------------------------------------------------------------------
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists