From: Enrico Weigelt <weigelt@metux.de>
To: unlisted-recipients:; (no To-header on input)
Cc: linux-kernel@vger.kernel.org
Subject: Re: Dynamic linking in the kernel
Date: Mon, 22 Feb 2010 06:43:27 +0100 [thread overview]
Message-ID: <4B82197F.4050902@metux.de> (raw)
In-Reply-To: <20100220.125758.174837163.davem@davemloft.net>
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@metux.de skype: nekrad666
----------------------------------------------------------------------
Embedded-Linux / Portierung / Opensource-QM / Verteilte Systeme
----------------------------------------------------------------------
next prev parent reply other threads:[~2010-02-22 5:44 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-20 18:22 Dynamic linking in the kernel Enrico Weigelt
2010-02-20 20:57 ` David Miller
2010-02-22 5:43 ` Enrico Weigelt [this message]
2010-02-22 6:21 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B82197F.4050902@metux.de \
--to=weigelt@metux.de \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox