From: Fam Zheng <famz@redhat.com>
To: Alex Bligh <alex@alex.org.uk>
Cc: peter.maydell@linaro.org, mjt@tls.msk.ru, qemu-devel@nongnu.org,
Paolo Bonzini <pbonzini@redhat.com>,
vilanova@ac.upc.edu, rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH v10 5/8] module: implement module loading
Date: Mon, 16 Sep 2013 18:43:37 +0800 [thread overview]
Message-ID: <20130916104337.GA19157@T430s.nay.redhat.com> (raw)
In-Reply-To: <3AD10BC4-9EDC-4FDA-BC0D-D1380C5904C2@alex.org.uk>
On Mon, 09/16 11:24, Alex Bligh wrote:
>
> On 16 Sep 2013, at 10:51, Fam Zheng wrote:
>
> > On Mon, 09/16 11:44, Paolo Bonzini wrote:
> >> Il 16/09/2013 10:59, Daniel P. Berrange ha scritto:
> >>>> The init function of dynamic module is no longer with
> >>>> __attribute__((constructor)) as static linked version, and need to be
> >>>> explicitly called once loaded. The function name is mangled with per
> >>>> configure fingerprint as:
> >>>>
> >>>> init_$(date +%s$$$RANDOM)
> >>
> >> Does this work for a module that calls module_init multiple times?
> >>
> > Why should a module calls module_init, instead of the main function?
> >
> > This name is generated per "./configure", not per object or per make, so it's
> > essentially the same with any fixed function name, except for two objects built
> > from two different "./configure" (which is the purpose for the mangling here).
>
> I think I must be missing something here.
>
> We do not have a stable API/ABI and it seems generally acknowledged at this
> stage that we don't need one. Therefore, to avoid API/ABI mismatch between
> the executables and the modules, in ./configure you are generating a random
> cookie (effectively) that you are calling the fingerprint.
>
> The executable will then not load the module unless the module has the
> right cookie. As far as I can tell, that means the module needs to be
> built within the same build harness as the executables, or it won't
> know what to call its init function.
>
> And that's perfectly compatible with the stated objective:
> > The main idea behind modules is to isolate dependencies on third party
> > libraries from qemu executables, such as libglusterfs or librbd, so that the
> > end users can install core qemu package with fewer dependencies. And only for
> > those who want to use particular modules, need they install qemu-foo
> > sub-package, which in turn requires libbar and libbiz packages.
>
> ... this being to isolate dependencies, and not to enable third party
> modules built outside the tree.
>
> That's all well and good, but if the modules are all built within the
> same build harness, why do we need a whitelist or a readdir() at all? We
> know what the modules are, because they were the ones that were built
> at the same time. Why not just process the list of modules it was
> built with, and if you get EEXIST, move on?
>
Sounds good to me, I agree that "whitelist" is not necessary for user. We still
need a known_modules in the new module_load() code and it'll look very similar
to current whitelist. But I'll change the name.
Fam
next prev parent reply other threads:[~2013-09-16 10:44 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-16 6:50 [Qemu-devel] [PATCH v10 0/8] Shared Library Module Support Fam Zheng
2013-09-16 6:50 ` [Qemu-devel] [PATCH v10 1/8] ui/Makefile.objs: delete unnecessary cocoa.o dependency Fam Zheng
2013-09-16 6:50 ` [Qemu-devel] [PATCH v10 2/8] make.rule: fix $(obj) to a real relative path Fam Zheng
2013-09-16 6:50 ` [Qemu-devel] [PATCH v10 3/8] rule.mak: allow per object cflags and libs Fam Zheng
2013-09-16 6:50 ` [Qemu-devel] [PATCH v10 4/8] build-sys: introduce common-obj-m and block-obj-m for DSO Fam Zheng
2013-09-16 6:50 ` [Qemu-devel] [PATCH v10 5/8] module: implement module loading Fam Zheng
2013-09-16 8:59 ` Daniel P. Berrange
2013-09-16 9:28 ` Fam Zheng
2013-09-16 22:16 ` Richard Henderson
2013-09-17 0:47 ` Fam Zheng
2013-09-16 9:44 ` Paolo Bonzini
2013-09-16 9:51 ` Fam Zheng
2013-09-16 10:09 ` Paolo Bonzini
2013-09-16 10:14 ` Daniel P. Berrange
2013-09-16 10:18 ` Paolo Bonzini
2013-09-16 10:21 ` Daniel P. Berrange
2013-09-16 10:30 ` Paolo Bonzini
2013-09-16 11:29 ` Fam Zheng
2013-09-16 11:33 ` Paolo Bonzini
2013-09-16 11:46 ` Fam Zheng
2013-09-16 22:31 ` Richard Henderson
2013-09-17 1:29 ` Fam Zheng
2013-09-17 5:40 ` Richard Henderson
2013-09-18 11:45 ` Paolo Bonzini
2013-09-18 14:44 ` Richard Henderson
2013-09-18 15:00 ` Paolo Bonzini
2013-09-17 8:50 ` Wenchao Xia
2013-09-16 10:57 ` Gerd Hoffmann
2013-09-16 11:00 ` Paolo Bonzini
2013-09-16 22:38 ` Richard Henderson
2013-09-16 10:24 ` Alex Bligh
2013-09-16 10:38 ` Paolo Bonzini
2013-09-16 11:00 ` Alex Bligh
2013-09-16 11:04 ` Daniel P. Berrange
2013-09-16 11:27 ` Alex Bligh
2013-09-16 11:08 ` Paolo Bonzini
2013-09-16 11:30 ` Alex Bligh
2013-09-17 8:26 ` Wenchao Xia
2013-09-16 10:43 ` Fam Zheng [this message]
2013-09-16 11:05 ` Daniel P. Berrange
2013-09-16 12:36 ` Gerd Hoffmann
2013-09-17 5:55 ` Fam Zheng
2013-09-17 6:33 ` Alex Bligh
2013-09-17 6:40 ` Fam Zheng
2013-09-16 6:50 ` [Qemu-devel] [PATCH v10 6/8] Makefile: install modules with "make install" Fam Zheng
2013-09-16 6:50 ` [Qemu-devel] [PATCH v10 7/8] .gitignore: ignore module related files (dll, so, mo) Fam Zheng
2013-09-16 6:50 ` [Qemu-devel] [PATCH v10 8/8] block: convert block drivers linked with libs to modules Fam Zheng
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=20130916104337.GA19157@T430s.nay.redhat.com \
--to=famz@redhat.com \
--cc=alex@alex.org.uk \
--cc=mjt@tls.msk.ru \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=vilanova@ac.upc.edu \
/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;
as well as URLs for NNTP newsgroup(s).