Message ID | 1328237992-14953-3-git-send-email-afaerber@suse.de |
---|---|
State | New |
Headers | show |
On 02/02/2012 08:59 PM, Andreas Färber wrote: > Link the Object base class and the module infrastructure for class > registration. Call QOM module init. > > Signed-off-by: Andreas Färber<afaerber@suse.de> > Cc: Anthony Liguori<anthony@codemonkey.ws> If we're going to go down this road, then I have a hard requirement. We need to build the common infrastructure only once. Otherwise build times are going to explode and we'll end up with CONFIG_USER_ONLY #defines all over the place. Regards, Anthony Liguori > --- > Makefile.objs | 6 ++++++ > Makefile.user | 1 + > bsd-user/main.c | 2 ++ > configure | 2 ++ > darwin-user/main.c | 3 +++ > linux-user/main.c | 2 ++ > qemu-user.c | 37 +++++++++++++++++++++++++++++++++++++ > 7 files changed, 53 insertions(+), 0 deletions(-) > create mode 100644 qemu-user.c > > diff --git a/Makefile.objs b/Makefile.objs > index ec35320..1155cc0 100644 > --- a/Makefile.objs > +++ b/Makefile.objs > @@ -182,7 +182,11 @@ user-obj-y = > user-obj-y += envlist.o path.o > user-obj-y += tcg-runtime.o host-utils.o > user-obj-y += cutils.o cache-utils.o > +user-obj-y += module.o > +user-obj-y += qemu-user.o > user-obj-y += $(trace-obj-y) > +user-obj-y += $(qobject-obj-y) > +user-obj-y += $(addprefix qom/, $(qom-y)) > > ###################################################################### > # libhw > @@ -421,6 +425,8 @@ qapi-obj-y = $(addprefix qapi/, $(qapi-nested-y)) > common-obj-y += qmp-marshal.o qapi-visit.o qapi-types.o $(qapi-obj-y) > common-obj-y += qmp.o hmp.o > > +user-obj-y += $(qapi-obj-y) > + > ###################################################################### > # guest agent > > diff --git a/Makefile.user b/Makefile.user > index 2b1e4d1..72d01c1 100644 > --- a/Makefile.user > +++ b/Makefile.user > @@ -9,6 +9,7 @@ include $(SRC_PATH)/rules.mak > $(call set-vpath, $(SRC_PATH)) > > QEMU_CFLAGS+=-I.. > +QEMU_CFLAGS+=-I$(SRC_PATH)/include > > include $(SRC_PATH)/Makefile.objs > > diff --git a/bsd-user/main.c b/bsd-user/main.c > index cc7d4a3..cdb0d0a 100644 > --- a/bsd-user/main.c > +++ b/bsd-user/main.c > @@ -748,6 +748,8 @@ int main(int argc, char **argv) > if (argc<= 1) > usage(); > > + module_call_init(MODULE_INIT_QOM); > + > if ((envlist = envlist_create()) == NULL) { > (void) fprintf(stderr, "Unable to allocate envlist\n"); > exit(1); > diff --git a/configure b/configure > index 3b0b300..ee1140e 100755 > --- a/configure > +++ b/configure > @@ -3849,6 +3849,8 @@ fi > d=libuser > mkdir -p $d > mkdir -p $d/trace > +mkdir -p $d/qapi > +mkdir -p $d/qom > symlink $source_path/Makefile.user $d/Makefile > > if test "$docs" = "yes" ; then > diff --git a/darwin-user/main.c b/darwin-user/main.c > index 9b57c20..e1519c7 100644 > --- a/darwin-user/main.c > +++ b/darwin-user/main.c > @@ -28,6 +28,7 @@ > #include<sys/mman.h> > > #include "qemu.h" > +#include "qemu-common.h" > > #define DEBUG_LOGFILE "/tmp/qemu.log" > > @@ -749,6 +750,8 @@ int main(int argc, char **argv) > if (argc<= 1) > usage(); > > + module_call_init(MODULE_INIT_QOM); > + > optind = 1; > for(;;) { > if (optind>= argc) > diff --git a/linux-user/main.c b/linux-user/main.c > index 64d2208..f55109c 100644 > --- a/linux-user/main.c > +++ b/linux-user/main.c > @@ -3278,6 +3278,8 @@ int main(int argc, char **argv, char **envp) > int i; > int ret; > > + module_call_init(MODULE_INIT_QOM); > + > qemu_cache_utils_init(envp); > > if ((envlist = envlist_create()) == NULL) { > diff --git a/qemu-user.c b/qemu-user.c > new file mode 100644 > index 0000000..51b2649 > --- /dev/null > +++ b/qemu-user.c > @@ -0,0 +1,37 @@ > +/* > + * Stubs for QEMU user emulation > + * > + * Copyright (c) 2012 SUSE LINUX Products GmbH > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License > + * as published by the Free Software Foundation; either version 2 > + * of the License, or (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, see > + *<http://www.gnu.org/licenses/old-licenses/gpl-2.0> > + */ > + > +#include "qemu-common.h" > +#include "monitor.h" > + > +Monitor *cur_mon; > + > +int monitor_cur_is_qmp(void) > +{ > + return 0; > +} > + > +void monitor_vprintf(Monitor *mon, const char *fmt, va_list ap) > +{ > +} > + > +void monitor_set_error(Monitor *mon, QError *qerror) > +{ > +}
Am 06.02.2012 20:16, schrieb Anthony Liguori: > On 02/02/2012 08:59 PM, Andreas Färber wrote: >> Link the Object base class and the module infrastructure for class >> registration. Call QOM module init. >> >> Signed-off-by: Andreas Färber<afaerber@suse.de> >> Cc: Anthony Liguori<anthony@codemonkey.ws> > > If we're going to go down this road, then I have a hard requirement. We > need to build the common infrastructure only once. > > Otherwise build times are going to explode and we'll end up with > CONFIG_USER_ONLY #defines all over the place. v3 builds it once as before plus once for the user emulators. If that is really too much already, please advise where to move the objects to. Andreas
On 6 February 2012 19:16, Anthony Liguori <anthony@codemonkey.ws> wrote: > If we're going to go down this road, then I have a hard requirement. We > need to build the common infrastructure only once. > > Otherwise build times are going to explode and we'll end up with > CONFIG_USER_ONLY #defines all over the place. You already have to build twice, because you can't say "build the user emulators with --static and the system emulators without", so one of the standard use cases requires doing two configure-and-build runs anyhow. -- PMM
On 02/07/2012 11:25 AM, Peter Maydell wrote: > On 6 February 2012 19:16, Anthony Liguori<anthony@codemonkey.ws> wrote: >> If we're going to go down this road, then I have a hard requirement. We >> need to build the common infrastructure only once. >> >> Otherwise build times are going to explode and we'll end up with >> CONFIG_USER_ONLY #defines all over the place. > > You already have to build twice, because you can't say "build the > user emulators with --static and the system emulators without", so > one of the standard use cases requires doing two configure-and-build > runs anyhow. So does it make sense to build both user and system emulators by default? QOM has a lot of dependencies. Rebuilding it for user means that we're goign to end up rebuilding a lot of user code which sucks. Regards, Anthony Liguori > > -- PMM >
diff --git a/Makefile.objs b/Makefile.objs index ec35320..1155cc0 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -182,7 +182,11 @@ user-obj-y = user-obj-y += envlist.o path.o user-obj-y += tcg-runtime.o host-utils.o user-obj-y += cutils.o cache-utils.o +user-obj-y += module.o +user-obj-y += qemu-user.o user-obj-y += $(trace-obj-y) +user-obj-y += $(qobject-obj-y) +user-obj-y += $(addprefix qom/, $(qom-y)) ###################################################################### # libhw @@ -421,6 +425,8 @@ qapi-obj-y = $(addprefix qapi/, $(qapi-nested-y)) common-obj-y += qmp-marshal.o qapi-visit.o qapi-types.o $(qapi-obj-y) common-obj-y += qmp.o hmp.o +user-obj-y += $(qapi-obj-y) + ###################################################################### # guest agent diff --git a/Makefile.user b/Makefile.user index 2b1e4d1..72d01c1 100644 --- a/Makefile.user +++ b/Makefile.user @@ -9,6 +9,7 @@ include $(SRC_PATH)/rules.mak $(call set-vpath, $(SRC_PATH)) QEMU_CFLAGS+=-I.. +QEMU_CFLAGS+=-I$(SRC_PATH)/include include $(SRC_PATH)/Makefile.objs diff --git a/bsd-user/main.c b/bsd-user/main.c index cc7d4a3..cdb0d0a 100644 --- a/bsd-user/main.c +++ b/bsd-user/main.c @@ -748,6 +748,8 @@ int main(int argc, char **argv) if (argc <= 1) usage(); + module_call_init(MODULE_INIT_QOM); + if ((envlist = envlist_create()) == NULL) { (void) fprintf(stderr, "Unable to allocate envlist\n"); exit(1); diff --git a/configure b/configure index 3b0b300..ee1140e 100755 --- a/configure +++ b/configure @@ -3849,6 +3849,8 @@ fi d=libuser mkdir -p $d mkdir -p $d/trace +mkdir -p $d/qapi +mkdir -p $d/qom symlink $source_path/Makefile.user $d/Makefile if test "$docs" = "yes" ; then diff --git a/darwin-user/main.c b/darwin-user/main.c index 9b57c20..e1519c7 100644 --- a/darwin-user/main.c +++ b/darwin-user/main.c @@ -28,6 +28,7 @@ #include <sys/mman.h> #include "qemu.h" +#include "qemu-common.h" #define DEBUG_LOGFILE "/tmp/qemu.log" @@ -749,6 +750,8 @@ int main(int argc, char **argv) if (argc <= 1) usage(); + module_call_init(MODULE_INIT_QOM); + optind = 1; for(;;) { if (optind >= argc) diff --git a/linux-user/main.c b/linux-user/main.c index 64d2208..f55109c 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -3278,6 +3278,8 @@ int main(int argc, char **argv, char **envp) int i; int ret; + module_call_init(MODULE_INIT_QOM); + qemu_cache_utils_init(envp); if ((envlist = envlist_create()) == NULL) { diff --git a/qemu-user.c b/qemu-user.c new file mode 100644 index 0000000..51b2649 --- /dev/null +++ b/qemu-user.c @@ -0,0 +1,37 @@ +/* + * Stubs for QEMU user emulation + * + * Copyright (c) 2012 SUSE LINUX Products GmbH + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see + * <http://www.gnu.org/licenses/old-licenses/gpl-2.0> + */ + +#include "qemu-common.h" +#include "monitor.h" + +Monitor *cur_mon; + +int monitor_cur_is_qmp(void) +{ + return 0; +} + +void monitor_vprintf(Monitor *mon, const char *fmt, va_list ap) +{ +} + +void monitor_set_error(Monitor *mon, QError *qerror) +{ +}
Link the Object base class and the module infrastructure for class registration. Call QOM module init. Signed-off-by: Andreas Färber <afaerber@suse.de> Cc: Anthony Liguori <anthony@codemonkey.ws> --- Makefile.objs | 6 ++++++ Makefile.user | 1 + bsd-user/main.c | 2 ++ configure | 2 ++ darwin-user/main.c | 3 +++ linux-user/main.c | 2 ++ qemu-user.c | 37 +++++++++++++++++++++++++++++++++++++ 7 files changed, 53 insertions(+), 0 deletions(-) create mode 100644 qemu-user.c