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 "hw/core/cpu.h"
|
||||
#include "exec/tb-flush.h"
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
#include "hw/boards.h"
|
||||
#endif
|
||||
|
||||
#include "plugin.h"
|
||||
|
||||
|
@ -300,14 +297,8 @@ int qemu_plugin_load_list(QemuPluginList *head, Error **errp)
|
|||
info->target_name = target_name();
|
||||
info->version.min = QEMU_PLUGIN_MIN_VERSION;
|
||||
info->version.cur = QEMU_PLUGIN_VERSION;
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
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;
|
||||
#else
|
||||
info->system_emulation = false;
|
||||
#endif
|
||||
|
||||
qemu_plugin_fillin_mode_info(info);
|
||||
|
||||
QTAILQ_FOREACH_SAFE(desc, head, entry, next) {
|
||||
int err;
|
||||
|
|
|
@ -57,8 +57,13 @@ if host_os == 'windows'
|
|||
command: dlltool_cmd
|
||||
)
|
||||
endif
|
||||
|
||||
user_ss.add(files('user.c'))
|
||||
system_ss.add(files('system.c'))
|
||||
|
||||
common_ss.add(files('loader.c'))
|
||||
|
||||
specific_ss.add(files(
|
||||
'loader.c',
|
||||
'core.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);
|
||||
|
||||
/**
|
||||
* 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 */
|
||||
|
|
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