[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v10 5/8] module: implement module loading
From: |
Fam Zheng |
Subject: |
Re: [Qemu-devel] [PATCH v10 5/8] module: implement module loading |
Date: |
Mon, 16 Sep 2013 18:43:37 +0800 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
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
- Re: [Qemu-devel] [PATCH v10 5/8] module: implement module loading, (continued)
- Re: [Qemu-devel] [PATCH v10 5/8] module: implement module loading, Alex Bligh, 2013/09/16
- Re: [Qemu-devel] [PATCH v10 5/8] module: implement module loading, Paolo Bonzini, 2013/09/16
- Re: [Qemu-devel] [PATCH v10 5/8] module: implement module loading, Alex Bligh, 2013/09/16
- Re: [Qemu-devel] [PATCH v10 5/8] module: implement module loading, Daniel P. Berrange, 2013/09/16
- Re: [Qemu-devel] [PATCH v10 5/8] module: implement module loading, Alex Bligh, 2013/09/16
- Re: [Qemu-devel] [PATCH v10 5/8] module: implement module loading, Paolo Bonzini, 2013/09/16
- Re: [Qemu-devel] [PATCH v10 5/8] module: implement module loading, Alex Bligh, 2013/09/16
- Re: [Qemu-devel] [PATCH v10 5/8] module: implement module loading, Wenchao Xia, 2013/09/17
- Re: [Qemu-devel] [PATCH v10 5/8] module: implement module loading,
Fam Zheng <=
Re: [Qemu-devel] [PATCH v10 5/8] module: implement module loading, Daniel P. Berrange, 2013/09/16
[Qemu-devel] [PATCH v10 6/8] Makefile: install modules with "make install", Fam Zheng, 2013/09/16
[Qemu-devel] [PATCH v10 7/8] .gitignore: ignore module related files (dll, so, mo), Fam Zheng, 2013/09/16
[Qemu-devel] [PATCH v10 8/8] block: convert block drivers linked with libs to modules, Fam Zheng, 2013/09/16