mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 04:13:53 -06:00
plugins/loader: compile loader only once
There is very little in loader that is different between builds save for a tiny user/system mode difference in the plugin_info structure. Create two new files, user and system to hold mode specific helpers and move loader into common_ss. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20250304222439.2035603-26-alex.bennee@linaro.org>
This commit is contained in:
parent
5dd09b8157
commit
8c15f6e435
5 changed files with 57 additions and 12 deletions
|
@ -31,9 +31,6 @@
|
||||||
#include "qemu/memalign.h"
|
#include "qemu/memalign.h"
|
||||||
#include "hw/core/cpu.h"
|
#include "hw/core/cpu.h"
|
||||||
#include "exec/tb-flush.h"
|
#include "exec/tb-flush.h"
|
||||||
#ifndef CONFIG_USER_ONLY
|
|
||||||
#include "hw/boards.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "plugin.h"
|
#include "plugin.h"
|
||||||
|
|
||||||
|
@ -300,14 +297,8 @@ int qemu_plugin_load_list(QemuPluginList *head, Error **errp)
|
||||||
info->target_name = target_name();
|
info->target_name = target_name();
|
||||||
info->version.min = QEMU_PLUGIN_MIN_VERSION;
|
info->version.min = QEMU_PLUGIN_MIN_VERSION;
|
||||||
info->version.cur = QEMU_PLUGIN_VERSION;
|
info->version.cur = QEMU_PLUGIN_VERSION;
|
||||||
#ifndef CONFIG_USER_ONLY
|
|
||||||
MachineState *ms = MACHINE(qdev_get_machine());
|
qemu_plugin_fillin_mode_info(info);
|
||||||
info->system_emulation = true;
|
|
||||||
info->system.smp_vcpus = ms->smp.cpus;
|
|
||||||
info->system.max_vcpus = ms->smp.max_cpus;
|
|
||||||
#else
|
|
||||||
info->system_emulation = false;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
QTAILQ_FOREACH_SAFE(desc, head, entry, next) {
|
QTAILQ_FOREACH_SAFE(desc, head, entry, next) {
|
||||||
int err;
|
int err;
|
||||||
|
|
|
@ -57,8 +57,13 @@ if host_os == 'windows'
|
||||||
command: dlltool_cmd
|
command: dlltool_cmd
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
user_ss.add(files('user.c'))
|
||||||
|
system_ss.add(files('system.c'))
|
||||||
|
|
||||||
|
common_ss.add(files('loader.c'))
|
||||||
|
|
||||||
specific_ss.add(files(
|
specific_ss.add(files(
|
||||||
'loader.c',
|
|
||||||
'core.c',
|
'core.c',
|
||||||
'api.c',
|
'api.c',
|
||||||
))
|
))
|
||||||
|
|
|
@ -119,4 +119,10 @@ struct qemu_plugin_scoreboard *plugin_scoreboard_new(size_t element_size);
|
||||||
|
|
||||||
void plugin_scoreboard_free(struct qemu_plugin_scoreboard *score);
|
void plugin_scoreboard_free(struct qemu_plugin_scoreboard *score);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* qemu_plugin_fillin_mode_info() - populate mode specific info
|
||||||
|
* info: pointer to qemu_info_t structure
|
||||||
|
*/
|
||||||
|
void qemu_plugin_fillin_mode_info(qemu_info_t *info);
|
||||||
|
|
||||||
#endif /* PLUGIN_H */
|
#endif /* PLUGIN_H */
|
||||||
|
|
24
plugins/system.c
Normal file
24
plugins/system.c
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
/*
|
||||||
|
* QEMU Plugin system-emulation helpers
|
||||||
|
*
|
||||||
|
* Helpers that are specific to system emulation.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2017, Emilio G. Cota <cota@braap.org>
|
||||||
|
* Copyright (C) 2019-2025, Linaro
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "qemu/osdep.h"
|
||||||
|
#include "qemu/plugin.h"
|
||||||
|
#include "hw/boards.h"
|
||||||
|
|
||||||
|
#include "plugin.h"
|
||||||
|
|
||||||
|
void qemu_plugin_fillin_mode_info(qemu_info_t *info)
|
||||||
|
{
|
||||||
|
MachineState *ms = MACHINE(qdev_get_machine());
|
||||||
|
info->system_emulation = true;
|
||||||
|
info->system.smp_vcpus = ms->smp.cpus;
|
||||||
|
info->system.max_vcpus = ms->smp.max_cpus;
|
||||||
|
}
|
19
plugins/user.c
Normal file
19
plugins/user.c
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
/*
|
||||||
|
* QEMU Plugin user-mode helpers
|
||||||
|
*
|
||||||
|
* Helpers that are specific to user-mode.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2017, Emilio G. Cota <cota@braap.org>
|
||||||
|
* Copyright (C) 2019-2025, Linaro
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "qemu/osdep.h"
|
||||||
|
#include "qemu/plugin.h"
|
||||||
|
#include "plugin.h"
|
||||||
|
|
||||||
|
void qemu_plugin_fillin_mode_info(qemu_info_t *info)
|
||||||
|
{
|
||||||
|
info->system_emulation = false;
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue