Message ID | 1498193206-18007-4-git-send-email-peterx@redhat.com |
---|---|
State | New |
Headers | show |
On Fri, Jun 23, 2017 at 12:46:39PM +0800, Peter Xu wrote: > It's not that clear on how the global properties are registered to > global_props (and also its priority relationship). Let's provide a > single function to be called in main() for that, with comment to explain > it a bit. > > Signed-off-by: Peter Xu <peterx@redhat.com> > --- > vl.c | 29 ++++++++++++++++++++++++----- > 1 file changed, 24 insertions(+), 5 deletions(-) > > diff --git a/vl.c b/vl.c > index 4452d7a..cdd2ec8 100644 > --- a/vl.c > +++ b/vl.c > @@ -2969,6 +2969,25 @@ static int qemu_read_default_config_file(void) > return 0; > } > > +static void user_register_compat_props(void) > +{ > + qemu_opts_foreach(qemu_find_opts("global"), > + global_init_func, NULL, NULL); I suggest using "compat props" only when referring to global properties registered for internal use (because they help us ensure command-line compatibility). User-provided global properties are just "global properties", not "compat props". > +} > + > +/* > + * Note: we should see that these compat properties are actually > + * having a priority: accel < machine < user. This means e.g. when > + * user specifies something in "-global", it'll always be used with > + * highest priority. > + */ > +static void register_global_properties(MachineState *ms) > +{ > + accel_register_compat_props(ms->accelerator); > + machine_register_compat_props(ms); > + user_register_compat_props(); > +} > + > int main(int argc, char **argv, char **envp) > { > int i; > @@ -4571,11 +4590,11 @@ int main(int argc, char **argv, char **envp) > exit (i == 1 ? 1 : 0); > } > > - accel_register_compat_props(current_machine->accelerator); > - machine_register_compat_props(current_machine); > - > - qemu_opts_foreach(qemu_find_opts("global"), > - global_init_func, NULL, NULL); > + /* > + * Register all the global properties, including accel properties, > + * machine properties, and user-specified ones. > + */ > + register_global_properties(current_machine); > > /* This checkpoint is required by replay to separate prior clock > reading from the other reads, because timer polling functions query > -- > 2.7.4 > >
On Fri, Jun 23, 2017 at 06:35:29PM -0300, Eduardo Habkost wrote: > On Fri, Jun 23, 2017 at 12:46:39PM +0800, Peter Xu wrote: > > It's not that clear on how the global properties are registered to > > global_props (and also its priority relationship). Let's provide a > > single function to be called in main() for that, with comment to explain > > it a bit. > > > > Signed-off-by: Peter Xu <peterx@redhat.com> > > --- > > vl.c | 29 ++++++++++++++++++++++++----- > > 1 file changed, 24 insertions(+), 5 deletions(-) > > > > diff --git a/vl.c b/vl.c > > index 4452d7a..cdd2ec8 100644 > > --- a/vl.c > > +++ b/vl.c > > @@ -2969,6 +2969,25 @@ static int qemu_read_default_config_file(void) > > return 0; > > } > > > > +static void user_register_compat_props(void) > > +{ > > + qemu_opts_foreach(qemu_find_opts("global"), > > + global_init_func, NULL, NULL); > > I suggest using "compat props" only when referring to global properties > registered for internal use (because they help us ensure command-line > compatibility). User-provided global properties are just "global > properties", not "compat props". Agree. Fixing up. Thanks,
diff --git a/vl.c b/vl.c index 4452d7a..cdd2ec8 100644 --- a/vl.c +++ b/vl.c @@ -2969,6 +2969,25 @@ static int qemu_read_default_config_file(void) return 0; } +static void user_register_compat_props(void) +{ + qemu_opts_foreach(qemu_find_opts("global"), + global_init_func, NULL, NULL); +} + +/* + * Note: we should see that these compat properties are actually + * having a priority: accel < machine < user. This means e.g. when + * user specifies something in "-global", it'll always be used with + * highest priority. + */ +static void register_global_properties(MachineState *ms) +{ + accel_register_compat_props(ms->accelerator); + machine_register_compat_props(ms); + user_register_compat_props(); +} + int main(int argc, char **argv, char **envp) { int i; @@ -4571,11 +4590,11 @@ int main(int argc, char **argv, char **envp) exit (i == 1 ? 1 : 0); } - accel_register_compat_props(current_machine->accelerator); - machine_register_compat_props(current_machine); - - qemu_opts_foreach(qemu_find_opts("global"), - global_init_func, NULL, NULL); + /* + * Register all the global properties, including accel properties, + * machine properties, and user-specified ones. + */ + register_global_properties(current_machine); /* This checkpoint is required by replay to separate prior clock reading from the other reads, because timer polling functions query
It's not that clear on how the global properties are registered to global_props (and also its priority relationship). Let's provide a single function to be called in main() for that, with comment to explain it a bit. Signed-off-by: Peter Xu <peterx@redhat.com> --- vl.c | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-)