From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34650) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VLX3M-0004Pe-S0 for qemu-devel@nongnu.org; Mon, 16 Sep 2013 07:33:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VLX3G-0003Ou-Tz for qemu-devel@nongnu.org; Mon, 16 Sep 2013 07:33:16 -0400 Received: from mx1.redhat.com ([209.132.183.28]:41631) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VLX3G-0003Ok-MT for qemu-devel@nongnu.org; Mon, 16 Sep 2013 07:33:10 -0400 Message-ID: <5236EC72.20900@redhat.com> Date: Mon, 16 Sep 2013 13:33:06 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1379314227-8855-1-git-send-email-famz@redhat.com> <1379314227-8855-6-git-send-email-famz@redhat.com> <20130916085902.GA6005@redhat.com> <5236D318.4080206@redhat.com> <20130916095121.GD22783@T430s.nay.redhat.com> <5236D8EB.9060700@redhat.com> <20130916101415.GH6005@redhat.com> <5236DB0E.5040302@redhat.com> <20130916102131.GI6005@redhat.com> <5236DDC7.1010908@redhat.com> <20130916112917.GA21374@T430s.nay.redhat.com> In-Reply-To: <20130916112917.GA21374@T430s.nay.redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v10 5/8] module: implement module loading List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: famz@redhat.com Cc: peter.maydell@linaro.org, mjt@tls.msk.ru, qemu-devel@nongnu.org, alex@alex.org.uk, vilanova@ac.upc.edu, rth@twiddle.net Il 16/09/2013 13:29, Fam Zheng ha scritto: > An idea for single .so file: > - before loads a .so, an empty initializer list is created. > - module_init adds a __attribute__((constructor)) function, which appends > its real initializer to the initializer list. So this function is > automatically called after dlopen(). > - make init_$(date +%s$$$RANDOM) a dummy symbol. > - module_load first checks the presense of the symbol, if yes, call the > functions in the initializer list. Else clean up and unload .so. > > Does this enable multiple calls of module_init()? Yes. Basically you are delaying the constructors; that would work. > OTOH. As for multiple spice modules, is it possible to solve it by having a > spice-common.o and link all spice modules to it, to share code? Looks like there is global state in ui/spice-core.c, so likely no. Paolo